Сложность с распространением тегов в AWS Cloud Development Kit (CDK) - PullRequest
1 голос
/ 29 января 2020

Мы используем AWS CDK для развертывания значительной части нашей инфраструктуры, включая ресурсы ECS. У меня есть файл, который создает кластер ECS, определение задач и задач. Для класса Tag Затем я использую Tag.add (), чтобы применить тег ко всему в области видимости файла, включая все ресурсы ECS.

При развертывании стека, тег применяется к кластеру и определению задачи, но не к задаче. Я также не получаю никаких сообщений об ошибках; тег просто молча не относится к задаче. Применение тегов непосредственно к задаче не кажется поддерживаемым решением, поэтому я застрял. Кто-нибудь знает решение пометить задачу?

1 Ответ

0 голосов
/ 30 января 2020

Применение тегов непосредственно к задаче не является поддерживаемым решением, поэтому я застрял.

Я не слишком знаком с задачами ECS, но вы пробовали напрямую записать теги в конструкцию CloudFormation Resource?

From https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html:

Изменение AWS CloudFormation Resource позади AWS Constructs

Если в [sic] Construct отсутствует функция или вы пытаетесь обойти проблему, вы можете изменить ресурс CFN, инкапсулированный в Construct.

Все конструкции содержат внутри себя соответствующий ресурс CFN ...

Основной подход c для получения доступа к классу ресурсов CFN заключается в использовании construct.node.defaultChild (Python: default_child), приведении его к нужному типу (при необходимости) и измените его свойства.

Необработанные переопределения

Если в ресурсе CFN отсутствуют свойства, вы можете обойти все печатать с использованием сырых переопределений. Это также позволяет удалять синтезированные свойства.

Используйте один из методов addOverride (Python: add_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")
...