在启动时强制对 Amazon EMR 集群进行标记 - AWS Prescriptive Guidance

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

在启动时强制对 Amazon EMR 集群进行标记

由 Priyanka Chaudhary 创作 () AWS

摘要

此模式提供了一种安全控制,可确保在创建 Amazon EMR 集群时对其进行标记。 

亚马逊EMR是一项 Amazon Web Services (AWS) 服务,用于处理和分析大量数据。Amazon EMR 提供可扩展的低配置服务,作为运行内部集群计算的更简单替代方案。您可以使用标签以不同的方式对AWS资源进行分类,例如按用途、所有者或环境进行分类。例如,您可以通过为每个EMR集群分配自定义元数据来标记您的 Amazon 集群。标签由您定义的键和值组成。我们建议您创建一组一致的标签以满足您的组织要求。当您向亚马逊EMR集群添加标签时,该标签还会传播到与该集群关联的每个活动的亚马逊弹性计算云 (AmazonEC2) 实例。同样,当您从 Amazon EMR 集群中移除标签时,该标签也会从每个关联的活动EC2实例中删除。

侦探控件监视API呼叫并启动RunJobFlow、、AddTags和的 Amazon Event RemoveTagss CloudWatch 事件。CreateTagsAPIs该事件调用 AWS Lambda,它运行 Python 脚本。Python 函数从事件的JSON输入中获取 Amazon EMR 集群 ID,并执行以下检查:

  • 检查 Amazon EMR 集群是否配置了您指定的标签名称。

  • 如果不是,请向用户发送亚马逊简单通知服务 (AmazonSNS) 通知,其中包含相关信息:亚马逊EMR集群名称、违规详情、AWS区域、AWS账户以及该通知来源的 Lambda 的亚马逊资源名称 (ARN)。

先决条件和限制

先决条件

  • 一个活跃的AWS账户

  • 用于上传提供的 Lambda 代码的 Amazon Simple Storage Service (Amazon S3)存储桶。或者,您可为此目的创建 S3 存储桶,如操作说明部分所述。

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

  • 您要检查的必填标签列表。

限制

  • 这种安全控制为区域性的。您必须将其部署在要监控的每个AWS区域。

产品版本

  • 亚马逊EMR发布了 4.8.0 及更高版本。

架构

工作流程架构

集群启动、使用监控APIs、事件生成、Lambda 函数调用、发送通知。

自动化和扩缩

工具

AWS 服务

  • AWS CloudFormation— AWS CloudFormation 帮助您建模和设置AWS资源,快速一致地配置资源,并在资源的整个生命周期中对其进行管理。您可以使用模板来描述资源及其依赖关系,然后将它们作为堆栈一起启动和配置,而不必单独管理资源。您可以跨多个AWS账户和AWS地区管理和配置堆栈。

  • Amazon CloudWatch Events-Amazon CloudWatch Events 提供近乎实时的系统事件流,这些事件描述了AWS资源的变化。

  • Ama zon EMR-Amazon EMR 是一项网络服务,可简化大数据框架的运行和海量数据的有效处理。

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

  • Amazon S3 – Amazon Simple Storage Service (Amazon S3) 是一项对象存储服务。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。

  • 亚马逊 SNS — 亚马逊简单通知服务 (AmazonSNS) 协调和管理发布者与客户之间的消息传送或发送,包括网络服务器和电子邮件地址。订阅用户接收所有发布至他们所订阅主题的消息,并且一个主题的所有订阅用户收到的消息都相同。

代码

此模式包括以下附件:

  • EMRTagValidation.zip — 用于安全控制的 Lambda 代码。

  • EMRTagValidation.yml— 用于设置事件和 Lambda 函数的 CloudFormation 模板。

操作说明

任务描述所需技能

定义 S3 存储桶。

Amazon S3 控制台,选择或创建 S3 存储桶来托管 Lambda 代码 .zip 文件。此 S3 存储桶必须与您要监控的 Amazon EMR 集群位于同一AWS区域。Amazon S3 存储桶名称是全局唯一的,并且命名空间由所有 AWS 账户共享。S3 存储桶名称不得包含前导斜杠。

云架构师

上传 Lambda 代码。

附件部分中提供的 Lambda 代码 .zip文件上传至 S3 存储桶。                                             

云架构师
任务描述所需技能

启动AWS CloudFormation 模板。

在与 S3 存储桶相同的AWS区域中打开AWS CloudFormation 控制台并部署模板。有关部署AWS CloudFormation 模板的更多信息,请参阅 CloudFormation 文档中的在AWS CloudFormation 控制台上创建堆栈

云架构师

填写模板中的参数。

启动模板时,系统将会提示输入以下信息:

  • S3 存储桶:指定您在首个操作说明中创建或选择的存储桶。这是您上传所附的 Lambda 代码(文件)的地方。

  • S3 密钥:指定 Lambda .zip 文件在您的 S3 存储桶中的位置(例如,filename.zip 或 controls/filename.zip)。切勿纳入前导斜字符。

  • 通知电子邮件:提供您想要接收Amazon SNS 通知的有效电子邮件地址。 

  • 标记键名称:以逗号分隔的列表形式提供要检查的标签(例如、ApplicationIDEnvironmentOwner)。Events CloudWatch 事件会监控集群中是否有这些标签,如果找不到这些标签,则会发送通知。

  • Lambda 日志级别: 指定 Lambda 函数的日志记录级别和频率。使用信息记录有关进度的详细信息消息,使用错误记录仍然允许部署继续的错误事件,使用警告记录潜在的有害情况。                                       

云架构师
任务描述所需技能

确认订阅。

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

云架构师

相关资源

附件

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