使用 cdk 添加托管策略 aws

Adding managed policy aws with cdk

我正在尝试向包含帐户 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 创建角色,并在创建角色的同一位置添加策略。

以下是 documentation 的相关摘录:

Although you can use an imported resource anywhere, you cannot modify the imported resource. For example, calling addToResourcePolicy (Python: add_to_resource_policy) on an imported s3.Bucket does nothing.

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

Using existing roles

如果您的帐户中已经创建了您想在您的 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
)