Amazon web services 使用CDK创建跨帐户IAM Lambda角色

Amazon web services 使用CDK创建跨帐户IAM Lambda角色,amazon-web-services,aws-cdk,Amazon Web Services,Aws Cdk,在我的场景中,我有两个帐户(1111111122222),需要在第三个帐户中+调用lambda:33333333。第3个帐户中的lambdas将在前2个帐户中从lambdas调用 第三个帐户中的lambda是动态创建的,但我需要给他们一个我希望使用CDK创建的角色(我将使用第三个帐户凭据进行创建-这里没有跨帐户内容) 我按照说明进行操作——使用STS调用lambda似乎很简单。我不完全清楚的是如何定义cdk中的第三个帐户角色 这是我的堆栈: export class ModuleIAMStac

在我的场景中,我有两个帐户(1111111122222),需要在第三个帐户中+调用lambda:33333333。第3个帐户中的lambdas将在前2个帐户中从lambdas调用

第三个帐户中的lambda是动态创建的,但我需要给他们一个我希望使用CDK创建的角色(我将使用第三个帐户凭据进行创建-这里没有跨帐户内容)


我按照说明进行操作——使用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
    })
  }
}


我不清楚行假定的
AccountPrincipal
是正确的条目吗?如果是这样,我如何输入2222帐户?

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

至于CDK,你几乎做到了:

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

“我不太清楚的是如何在cdk中定义第三个帐户角色”-您是否希望通过在其他帐户中执行cdk代码在第三个帐户中创建角色?如果是这样,我怀疑这是可能的,除非在您的第三个帐户中,您已经授予您的其他帐户访问所有必要资源的权限。我们在多个帐户之间执行x帐户操作,但是我们已经在各个帐户中定义了角色,并且允许执行x帐户操作的帐户承担这些角色。快速查看链接,它似乎与我们一样。不,我将使用cdk和第三帐户凭据在第三帐户中创建角色。没问题。更多内容是关于如何定义第三个帐户中的角色,我将在帐户1/2中使用该角色的ARN来调用第三个帐户lambdas。主要是我不清楚由
假设的
是否正确-如何将其用于2个帐户?总的来说,我对IAM的这一部分有点模糊。我从未使用过cdk,但从文档来看,
AccountPrincipal
似乎是针对单个帐户的,而对于CF/sam模板(我们使用的),相应的属性需要一组帐号来应用它(请参阅)。也许这是cdk的一个局限性?或者,看看前一段时间记录的这个bug(似乎现在已经修复),它显示了该类使用多个帐户ID的情况:如果我想使用一个用户和AccountPrincipal,该如何解决?@Judi你可能应该问一个新问题,而不是添加注释。