本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在启动时检查 EC2 实例是否有必需的标签
由 Susanne Kangnoh (AWS) 和 Archit Mathur (AWS) 创建
摘要
亚马逊弹性计算云 (Amazon EC2) 在亚马逊网络服务 (AWS) 云中提供可扩展的计算容量。使用 Amazon,您 EC2 无需预先投资硬件,因此您可以更快地开发和部署应用程序。
您可以使用标签以不同的方式对您的 AWS 资源进行分类。 EC2 当您的账户中有许多资源并且想要根据标签快速识别特定资源时,实例标记非常有用。您可以使用标签为 EC2 实例分配自定义元数据。每个标签都由用户定义的键和值组成。我们建议您创建一组一致的标签以满足您的组织要求。
此模式提供了一个 AWS CloudFormation 模板来帮助您监控 EC2 实例中是否存在特定标签。该模板创建一个 Amazon Events CloudWatch 事件,用于监视 AWS CloudTrail TagResource或UntagResource事件,以检测新的 EC2 实例标记或标签移除。如果缺少预定义标签,它会调用 AWS Lambda 函数,该函数会使用 Amazon Simple Notification Service (Amazon SNS) 向您提供的电子邮件地址发送违规消息。
先决条件和限制
先决条件
一个有效的 Amazon Web Services account。
用于上传提供的 Lambda 代码的 Amazon Simple Storage Service (Amazon S3)存储桶。
您希望接收违规通知的电子邮件地址。
限制
此解决方案支持 CloudTrail TagResource或UntagResource活动。它不会为任何其他事件创建通知。
此解决方案仅检查标签键。它并不监视键值。
架构
工作流程架构

自动化和扩缩
您可以针对不同的 AWS 区域和账户多次使用 AWS CloudFormation 模板。您只需在每个区域或账户中运行该模板一次。
工具
Amazon Web Services
亚马逊 EC2
— Amazon Elastic Compute Cloud (Amazon EC2) 是一项网络服务,可在云中提供安全、可调整大小的计算容量。该服务旨在降低开发人员进行网络规模级云计算的难度。 AWS CloudTrail — CloudTrail 是一项 AWS 服务,可帮助您对 AWS 账户进行治理、合规以及运营和风险审计。用户、角色或 AWS 服务采取的操作在中记录为事件 CloudTrail。
Amazon CloudWatch Events — Amazon CloudWatch Events 提供近乎实时的系统事件流,这些事件描述了 AWS 资源的变化。 CloudWatch 通过发送消息以响应环境、激活功能、进行更改和捕获状态信息,事件会在操作变化发生时意识到这些变化,并在必要时采取纠正措施。
AWS Lambda — AWS Lambda 是一项计算服务,使您无需预置或管理服务器即可运行代码。只有在需要时 Lambda 才运行您的代码,并且能自动扩缩,从每天几个请求扩展到每秒数千个请求。
Amazon S3 – Amazon Simple Storage Service (Amazon S3) 是一项高度可扩展的对象存储服务,可用于各种存储解决方案,包括网站、移动应用程序、备份和数据湖。
Amazon SNS — Amazon Simple Notification Service (Amazon SNS) 是一项 Web 服务,可让应用程序、终端用户和设备即时发送和接收来自云端的通知。
代码
此模式包括一个包含两个文件的附件:
index.zip
是压缩文件,其中包含此模式的 Lambda 代码。ec2-require-tags.yaml
是部署 Lambda 代码的 CloudFormation 模板。
有关如何使用这些文件的信息,请参阅操作说明部分。
操作说明
Task | 描述 | 所需技能 |
---|---|---|
将代码上传到 S3 存储桶。 | 创建新的 S3 存储桶或使用现有 S3 存储桶上传附加的 | 云架构师 |
部署 CloudFormation 模板。 | 在与 S3 存储桶相同的 AWS 区域中打开 Cloudformation 控制台,然后部署附件中提供的 | 云架构师 |
Task | 描述 | 所需技能 |
---|---|---|
提供 S3 存储桶名称。 | 输入您在第一篇操作说明中创建或选择的 S3 存储桶的名称。此 S3 存储桶包含 Lambda 代码的.zip 文件,并且必须与模板和 EC2 要监控 CloudFormation 的实例位于相同的 AWS 区域。 | 云架构师 |
提供 S3 密钥。 | 提供 Lambda 代码 .zip 文件在 S3 存储桶中的位置,不带前导斜杠(例如, | 云架构师 |
提供电子邮箱地址。 | 提供要接收违规通知的活动电子邮件地址。 | 云架构师 |
定义日志记录级别。 | 指定日志记录级别和详细程度。 | 云架构师 |
输入所需标签密钥。 | 输入要检查的标签键。如果要指定多个密钥,请用逗号分隔,不要使用空格。(例如, | 云架构师 |
Task | 描述 | 所需技能 |
---|---|---|
确认电子邮件订阅。 | 成功部署 CloudFormation 模板后,它会向您提供的电子邮件地址发送一封订阅电子邮件。要接收通知,您必须确认此电子邮件订阅。 | 云架构师 |
相关资源
创建存储桶(Amazon S3 文档)
上传对象(Amazon S3 文档)
标记您的亚马逊 EC2 资源(亚马逊 EC2 文档)
使用 AWS 创建在 AWS API 调用时触发 CloudWatch 的事件规则 CloudTrail(亚马逊 CloudWatch 文档)
附件
要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip