You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS CDK中配置IAM角色允许自身扮演(Assume Role)

解决AWS CDK中自动生成IAM角色添加自身信任主体的问题

你之前用role.grantAssumeRole()的方式无效,因为这个方法是给指定主体添加权限策略,允许它调用sts:AssumeRole,但不会修改当前角色的信任策略——而信任策略才是定义谁能扮演该角色的核心配置。

要让自动生成的角色能自身扮演自己,直接在创建角色时的CompositePrincipal中加入自身ARN即可,CDK会自动处理自动生成角色的ARN解析(无需手动拼接):

const role = new iam.Role(scope, name, {
  assumedBy: new iam.CompositePrincipal(
    new iam.ServicePrincipal('codebuild.amazonaws.com'),
    new iam.ServicePrincipal('codepipeline.amazonaws.com'),
    new iam.ArnPrincipal(role.roleArn) // 添加自身ARN作为可信主体
  ),
});

部署后,角色的信任策略会自动包含自身ARN的条目,结构如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "codebuild.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "codepipeline.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::你的账号ID:role/自动生成的角色名"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

这样就能满足CodeBuild内部用该角色自身扮演的需求了。

内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:50:18