【发布时间】:2021-10-12 20:41:08
【问题描述】:
SAM 的所有示例大多使用默认状态下的 Serverless::functions 事件。默认情况下,Lambda 的 API 集成配置为“Lambda 代理”。
我需要在“映射”中具有以下设置的集成类型“Lambda(非代理)”
如何使用 SAM 模板实现这一点?
【问题讨论】:
SAM 的所有示例大多使用默认状态下的 Serverless::functions 事件。默认情况下,Lambda 的 API 集成配置为“Lambda 代理”。
我需要在“映射”中具有以下设置的集成类型“Lambda(非代理)”
如何使用 SAM 模板实现这一点?
【问题讨论】:
如果您想要对您的 API 进行更多控制(例如,绕过 AWS SAM 做出的某些默认值/假设),您应该明确定义您的 AWS::Serverless::Api 并使用 OpenAPI 规范传递 API 的定义(或者使用DefinitionUri 或 DefinitionBody 属性)。在规范中,您可以更好地控制 API 应如何与 lambda 函数集成。设置type attribute on the x-amazon-apigateway-integration object 将允许您使用aws 集成而不是aws_proxy 集成。
您仍应在 lambda 函数中配置 Events 部分或手动修复必要的权限,以确保您的 API Gateway 有权调用 lambda。
【讨论】: