在 Cloudformation 模板中为 AWS API Gateway 使用 IAM 角色
Posted
技术标签:
【中文标题】在 Cloudformation 模板中为 AWS API Gateway 使用 IAM 角色【英文标题】:Using IAM Role for AWS API Gateway in Cloudformation Template 【发布时间】:2017-07-26 04:09:17 【问题描述】:我一直在尝试使用 IAM 角色,同时使用 cloudformation 模板在 API Gateway 中创建 API,以便 API Gateway 可以调用 Lambda 函数,该函数被设置为特定 GET / POST 调用的端点。
我在搜索时遇到了这个:- How can I grant permission to API Gateway to invoke lambda functions through CloudFormation?
如果要调用一个 lambda 函数,这将很有帮助。但是,如果使用 JSON / Swagger 定义部署 API,并且有多个 lambda 函数作为端点,那么所有这些都需要添加到云形成模板中。
是否有任何其他模板资源可用于将 IAM 角色与 API 网关相关联,而不是使用 AWS::Lambda::Permission ?
【问题讨论】:
【参考方案1】:我建议使用 AWS::Lambda::Permission 将每个 Lambda 函数单独添加到您的 CloudFormation 模板中。这可以为您提供最佳的运行时性能,并且还可以显式管理您的权限。
如果您反对这样做,那么另一种方法是让 API Gateway 通过角色调用您的 Lambda 函数。手动或通过 CloudFormation 在您的账户中创建角色。授予此角色权限以单独或使用星号 (*) 整体调用您的 Lambda 函数。在定义 API Gateway 集成时指定此角色。 API Gateway 将在调用您的 Lambda 函数之前代入此角色。
请注意,这确实会在运行时增加一些延迟,因为 API Gateway 必须在每次调用您的 Lambda 函数之前执行额外的假设角色调用。
【讨论】:
您能否提供一个示例,说明使用 CloudFormation 将 IAM 角色指定为 API 网关集成的一部分? 我没有方便的示例,但文档在这里:docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/… 请参阅属性下的凭据部分。以上是关于在 Cloudformation 模板中为 AWS API Gateway 使用 IAM 角色的主要内容,如果未能解决你的问题,请参考以下文章
在 CloudFormation 模板中为 Aurora 数据库集群定义 AutoScaling
如何在 Cloudformation 模板/CDK 中添加 AWS IoT 配置模板
AWS > CloudFormation 模板 - 您可以在上传之前对其进行测试吗?
AWS Inspector 的 AWS CloudFormation 模板能否添加 SNS 主题