2017-08-01 180 views
1

我想通过CLI测试lambda函数而不是AWS管理控制台。 (希望通过做一个bash脚本自动化功能测试)通过cli测试AWS lambda函数

我读过的文档:http://docs.aws.amazon.com/cli/latest/reference/lambda/invoke.html

我试图调用一个JSON事件负载lambda函数。我bashcode看起来是这样的:

#!/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 

我收到错误:

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] 

我相信我提供的格式错误的有效载荷,但该文件没有例子,它只是说,数据类型是'blob'。我做了一些搜索,但只发现BLOB(二进制大对象)的信息,但我很肯定这不是文档所指的。

我试过没有外双引号,并用双引号替换所有单引号,但所有这些给出了相同的错误。

回答

1

有效JSon应该有双引号

之间的键和值,所以你应该有​​属性写成

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