2017-08-01 7 views
1

Je souhaite tester une fonction lambda via CLI au lieu de la console de gestion AWS. (Vous cherchez à automatiser les tests de fonction en faisant un script bash)Test de la fonction AWS lambda via cli

J'ai lu la documentation: http://docs.aws.amazon.com/cli/latest/reference/lambda/invoke.html

Je suis en train d'appeler la fonction lambda avec une charge utile de l'événement JSON. Mon bashcode ressemble à ceci:

#!/bin/bash 

name="arn:aws:lambda:euwest1:100000000000:function:foo" 
invoketype="Event" 
payload="{'account':'100261334439', 'region':'eu-west-1', 'detail-type':'Scheduled Event', 'source':'aws.events', 'time':'2017-07-16T03:00:00Z', 'id':'178710aa-6871-11e7-b6ef-e9b95183cfc9', 'resources':['arn:aws:events:eu-west-1:100000000000:rule/run_everyday']}" 

aws lambda invoke --function-name "$name" --invocation-type "$invoketype" --payload "$payload" testresult.log 

Je reçois l'erreur:

An error occurred (InvalidRequestContentException) when calling the Invoke operation: Could not parse request body into json: Unexpected character ('a' 
(code 97)): was expecting double-quote to start field name at [Source: [[email protected]; line: 1, column: 3] 

Je crois que je suis fournir la charge utile au mauvais format, mais la documentation n'a pas encore d'exemple, il dit simplement que le type de données est 'blob'. J'ai fait des recherches mais j'ai trouvé des informations sur BLOB (objet binaire), mais je suis à peu près sûr que ce n'est pas ce à quoi la documentation fait référence.

J'ai essayé sans les guillemets doubles et en remplaçant toutes les guillemets simples par des guillemets doubles, mais tous ceux-ci donnent la même erreur.

Répondre

1

valide JSon devrait avoir la clé et de la valeur entre guillemets doubles

donc vous devriez avoir l'attribut payload écrit

payload='{"account":"100261334439", "region":"eu-west-1", "detail-type":"Scheduled Event", "source":"aws.events", "time":"2017-07-16T03:00:00Z", "id":"178710aa-6871-11e7-b6ef-e9b95183cfc9", "resources":["arn:aws:events:eu-west-1:100000000000:rule/run_everyday"]}'