在云形成模板中的不同资源类型之间共享标签



我正在尝试编写一个SAM模板,以具有触发Lambda函数的物联网规则。出于计费原因,我使用的帐户需要使用一长串标识符标记所有资源。这些总是相同的,为每个资源重复复制它们似乎是一种耻辱。SAM 允许在一种资源类型之间共享全局(因此每个函数都可以共享标签(,但我没有看到在资源类型之间应用全局标签的好方法。

我想过使用参数并尝试引用它,但没有受支持的参数类型允许标签的键/值结构。 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html

我很想做这样的事情:

Parameters:
UniversalTags:
Type: KeyValueObject
Default:
- 
Key: "Name"
Value: "my name"
- 
Key: "Manager"
Value: "my manager"
-
Key: "Market"
Value: "my market"
-
Key: "Engagement Office"
Value: "location"
-
Key: "Email"
Value: "email@test.com"
Resources:
IoTProcessingFunction:
Type: AWS::Serverless::Function 
Properties:
Tags: !Ref UniversalTags
IoTRule:
Type: AWS::IoT::TopicRule
Properties:
Tags: !Ref UniversalTags

有人知道任何实现它的方法吗?

我宁愿将它们放在samconfig.toml文件中,例如:

[default.deploy.parameters]
stack_name = "your-application"
s3_bucket = "your-s3-for-cloudformation-stuff"
s3_prefix = "your-folder-name"
...
tags = "Name="my name" Manager="my manager""

这会将标签向下传播到堆栈的所有资源(包括 CloudFormation 堆栈本身(

这是CloudFormation做得不好的事情。查看 AWS CDK。它允许您编写生成 CloudFormation 的代码。您的 CloudFormation 仍将是重复的,但您无需查看或维护它,并且您只能在 CDK 中描述一次标签。

最新更新