我正在使用 AWS EC2 SSM 从 Jenkins 构建管道进行自动部署。 SSM 文档中提供了用于运行 shell 脚本的 SSM 文档。 jenkins 管道形成以下命令:
aws ssm send-command --document-name "Testdeployment" --targets '{"Key":"tag:Name","Values":["LDAPHost_env-sandbox"]}' --max-concurrency "1" --max-errors "1" --parameters '{"bucketName":["s3://testBucket"],"workingDirectory":["/tmp/"],"releaseName":["sandbox-v1"]}' --timeout-seconds 3600 --output-s3-bucket-name "testBucket" --output-s3-key-prefix "sandbox-v1/test/ssm/log" --region eu-west-1
错误信息:
Error parsing parameter '--targets': Expected: '=', received: ''' for input:
'{"Key":"tag:Name","Values":["LDAPHost_env-sandbox"]}'
配置:
操作系统:Ubuntu 16.04.2 LTS
AWS CLI:1.11.122
蟒蛇:2.7.12
Linux:4.4.0-1044-aws
博托核心:1.5.85
这看起来像是詹金斯的引用问题。 当我直接在终端中运行您的命令时,我没有收到该错误:
$ aws ssm send-command --document-name "Testdeployment" --targets '{"Key":"tag:Name","Values":["LDAPHost_env-sandbox"]}' --max-concurrency "1" --max-errors "1" --parameters '{"bucketName":["s3://testBucket"],"workingDirectory":["/tmp/"],"releaseName":["sandbox-v1"]}' --timeout-seconds 3600 --output-s3-bucket-name "testBucket" --output-s3-key-prefix "sandbox-v1/test/ssm/log" --region eu-west-1
An error occurred (InvalidDocument) when calling the SendCommand operation:
要调试此问题,请使用--debug
运行命令,您将看到 CLI 接收到的确切字符串:
2018-01-04 13:27:37,186 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-cli/1.14.18 Python/2.7.14 Darwin/16.7.0 botocore/1.8.22
2018-01-04 13:27:37,186 - MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI: ['ssm', 'send-command', '--document-name', 'Testdeployment', '--targets', '{"Key":"tag:Name","Values":["LDAPHost_env-sandbox"]}', '--max-concurrency', '1', '--max-errors', '1', '--parameters', '{"bucketName":["s3://testBucket"],"workingDirectory":["/tmp/"],"releaseName":["sandbox-v1"]}', '--timeout-seconds', '3600', '--output-s3-bucket-name', 'testBucket', '--output-s3-key-prefix', 'sandbox-v1/test/ssm/log', '--region', 'eu-west-1', '--debug']
我怀疑你会看到单引号被传递给 CLI,而通常当你以交互方式运行命令时,你的 shell 会在将单引号传递给 python 之前去掉它。
如果您仍然看到此问题,请将调试日志与“已输入到 CLI 的参数”行一起发布,我会再看一下。
谢谢。 这解决了这个问题。
同样的问题,这已经过时了-
最有用的评论
这看起来像是詹金斯的引用问题。 当我直接在终端中运行您的命令时,我没有收到该错误:
要调试此问题,请使用
--debug
运行命令,您将看到 CLI 接收到的确切字符串:我怀疑你会看到单引号被传递给 CLI,而通常当你以交互方式运行命令时,你的 shell 会在将单引号传递给 python 之前去掉它。
如果您仍然看到此问题,请将调试日志与“已输入到 CLI 的参数”行一起发布,我会再看一下。