【问题标题】:Test AWS lambda function via cli通过 cli 测试 AWS lambda 函数
【发布时间】:2017-08-01 13:21:58
【问题描述】:

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

我已阅读文档: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: [B@7ac4c2fa; line: 1, column: 3]

我相信我提供了错误格式的有效负载,但文档没有示例,它只是说数据类型是“blob”。我做了一些搜索,但只找到了关于 BLOB(二进制大对象)的信息,但我很确定这不是文档所指的内容。

我尝试不使用外部双引号并将所有单引号替换为双引号,但所有这些都给出了相同的错误。

【问题讨论】:

    标签: bash amazon-web-services lambda invoke aws-cli


    【解决方案1】:

    tl;博士

    正确(通常):$ aws lambda invoke --function-name myFunction --payload '{"key1":"value1"}' outputfile.txt

    正确(Windows):aws lambda invoke --function-name myFunction --payload "{""key1"": ""value1""}" outputfile.txt


    OP 的具体问题已经正确回答;这个答案是为了那些最终在这里与OP略有不同的情况的人的利益。 您使用的是什么操作系统?如果是 Windows,那么您可能会因单引号和双引号问题而烦恼。

    Windows 命令行不理解单引号和双引号 带引号的字符串中的引号必须转义为两个双引号 ("")。

    信用(正常):AWS documentation

    信用(Windows):Hail Reddit!

    【讨论】:

    • 这是 Windows 用户的正确答案,我已经尝试过文档示例,但这有效!
    【解决方案2】:

    有效的JSon 应该在双引号之间有键和值

    所以你应该将payload 属性写成

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 2017-11-12
      相关资源
      最近更新 更多