使用 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')
),
在我的场景中,我有 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')
),