使用 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.
文档似乎说这是可能的,但我遇到了同样的问题。
如果您的帐户中已经创建了您想在您的 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
)
我正在尝试向包含帐户 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.
文档似乎说这是可能的,但我遇到了同样的问题。
如果您的帐户中已经创建了您想在您的 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
)