在AWS CDK v2中,ECS TaskDefinition L2构造具有可选属性TaskRole,如果未指定,则CDK默认行为是创建任务角色。但是,我不希望为此资源设置任务角色。AWS中实际上不需要此属性-任务定义可以在没有此属性的情况下运行。我如何在CDK中管理此属性?我无法'我看不出有什么方法可以取消设置任务角色,或者一开始就不生成任务角色。为此,我需要返回到L1构造吗?我配置:
taskDefinition := awsecs.NewEc2TaskDefinition(stack, jsii.String(deploymentEnv+service.Tag+"TaskDef"), &awsecs.Ec2TaskDefinitionProps{
Family: jsii.String(deploymentEnv + service.Tag),
NetworkMode: awsecs.NetworkMode_BRIDGE,
//TaskRole: what can i do here to fix this
Volumes: &[]*awsecs.Volume{
&efs_shared_volume,
},
})
2条答案
按热度按时间2g32fytz1#
可以使用tryRemoveChildescape hatch方法按ID删除任意子构件:
诀窍在于标识构造ID。有时需要在源代码中查找它。
n8ghc7c12#
在CDK中,这是必要的,因为L2构造实现了
Grantable
接口,并且其方法依赖于角色的存在。* 从技术上讲 *,您可以覆盖任何节点上的几乎任何属性,从而获得这种效果,但这可能会导致难以跟踪错误。此外,如果没有为任务定义指定角色,您的任务将从集群中的EC2示例角色继承权限,这几乎肯定不是您想要的行为。如果这是您想要的行为,您最好显式定义角色,使其与EC2集群中使用的角色相同。
或者,如果您的意图是使任务具有 no 权限,则最好的办法是坚持默认行为或显式定义一个没有附加策略的角色,然后(可选地)在角色对象上传递
.withoutPolicyUpdates
返回的对象,以防止它被赠款更新。