【问题标题】:How to pass a JSON file to a AWS Lambda through an API Gateway?如何通过 API 网关将 JSON 文件传递​​给 AWS Lambda?
【发布时间】:2021-03-16 15:00:51
【问题描述】:

我有一个在 AWS 上运行的 lambda,它处理一个 JSON 文件。我想通过在 API 网关上配置的 REST 接口使用curl 从命令行传递该 JSON 文件,例如

curl -X POST -H "x-api-key: MyAPIKey" -H "Content-Type: application/json" -d @myFile.json https://my-api.us-east-1.amazonaws.com/default/MyLambda

我创建了一个 API 网关,并将其添加为 lambda 的触发器,但是当请求方法被触发时,JSON 文件的内容已添加到 JSON 对象的“body”属性中。

是否可以将文件直接传递给 lambda?

【问题讨论】:

    标签: aws-lambda aws-api-gateway


    【解决方案1】:

    如果您在 event.body 中收到请求,则表明您正在使用 Lambda 代理集成。

    您正在寻找的是非代理集成或自定义集成。有关如何设置 here 的更多详细信息。取消选中此选项。然后您必须配置请求和响应映射模板。

    如果 json 如下所示 -

    {
      "attr1": "v1",
      "attr2": "v2"
    }
    

    那么您的 application/json 映射模板将如下所示 -

    #set($inputRoot = $input.path('$'))
    {
      "attr1": "$inputRoot.attr1",
      "attr2": "$inputRoot.attr2",
    }
    

    然后在 Lambda 函数中,可以直接访问属性如 event.attr1、event.attr2 等。

    然后就可以使用同样的 cURL 命令调用 API 网关了。

    【讨论】:

      猜你喜欢
      • 2021-10-23
      • 1970-01-01
      • 2021-05-27
      • 2020-10-15
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2020-07-14
      • 2019-08-08
      相关资源
      最近更新 更多