我正在尝试将托管策略添加到包含帐户 ID 的角色:
const role = iam.Role.fromRoleArn(
this,
'Role',
`arn:aws:iam::${cdk.Stack.of(this).account}:role/example-role`,
);
role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonDynamoDBFullAccess'));
role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonKinesisFullAccess'));
在 aws 控制台上,我看不到添加到角色中的策略。
fyi 我的
aws-cli
已使用正确的帐户登录。
不幸的是,CDK 无法修改外部资源。因此,更改将会通过,但不会产生任何效果。
正确的方法是使用 CDK 创建角色,并将策略添加到创建角色的同一位置。
以下是文档的相关摘录:
尽管您可以在任何需要使用 AWS CDK 应用程序中定义的类似资源的地方使用外部资源,但您无法修改它。例如,在外部 s3.Bucket 上调用 addToResourcePolicy(Python:add_to_resource_policy)不会执行任何操作。
文档似乎说这是可能的,但我遇到了同样的问题。
如果您的帐户中已经创建了您想要在 CDK 应用程序中使用的角色,您可以使用 Role.fromRoleArn 导入它们,如下所示:
role = iam.Role.from_role_arn(self, "Role", "arn:aws:iam::123456789012:role/MyExistingRole",
# Set 'mutable' to 'false' to use the role as-is and prevent adding new
# policies to it. The default is 'true', which means the role may be
# modified as part of the deployment.
mutable=False
)