gpt4 book ai didi

amazon-web-services - AWS CDK - 角色和策略创建

转载 作者:行者123 更新时间:2023-12-03 15:21:12 24 4
gpt4 key购买 nike

如何将此 CloudFormation 转换为 CDK(JavaScript 或 Java)?我正在尝试这样做,但这是我第一次使用 CDK,我不知道该怎么做。

FargateTaskExecutionServiceRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Statement:
- Effect: Allow
Principal:
Service:
- ecs-tasks.amazonaws.com
Action:
- sts:AssumeRole
Policies:
- PolicyName: AmazonECSTaskExecutionRolePolicy
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- 'ecr:GetAuthorizationToken'
- 'ecr:BatchCheckLayerAvailability'
- 'ecr:GetDownloadUrlForLayer'
- 'ecr:BatchGetImage'
- 'logs:CreateLogStream'
- 'logs:PutLogEvents'
Resource: '*'

最佳答案

您应该引用API reference document以获得清晰的图片。有此类用例的示例。

但是,由于您已经在这里提出了问题,并且我已经迫不及待地想为您提供答案,因此这里仅介绍 IAM 部分的 TypeScript 实现:

import { 
ManagedPolicy,
Role,
ServicePrincipal,
PolicyStatement,
Effect
} from '@aws-cdk/aws-iam';

....
....

const ecsFargateServiceRole = new Role(this, 'FargateTaskExecutionServiceRole', {
assumedBy: new ServicePrincipal('ecs-tasks.amazonaws.com')
});

// Add a policy to a Role
ecsFargateServiceRole.addToPolicy(
new PolicyStatement({
effect: Effect.ALLOW,
resources: ['*'],
actions: [
'ecr:GetAuthorizationToken',
'ecr:BatchCheckLayerAvailability',
'ecr:GetDownloadUrlForLayer',
'ecr:BatchGetImage',
'logs:CreateLogStream',
'logs:PutLogEvents'
]
})
);

// Add a managed policy to a role you can use
ecsFargateServiceRole.addManagedPolicy(
ManagedPolicy.fromAwsManagedPolicyName('AmazonECSTaskExecutionRolePolicy')
);

....
....

更新:

当您向角色添加 AWS 托管策略时,您可以通过 its name 获取托管策略作为引用。或通过 its ARN 。重要的是,如果按上述名称或 ARN 使用 AWS 托管策略,那么您将不需要显式使用策略语句。从我上面的回答来看,您可以使用托管策略方法而不是使用策略声明。

现在定义角色的一个简单方法是:

const ecsFargateServiceRole = new Role(this, 'FargateTaskExecutionServiceRole', {
assumedBy: new ServicePrincipal('ecs-tasks.amazonaws.com'),
managedPolicies: [
ManagedPolicy.fromAwsManagedPolicyName('AmazonECSTaskExecutionRolePolicy')
]
});

请注意,为了简洁起见,我排除了 Construct 的构造函数。

更新:(来自评论)

使用 CDK 版本 2,您必须将 service-role/ 添加到托管策略。所以它看起来像这样:

ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonECSTaskExecutionRolePolicy')

关于amazon-web-services - AWS CDK - 角色和策略创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62094746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com