将 API 部署到 Amazon API 网关
Deploy API to Amazon API Gateway
在 Amazon API 网关 中,我创建了一个简单的 API,其中包含一个名为 demo 的资源和一个POST方法对应:
现在,我希望我的端点接受 POST 请求 any Content-Type,所以不一定是application/json,也是plain/text。然后我想获取请求的 body 并将其包装在 JSON 对象中并将其发送到 Amazon Lambda 函数(Lambda 函数只能接受JSON 对象作为参数)。
为此,我编辑了 Integration Request 对应于我的方法以使用自定义模板映射:
我使用了亚马逊文档中的参考,可以在这里找到:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
我的 Lambda 函数 如下所示:
exports.handler = function(event, context) {
context.succeed(event);
};
测试时,无论我发送什么,我都能得到预期的输出:
然而,当我部署时,转换不再起作用,它期望 JSON
- 发送任何东西都会产生这个:
- 发送 JSON 产生这个:
这个过程有没有执行错误的地方?部署时我错过了什么吗?对我来说,这看起来像是一个非常烦人的亚马逊错误,有人可以确认吗?
您是否尝试过在 curl 请求中设置接受和 Content-Type headers?下面我假设您正在发送 "text/plain" 并且可以在响应中接受 json
-H "Content-Type: text/plain" -H "Accept: application/json"
使用内容类型"application/json"。
在 Amazon API 网关 中,我创建了一个简单的 API,其中包含一个名为 demo 的资源和一个POST方法对应:
现在,我希望我的端点接受 POST 请求 any Content-Type,所以不一定是application/json,也是plain/text。然后我想获取请求的 body 并将其包装在 JSON 对象中并将其发送到 Amazon Lambda 函数(Lambda 函数只能接受JSON 对象作为参数)。
为此,我编辑了 Integration Request 对应于我的方法以使用自定义模板映射:
我使用了亚马逊文档中的参考,可以在这里找到:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
我的 Lambda 函数 如下所示:
exports.handler = function(event, context) {
context.succeed(event);
};
测试时,无论我发送什么,我都能得到预期的输出:
然而,当我部署时,转换不再起作用,它期望 JSON
- 发送任何东西都会产生这个:
- 发送 JSON 产生这个:
这个过程有没有执行错误的地方?部署时我错过了什么吗?对我来说,这看起来像是一个非常烦人的亚马逊错误,有人可以确认吗?
您是否尝试过在 curl 请求中设置接受和 Content-Type headers?下面我假设您正在发送 "text/plain" 并且可以在响应中接受 json
-H "Content-Type: text/plain" -H "Accept: application/json"
使用内容类型"application/json"。