【发布时间】:2020-11-11 15:16:00
【问题描述】:
在我的场景中,我有 2 个帐户(11111111、22222222)需要在第三个帐户中调用 lambda:33333333。第三个帐户中的 lambdas 将从前 2 个帐户中的 lambdas 调用。
第三个帐户中的 lambdas 是即时创建的,但我需要给他们一个我希望使用 CDK 创建的角色(我将使用第三个帐户凭据来完成 - 这里没有跨帐户的东西)。
我正在遵循here 的说明 - 使用 STS 调用 lambda 似乎很简单。我不太清楚的是如何在 cdk 中定义第三个帐户角色。
这是我的堆栈:
export class ModuleIAMStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props)
const lambdaModuleRole = new Role(this, 'moduleRole', {
roleName: 'moduleRole',
assumedBy: new AccountPrincipal({ accountId: '111111111' }),
managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole')] // My lambdas in 3X... will not need to access any resources so this should be enough to execute
})
}
}
我不清楚assumedBy 行。 AccountPrincipal 是正确的条目吗?如果是,我该如何输入 22222222 帐户?
【问题讨论】:
-
“我不完全清楚的是如何在 cdk 中定义第三个帐户角色” - 您是否希望通过在其中一个帐户中执行 cdk 代码来在第三个帐户中创建一个角色?如果是这样,我怀疑这是可能的,除非在您的第三个帐户中,您已经授予其他帐户访问所有必要资源的权限。我们在多个帐户之间执行 x-account 操作,但我们已经在各种帐户中定义了角色,并且允许这些角色由执行 x-account 操作的帐户承担。快速浏览了一下链接,好像和我们一样。
-
不,我将使用 cdk 和第三个帐户凭据在第三个帐户中创建角色。那里没问题。更多关于如何在第三个账户中定义角色,我将在账户 1/2 中使用其 ARN 来调用第三个账户 lambdas。主要是我不清楚
assumedBy是否正确 - 我如何将它用于 2 个帐户?总的来说,我对 IAM 的这一部分有点模糊。 -
我从未使用过 cdk,但从文档看来
AccountPrincipal用于单个帐户,而对于 CF/sam 模板(我们使用),相应的属性需要一个帐号数组将此应用于(请参阅docs.aws.amazon.com/IAM/latest/UserGuide/…)。也许是 cdk 的限制? -
或者,查看前段时间记录的这个错误(似乎现在已修复),它显示了具有多个帐户 ID 的类的用法:github.com/aws/aws-cdk/issues/924
-
对于任何来到这里并试图关注问题中链接的博客文章的人,这里有一篇与该文章非常相似但使用 CDK 的博客文章:faun.pub/…
标签: amazon-web-services aws-cdk