如何通过 API 网关将 JSON 文件传递给 AWS Lambda?
How to pass a JSON file to a AWS Lambda through an API Gateway?
我在 AWS 上有一个处理 JSON 文件的 lambda 运行。我想通过在 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 对象的“正文”属性。
是否可以将文件直接传递给 lambda?
如果您在 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 网关。
我在 AWS 上有一个处理 JSON 文件的 lambda 运行。我想通过在 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 对象的“正文”属性。
是否可以将文件直接传递给 lambda?
如果您在 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 网关。