使用 CDK 创建跨账户 IAM Lambda 角色

Creating a cross account IAM Lambda role using CDK

在我的场景中,我有 2 个账户(11111111、22222222)需要在第 3 个账户中调用 lambda:33333333。第 3 个账户中的 lambda 将从前 2 个中的 lambda 中调用。

第三个帐户中的 lambda 是即时创建的,但我需要给它们一个我希望使用 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 帐户?

AccountPrincipal 将生成如下主体:arn:aws:iam::123456789012:root。这足以让整个帐户。

至于 CDK - 你就快完成了:

assumedBy: new iam.CompositePrincipal(
    new iam.AccountPrincipal('111111111'),
    new iam.AccountPrincipal('22222222')
),