Aws-cli: 解析参数'--targets'时出错:预期:'=',收到:''' 输入:'{"Key":"tag:Name","Values":["LDAPHost_env-sandbox"]}'

创建于 2018-01-04  ·  3评论  ·  资料来源: aws/aws-cli

我正在使用 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

closing-soon

最有用的评论

这看起来像是詹金斯的引用问题。 当我直接在终端中运行您的命令时,我没有收到该错误:

$ 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 的参数”行一起发布,我会再看一下。

所有3条评论

这看起来像是詹金斯的引用问题。 当我直接在终端中运行您的命令时,我没有收到该错误:

$ 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 的参数”行一起发布,我会再看一下。

谢谢。 这解决了这个问题。

同样的问题,已经过时了-

此页面是否有帮助?
0 / 5 - 0 等级