在启动时检查EC2实例是否有必需的标签 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在启动时检查EC2实例是否有必需的标签

由 Susanne Kangnoh (AWS) 和 Archit Mathur () 创作 AWS

环境:生产

技术:基础架构;管理和治理;安全、身份、合规; CloudNative

AWS服务:亚马逊EC2;AWS CloudTrail;亚马逊 CloudWatch;亚马逊 SNS

Summary

亚马逊弹性计算云 (AmazonEC2) 在亚马逊网络服务 (AWS) 云中提供可扩展的计算容量。使用 Amazon,您EC2无需预先投资硬件,因此您可以更快地开发和部署应用程序。

您可以使用标签以不同的方式对AWS资源进行分类。EC2当您的账户中有许多资源并且想要根据标签快速识别特定资源时,实例标记非常有用。您可以使用标签为EC2实例分配自定义元数据。每个标签都由用户定义的键和值组成。我们建议您创建一组一致的标签以满足您的组织要求。 

此模式提供了一个AWS CloudFormation 模板来帮助您监控EC2实例的特定标签。该模板创建一个 Amazon Events CloudWatch 事件,用于监视AWS CloudTrail TagResourceUntagResource事件,以检测新EC2实例的标签或标签移除。如果缺少预定义的标签,它会调用 AWS Lambda 函数,该函数使用亚马逊简单通知服务 (Amazon) 向您提供的电子邮件地址发送违规消息。SNS 

先决条件和限制

先决条件

  • 一个活动的 AWS 账户。

  • 用于上传提供的 Lambda 代码的 Amazon Simple Storage Service (Amazon S3)存储桶。

  • 您希望接收违规通知的电子邮件地址。

限制

  • 此解决方案支持 CloudTrail TagResourceUntagResource活动。它不会为任何其他事件创建通知。

  • 此解决方案仅检查标签键。它并不监视键值。

架构

工作流程架构

自动化和扩缩

  • 您可以为不同的AWS地区和账户多次使用该AWS CloudFormation 模板。您只需在每个区域或账户中运行该模板一次。

工具

AWS服务

  • 亚马逊 EC2 — Amazon Elastic Compute Cloud (AmazonEC2) 是一项网络服务,可在云中提供安全、可调整大小的计算容量。该服务旨在降低开发人员进行网络规模级云计算的难度。

  • AWS CloudTrail— CloudTrail 是一项可帮助您对AWS账户进行治理、合规以及运营和风险审计的AWS服务。用户、角色或AWS服务采取的操作将作为事件记录在中 CloudTrail。 

  • Amazon CloudWatch Events — Amazon CloudWatch Events 提供近乎实时的系统事件流,这些事件描述了AWS资源的变化。 CloudWatch 通过发送消息以响应环境、激活功能、进行更改和捕获状态信息,事件会在操作变化发生时意识到这些变化,并在必要时采取纠正措施。 

  • AWSLambd a — Lambda 是一项计算服务,它支持运行代码,无需预置或管理服务器。只有在需要时 Lambda 才运行您的代码,并且能自动扩缩,从每天几个请求扩展到每秒数千个请求。 

  • Amazon S3 – Amazon Simple Storage Service (Amazon S3) 是一项高度可扩展的对象存储服务,可用于各种存储解决方案,包括网站、移动应用程序、备份和数据湖。

  • 亚马逊 SNS — 亚马逊简单通知服务 (AmazonSNS) 是一项网络服务,它使应用程序、最终用户和设备能够立即从云端发送和接收通知。

代码

此模式包括一个包含两个文件的附件:

  • index.zip 是压缩文件,其中包含此模式的 Lambda 代码。

  • ec2-require-tags.yaml是部署 Lambda 代码的 CloudFormation 模板。

有关如何使用这些文件的信息,请参阅操作说明部分。

操作说明

任务描述所需技能
将代码上传到 S3 存储桶。

创建新的 S3 存储桶或使用现有 S3 存储桶上传附加的 index.zip 文件(Lambda 代码)。此存储桶必须与您要监控的资源(EC2实例)位于同一AWS区域。

云架构师
部署 CloudFormation 模板。

在与 S3 存储桶相同的AWS区域中打开 Cloudformation 控制台,然后部署附件中提供的ec2-require-tags.yaml文件。在下一个操作说明中,提供模板参数的值。 

云架构师
任务描述所需技能
提供 S3 存储桶名称。

输入您在第一篇操作说明中创建或选择的 S3 存储桶的名称。此 S3 存储桶包含 Lambda 代码的.zip 文件,并且必须与模板和要监控EC2的实例位于AWS同一区域。 CloudFormation

云架构师
提供 S3 密钥。

提供 Lambda 代码 .zip 文件在 S3 存储桶中的位置,不带前导斜杠(例如,index.zipcontrols/index.zip)。

云架构师
提供电子邮箱地址。

提供要接收违规通知的活动电子邮件地址。

云架构师
定义日志记录级别。

指定日志记录级别和详细程度。Info 指定有关应用程序进度的详细信息消息,应仅用于调试。Error 指定仍允许应用程序继续运行的错误事件。Warning 表示潜在的有害情况。

云架构师
输入所需标签密钥。

输入要检查的标签键。如果要指定多个密钥,请用逗号分隔,不要使用空格。(例如,ApplicationId,CreatedBy,Environment,Organization 搜索四个密钥。) Events CloudWatch 事件搜索这些标签密钥,如果找不到则发送通知。

云架构师
任务描述所需技能
确认电子邮件订阅。

成功部署 CloudFormation 模板后,它会向您提供的电子邮件地址发送订阅电子邮件。要接收通知,您必须确认此电子邮件订阅。 

云架构师

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip