使用 cdk 添加托管策略 aws

问题描述 投票:0回答:2

我正在尝试将托管策略添加到包含帐户 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
已使用正确的帐户登录。

amazon-web-services amazon-iam aws-cdk
2个回答
4
投票

不幸的是,CDK 无法修改外部资源。因此,更改将会通过,但不会产生任何效果。

正确的方法是使用 CDK 创建角色,并将策略添加到创建角色的同一位置。

以下是文档的相关摘录:

尽管您可以在任何需要使用 AWS CDK 应用程序中定义的类似资源的地方使用外部资源,但您无法修改它。例如,在外部 s3.Bucket 上调用 addToResourcePolicy(Python:add_to_resource_policy)不会执行任何操作。


1
投票

文档似乎说这是可能的,但我遇到了同样的问题。

使用现有角色

如果您的帐户中已经创建了您想要在 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
)
© www.soinside.com 2019 - 2024. All rights reserved.