在AWS中强制标记Terraform资源

时间:2019-10-11 18:12:55

标签: amazon-web-services terraform terraform-provider-aws

我想知道是否有一个很好的方法为所有开发人员实施AWS资源的标记。或者至少提供一组自动插入的预定义标签。其背后的原因是某些团队成员忘记标记他们的资源或使用其他标记集。此外,如果要更改标记以用于将来的部署,则必须在所有位置进行更改。 因此,到目前为止,我的想法是创建一个包含所有默认设置(项目,版本,成本分配)标签的地图。现在,每个人都可以使用此默认列表,并根据需要添加其他标签。但是,不能保证每个人都在使用此地图进行默认标记。 我不知道如何实现这一目标,但是也许有人有一个很好的主意来做到这一点...

2 个答案:

答案 0 :(得分:2)

为解决此问题,我们创建了一个tags模块,每个项目在定义资源时都希望使用。该模块具有product_nameservice_name的参数以及extra_tags参数。然后,它将这些值与内部映射组合起来,并导出最终映射,以便可以在整个项目中使用。

在我们的团队文化中,每个团队都了解标记对于保持对AWS资源和成本的控制和责任很重要。不标记您的资源是获得标记为declinedneeds work的PR的原因。

我们确实使用AWS Config监视未标记的资源并通知我们,但是保持资源标记的最佳方法是文化和评论。

答案 1 :(得分:1)

选项1:在Terraform Enterprise中,您可以使用Sentinel强制执行策略,以使资源看起来像。有关强制标记,请参见Hashicorp示例:https://github.com/hashicorp/terraform-guides/blob/master/governance/second-generation/aws/enforce-mandatory-tags.sentinel

选项2:如果您没有Terraform Enterprise,请使用填充模块内标签的参数创建模块,并阻止使用“普通” aws资源。

选项3:将标记检查作为自动化测试套件的一部分(例如,使用terratest),并在没有适当标记的情况下使测试失败。