Aws-cli: Fehler beim Analysieren des Parameters '--targets': Erwartet: '=', empfangen: ''' für die Eingabe: '{"Key":"tag:Name","Values":["LDAPHost_env-sandbox"]}'

Erstellt am 4. Jan. 2018  ·  3Kommentare  ·  Quelle: aws/aws-cli

Ich verwende AWS EC2 SSM für eine automatisierte Bereitstellung aus der Jenkins-Build-Pipeline. Ein SSM-Dokument zum Ausführen eines Shell-Skripts wird im SSM-Dokument bereitgestellt. Die Jenkins-Pipeline bildet den folgenden Befehl:

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

Fehlermeldung:

Error parsing parameter '--targets': Expected: '=', received: ''' for input:
'{"Key":"tag:Name","Values":["LDAPHost_env-sandbox"]}'

Aufbau:
Betriebssystem: Ubuntu 16.04.2 LTS
AWS-CLI: 1.11.122
Python: 2.7.12
Linux: 4.4.0-1044-aws
Botocore:1.5.85

closing-soon

Hilfreichster Kommentar

Das sieht nach einem Zitierproblem mit Jenkins aus. Wenn ich Ihren Befehl direkt im Terminal ausführe, erhalte ich diesen Fehler nicht:

$ 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:

Um dieses Problem zu debuggen, führen Sie den Befehl mit --debug aus und Sie sehen die genaue Zeichenfolge, die die CLI empfängt:

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']

Ich vermute, was Sie sehen werden, ist, dass das einfache Anführungszeichen an die CLI weitergegeben wird, während normalerweise, wenn Sie den Befehl interaktiv ausführen, Ihre Shell die einfachen Anführungszeichen entfernt, bevor sie an Python übergeben wird.

Wenn Sie das Problem immer noch sehen, posten Sie bitte Ihre Debug-Protokolle mit der Zeile „In CLI eingegebene Argumente“ und ich werde es mir noch einmal ansehen.

Alle 3 Kommentare

Das sieht nach einem Zitierproblem mit Jenkins aus. Wenn ich Ihren Befehl direkt im Terminal ausführe, erhalte ich diesen Fehler nicht:

$ 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:

Um dieses Problem zu debuggen, führen Sie den Befehl mit --debug aus und Sie sehen die genaue Zeichenfolge, die die CLI empfängt:

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']

Ich vermute, was Sie sehen werden, ist, dass das einfache Anführungszeichen an die CLI weitergegeben wird, während normalerweise, wenn Sie den Befehl interaktiv ausführen, Ihre Shell die einfachen Anführungszeichen entfernt, bevor sie an Python übergeben wird.

Wenn Sie das Problem immer noch sehen, posten Sie bitte Ihre Debug-Protokolle mit der Zeile „In CLI eingegebene Argumente“ und ich werde es mir noch einmal ansehen.

Danke. Das hat das Problem gelöst.

Gleiches Problem, das ist veraltet -

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen