问题描述
我有 2 个系统(A 和 B),每个系统都有一个 CloudFormation 堆栈。系统 B 通过系统 A 调用的 API 网关公开 REST API。我希望每个系统的 CloudFormation 堆栈相互独立,以便它们可以按任何顺序部署。
我对堆栈 A 中的 lambda 调用在堆栈 B 中公开的 API 的 IAM 权限有问题。要创建策略,我需要知道来自系统 B 的 API 网关的 ID。调用 API 时我没有类似的问题因为我使用众所周知的自定义域名。
如果 IAM 角色可以分配给组(就像用户可以分配的那样),我只需要先部署另一个“共享”堆栈。它将定义一个 IAM 组。系统 A 的 CF 堆栈会将 lambdas 角色附加到该组,而系统 B 会将策略附加到该组。但这是不可能的。
有没有人有类似情况的经验,可以分享一些建议吗?
解决方法
您可以在 IAM 策略中包含以下语句,但这将授予您的 lambda 函数更广泛的访问权限。
{
"Version": "2012-10-17","Statement": [
{
"Effect": "Allow","Action": [
"apigateway:*"
],"Resource": [
"arn:aws:apigateway:*::/*"
]
}
]
}