如何解决如何集成API Gateway以使用参数调用Lambda函数?
我有一个React应用,可以将文件上传到S3。当用户按下按钮以从文件中提取文本时,应用程序将调用GET到API Gateway并将文件名作为参数发送。这将触发lambda函数从S3上的文件中提取文本。但是我坚持需要调用Lambda函数的API。
我从AWS上遵循了本教程:https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-lambda.html#api-as-lambda-proxy-expose-get-method-with-query-strings-to-call-lambda-function
这是我测试API调用时得到的响应:
Received response. Status: 403,Integration latency: 3 ms
Sun Oct 25 13:29:26 UTC 2020 : Endpoint response headers: {Date=Sun,25 Oct 2020 13:29:26 GMT,Content-Length=130,Connection=keep-alive,x-amzn-RequestId=d8eab391-05a7-44f2-9721-ce67939a9514}
Sun Oct 25 13:29:26 UTC 2020 : Endpoint response body before transformations: <AccessDeniedException>
<Message>Unable to determine service/operation name to be authorized</Message>
</AccessDeniedException>
Sun Oct 25 13:29:26 UTC 2020 : Method response body after transformations: <AccessDeniedException>
<Message>Unable to determine service/operation name to be authorized</Message>
</AccessDeniedException>
Sun Oct 25 13:29:26 UTC 2020 : Method response headers: {X-Amzn-Trace-Id=Root=1-5f957db6-4e36be9def67f8157b8467c5,Content-Type=application/json}
Sun Oct 25 13:29:26 UTC 2020 : Successfully completed execution
Sun Oct 25 13:29:26 UTC 2020 : Method completed with status: 200
我读到的关于此错误的每一篇帖子都说,问题是我的HTTP方法必须是POST,但它是吗?在我的设置屏幕截图中:
Screenshot of my API integration request
所以我的问题是,如何解决这个问题,以便我的API可以调用Lambda函数并将文本返回给应用程序?
解决方法
AWS Service
集成类型是将api网关与任何AWS服务一起使用。即使lambda是AWS的功能,也存在Lambda
集成类型,专门用于集成lambda。我认为在这种情况下,lambda集成类型是合适的。
您也可以在GET请求中传递文件名(例如,作为查询字符串参数)。
如果您想使用AWS Service
集成类型,请确保为api网关添加调用lambda的权限。您需要在Lambda IAM角色的信任策略中添加此权限。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。