Я использую AWS EC2 SSM для автоматического развертывания из конвейера сборки Jenkins. Документ SSM для запуска сценария оболочки предоставляется в документе 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: 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, тогда как обычно, когда вы запускаете команду в интерактивном режиме, ваша оболочка удаляет одинарные кавычки перед передачей их в python.
Если вы все еще видите проблему, опубликуйте свои журналы отладки со строкой «Аргументы, введенные в CLI», и я посмотрю еще раз.
Спасибо. Это решило проблему.
Та же проблема, это устарело -
Самый полезный комментарий
Это похоже на проблему цитирования с Дженкинсом. Когда я запускаю вашу команду прямо в терминале, я не получаю эту ошибку:
Чтобы отладить эту проблему, запустите команду с
--debug
, и вы увидите точную строку, которую получает CLI:Я подозреваю, что вы увидите, что одинарная кавычка передается в CLI, тогда как обычно, когда вы запускаете команду в интерактивном режиме, ваша оболочка удаляет одинарные кавычки перед передачей их в python.
Если вы все еще видите проблему, опубликуйте свои журналы отладки со строкой «Аргументы, введенные в CLI», и я посмотрю еще раз.