Amazon web services 在AWS云开发工具包(CDK)中传播标记的困难

Amazon web services 在AWS云开发工具包(CDK)中传播标记的困难,amazon-web-services,aws-cdk,Amazon Web Services,Aws Cdk,我们正在使用AWS CDK部署大部分基础设施,包括ECS资源。我有一个创建ECS集群、任务定义和任务的文件。根据,我将使用Tag.add()将标记应用于文件范围内的所有内容,包括所有ECS资源 部署堆栈时,标记应用于集群和任务定义,但不应用于任务。我也没有收到任何错误消息;标记只是默默地不应用于任务。将标签直接应用到任务似乎不是一个受支持的解决方法,所以我被卡住了。有人知道任务标记的解决方案吗 将标签直接应用到任务似乎不是一个受支持的解决方法,所以我被卡住了 我不太熟悉ECS任务,但您是否尝试过

我们正在使用AWS CDK部署大部分基础设施,包括ECS资源。我有一个创建ECS集群、任务定义和任务的文件。根据,我将使用Tag.add()将标记应用于文件范围内的所有内容,包括所有ECS资源

部署堆栈时,标记应用于集群和任务定义,但不应用于任务。我也没有收到任何错误消息;标记只是默默地不应用于任务。将标签直接应用到任务似乎不是一个受支持的解决方法,所以我被卡住了。有人知道任务标记的解决方案吗

将标签直接应用到任务似乎不是一个受支持的解决方法,所以我被卡住了

我不太熟悉ECS任务,但您是否尝试过直接将标记写入CloudFormation资源构造

发件人:

修改AWS构造背后的AWS云信息资源

如果[sic]构造缺少某个功能,或者您正试图解决某个问题,则可以修改由该构造封装的CFN资源

所有构造都包含相应的CFN资源

访问CFN资源类的基本方法是使用
construct.node.defaultChild
(Python:
default\u child
),将其强制转换为正确的类型(如果需要),并修改其属性

原始覆盖

如果CFN资源中缺少属性,则可以使用原始覆盖绕过所有键入。这也使得删除合成属性成为可能

使用
addOverride
方法之一(Python:
add\u override
)方法,如下例所示

# Get the AWS CloudFormation resource
cfn_bucket = bucket.node.default_child

# Use dot notation to address inside the resource template fragment
cfn_bucket.add_override("Properties.VersioningConfiguration.Status", "NewStatus")
cfn_bucket.add_deletion_override("Properties.VersioningConfiguration.Status")

# add_property_override is a convenience function, which implies the
# path starts with "Properties."
cfn_bucket.add_property_override("VersioningConfiguration.Status", "NewStatus")
cfn_bucket.add_property_deletion_override("VersioningConfiguration.Status")
将标签直接应用到任务似乎不是一个受支持的解决方法,所以我被卡住了

我不太熟悉ECS任务,但您是否尝试过直接将标记写入CloudFormation资源构造

发件人:

修改AWS构造背后的AWS云信息资源

如果[sic]构造缺少某个功能,或者您正试图解决某个问题,则可以修改由该构造封装的CFN资源

所有构造都包含相应的CFN资源

访问CFN资源类的基本方法是使用
construct.node.defaultChild
(Python:
default\u child
),将其强制转换为正确的类型(如果需要),并修改其属性

原始覆盖

如果CFN资源中缺少属性,则可以使用原始覆盖绕过所有键入。这也使得删除合成属性成为可能

使用
addOverride
方法之一(Python:
add\u override
)方法,如下例所示

# Get the AWS CloudFormation resource
cfn_bucket = bucket.node.default_child

# Use dot notation to address inside the resource template fragment
cfn_bucket.add_override("Properties.VersioningConfiguration.Status", "NewStatus")
cfn_bucket.add_deletion_override("Properties.VersioningConfiguration.Status")

# add_property_override is a convenience function, which implies the
# path starts with "Properties."
cfn_bucket.add_property_override("VersioningConfiguration.Status", "NewStatus")
cfn_bucket.add_property_deletion_override("VersioningConfiguration.Status")

如果您正在使用ECS模式构造(例如ApplicationLoadBalancedArgateService),则可以通过添加以下标志来实现这一点:

enable_ecs_managed_tags=True,
                                                                              
propagate_tags=aws_ecs.PropagatedTagSource.TASK_DEFINITION,

在此之后,我的标记从CDK堆栈传播到ECS群集/服务/任务定义,然后传播到基础任务。

如果您使用的是ECS模式构造(例如ApplicationLoadBalancedArgateService),您可以通过添加以下标志来实现这一点:

enable_ecs_managed_tags=True,
                                                                              
propagate_tags=aws_ecs.PropagatedTagSource.TASK_DEFINITION,

在这之后,我的标签从CDK堆栈传播到ECS集群/服务/任务定义,然后传播到底层任务。

实际上我错过了文档的这一部分。这看起来很有可能奏效。我会试试的,谢谢你指出!事实上,我错过了那部分文档。这看起来很有可能奏效。我会试试的,谢谢你指出!