我想知道是否有一种好方法可以对所有开发人员强制标记AWS资源。或者至少提供一组自动插入的预定义标签。这背后的原因是一些团队成员忘记标记他们的资源或使用一组不同的标签。此外,如果要更改将来部署的标记,则必须在任何地方更改它。 因此,到目前为止,我的想法是创建一个包含默认情况下应设置的所有标签(项目,版本,成本分配(的地图。现在,每个人都可以使用此默认列表,并根据需要为其资源添加更多标签。但不能保证每个人都使用此地图进行默认标记。 我不知道如何实现这一目标,但也许有人有一个好主意来做到这一点......
选项 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(,并在测试没有合适的标签时让测试失败。
为了解决这个问题,我们创建了一个tags
模块,每个项目在定义资源时都应该使用它。该模块有product_name
、service_name
的参数,以及一个extra_tags
参数。然后,它将这些值与内部地图组合并导出最终地图,以便可以在整个项目中使用它。
在我们的团队文化中,每个团队都明白,标记对于保持对 AWS 中资源和成本的控制和责任非常重要。不标记您的资源是将 PR 标记为declined
或needs work
的原因。
我们确实使用 AWS Config 来监控未标记的资源并通知我们,但是保持资源标记的最佳防线是文化和拉取评审。