Amazon web services 如何集成API网关以使用参数调用Lambda函数?

Amazon web services 如何集成API网关以使用参数调用Lambda函数?,amazon-web-services,aws-lambda,aws-api-gateway,api-gateway,Amazon Web Services,Aws Lambda,Aws Api Gateway,Api Gateway,我有一个react应用程序可以将文件上传到S3。当用户按下按钮从文件中提取文本时,应用程序将调用GET to API网关并将文件名作为参数发送。这将触发lambda函数从S3上的文件中提取文本。但是我一直在使用需要调用Lambda函数的API 我遵循AWS的本教程: 这就是我测试API调用时得到的响应: Received response. Status: 403, Integration latency: 3 ms Sun Oct 25 13:29:26 UTC 2020 : Endpoin

我有一个react应用程序可以将文件上传到S3。当用户按下按钮从文件中提取文本时,应用程序将调用GET to API网关并将文件名作为参数发送。这将触发lambda函数从S3上的文件中提取文本。但是我一直在使用需要调用Lambda函数的API

我遵循AWS的本教程:

这就是我测试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
收到响应。状态:403,集成延迟:3毫秒
Sun Oct 25 13:29:26 UTC 2020:端点响应标题:{Date=Sun,25 Oct 2020 13:29:26 GMT,内容长度=130,连接=keep-alive,x-amzn-RequestId=d8eab391-05a7-44f2-9721-ce67939a9514}
太阳10月25日13:29:26 UTC 2020:转换前的端点响应主体:



因此,我的问题是,如何解决这个问题,以便我的API可以调用我的Lambda函数并将文本返回到应用程序?
AWS服务
集成类型是将API网关嵌入任何AWS服务。尽管lambda是AWS的一项功能,但是有一种集成类型专门用于集成lambda。我认为在这种情况下,lambda集成类型是合适的

您还可以在GET请求中传递文件名(例如作为查询字符串参数)


如果要使用AWS服务集成类型,请确保为api网关添加调用lambda的权限。您需要在Lambda IAM角色的信任策略中添加此权限。

AWS服务
集成类型是将api网关嵌入任何AWS服务。尽管lambda是AWS的一项功能,但是有一种集成类型专门用于集成lambda。我认为在这种情况下,lambda集成类型是合适的

您还可以在GET请求中传递文件名(例如作为查询字符串参数)


如果要使用AWS服务集成类型,请确保为api网关添加调用lambda的权限。您需要在Lambda IAM角色的信任策略中添加此权限。

什么是
myLambdaRole
?Lambda函数的执行角色。它具有完整的lambda和cloudwatch访问权限,并且允许调用lambda函数,lambda函数的执行角色是
myLambdaRole
。它具有完整的lambda和cloudwatch访问权限,并且允许调用lambda函数。您使用
AWS服务
integration type over
lambda
integration typeHi有什么原因吗?是的,使用它而不是lambda integration的原因是AWS在教程中这样做了,所以我假设它是正确的“更正确“您是否查看了lambda的cloudwatch日志,请求是否达到了令人惊讶的程度。我把它改成了Lambda集成,它可以工作了。谢谢你,阿伦!!你必须去帮助AWS写更好的教程!xDI无法提升您的答案,因为我的声誉,但我确实尝试了提升xDI您使用
AWS服务
integration type而不是
Lambda
integration type有什么原因吗?Hi,是的,使用它而不是Lambda integration的原因是AWS在教程中做了这件事,所以我假设它是正确的“更正确”您是否查看了lambda的cloudwatch日志,请求是否达到了令人惊讶的程度。我将其更改为lambda集成,并且它可以工作。谢谢Arun!!您必须帮助AWS编写更好的教程!xD我无法提高您的答案,因为我的声誉,但我确实尝试了提高xD