Estou usando o AWS EC2 SSM para fazer uma implantação automatizada do pipeline de compilação do Jenkins. Um documento SSM para executar um script de shell é fornecido no documento SSM. O pipeline jenkins forma o seguinte comando:
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
Mensagem de erro:
Error parsing parameter '--targets': Expected: '=', received: ''' for input:
'{"Key":"tag:Name","Values":["LDAPHost_env-sandbox"]}'
Configuração:
SO: Ubuntu 16.04.2 LTS
AWS CLI: 1.11.122
Python: 2.7.12
Linux: 4.4.0-1044-aws
botocore: 1.5.85
Isso parece um problema de cotação com jenkins. Quando executo seu comando diretamente no terminal, não recebo esse erro:
$ 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:
Para depurar esse problema, execute o comando com --debug
e você verá a string exata que a CLI está recebendo:
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']
Suspeito que o que você verá é que as aspas simples estão sendo passadas para a CLI, enquanto normalmente quando você executa o comando interativamente, o shell remove as aspas simples antes de passá-las para o python.
Se você ainda estiver vendo o problema, poste seus logs de depuração com a linha "Argumentos inseridos na CLI" e darei outra olhada.
Obrigado. Isso resolveu o problema.
Mesmo problema, isso está desatualizado -
Comentários muito úteis
Isso parece um problema de cotação com jenkins. Quando executo seu comando diretamente no terminal, não recebo esse erro:
Para depurar esse problema, execute o comando com
--debug
e você verá a string exata que a CLI está recebendo:Suspeito que o que você verá é que as aspas simples estão sendo passadas para a CLI, enquanto normalmente quando você executa o comando interativamente, o shell remove as aspas simples antes de passá-las para o python.
Se você ainda estiver vendo o problema, poste seus logs de depuração com a linha "Argumentos inseridos na CLI" e darei outra olhada.