确保在启动时启用 Amazon EMR 日志记录到 Amazon S3 - AWS Prescriptive Guidance

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

确保在启动时启用 Amazon EMR 日志记录到 Amazon S3

由 Priyanka Chaudhary (AWS) 编写

环境:生产

技术:分析;安全、身份、合规;无服务器

工作负载:开源

AWS 服务:亚马逊 EMR;亚马逊 S3;亚马逊 SNS;亚马逊 CloudWatch

Summary

此模式提供了一种安全控制,用于监控在 Amazon Web Services(AWS)上运行的 Amazon EMR 集群的日志记录配置。

Amazon EMR 是用于大数据处理和分析的 AWS 工具。Amazon EMR 提供可扩展的低配置服务,作为运行内部集群计算的替代方法。Amazon EMR 提供两类 EMR 集群。

  • 临时 Amazon EMR 集群:临时 Amazon EMR 集群在处理完成后自动关闭并停止产生成本。

  • 永久 Amazon EMR 集群:数据处理任务完成后,永久性 Amazon EMR 集群将继续运行。

Amazon EMR 和 Hadoop 都可以生成日志文件,报告集群上的状态。默认情况下,这些报告会写入 /mnt/var/log/ 目录中的主节点。根据在启动集群时配置集群的方式,您还可将这些日志保存到 Amazon Simple Storage Service (Amazon S3),并通过图形调试工具进行查看。请注意,只有在启动集群时才可指定 Amazon S3 日志记录。通过此配置,日志每 5 分钟从主节点发送到 Amazon S3 位置。对于瞬态集群,Amazon S3 日志记录非常重要,因为处理完成后集群就会消失,并且这些日志文件可用于调试任何失败的作业。

该模式使用 AWS CloudFormation 模板部署安全控 CloudWatch 件,用于监控 API 调用,并在 “” 上启动 Amazon Events RunJobFlow。触发器调用 AWS Lambda,后者则运行 Python 脚本。Lambda 函数从事件 JSON 输入中检索 EMR 集群 ID,并检查 Amazon S3 日志 URI。如果未找到 Amazon S3 URI,Lambda 函数将发送 Amazon Simple Notification Service (Amazon SNS) 通知,详细说明 EMR 集群名称、违规详细信息、AWS 区域、Amazon Web Services account 以及通知来源的 Lambda Amazon 资源名称(ARN)。

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account

  • 存放 Lambda 代码 .zip 文件的 S3 存储桶

  • 接收违规通知的电子邮件地址

限制

  • 此检测控制是区域性的,必须部署在您要监控的 AWS 区域中。

产品版本

  • Amazon EMR 发行版 4.8.0 及以上版本

架构

目标技术堆栈

  • 亚马逊 CloudWatch 活动活动

  • Amazon EMR

  • Lambda 函数

  • S3 存储桶

  • Amazon SNS

目标架构

用于确保在启动时启用 Amazon EMR 登录到 Amazon S3 的工作流程。

自动化和扩缩

  • 如果您使用的是 AWS Organizations CloudFormation StackSets,则可以使用 AWS 在要监控的多个账户中部署此模板。

工具

工具

  • AWS CloudFormation — AWS CloudFormation 可帮助您使用基础设施即代码建模和设置 AWS 资源。

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

  • Amazon EMR — Amazon EMR 是托管集群平台,可简化大数据框架的运行。

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

  • Amazon S3 — Amazon S3 是一个 Web 服务接口,可用于从 Web 上的任何位置存储和检索任意数量的数据。

  • Amazon SNS — Amazon SNS 是一项 Web 服务,可协调和管理发布者和客户端之间消息的传送或发送,包括 Web 服务器和电子邮件地址。

代码

  • 该项目的 .zip 文件作为附件提供。

操作说明

任务描述所需技能

定义 S3 存储桶。

要托管 Lambda 代码 .zip 文件,请选择或创建一个具有不包含前导斜杠的唯一名称的 S3 存储桶。S3 存储桶名称是全局唯一的,并且命名空间由所有 Amazon Web Services account 共享。您的 S3 存储桶需要与正在评估的 Amazon EMR 集群位于同一 AWS 区域。

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

将 Lambda 代码上传至 S3 存储桶。

将“附件”部分中提供的 Lambda 代码.zip 文件上传到 S3 存储桶。S3 存储桶需要与正在评估的 Amazon EMR 集群位于同一区域。

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

部署 AWS CloudFormation 模板。

在 AWS CloudFormation 控制台上,在与 S3 存储桶相同的区域中,部署作为该模式附件提供的 AWS CloudFormation 模板。在下一个操作说明中,提供参数的值。有关部署 AWS CloudFormation 模板的更多信息,请参阅 “相关资源” 部分。

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

命名 S3 存储桶。

输入您在第一个操作说明中创建的 S3 存储桶的名称。

云架构师

提供 Amazon S3 密钥。

提供 Lambda 代码 .zip 文件在 S3 存储桶中的位置,不带前导斜杠(例如,<directory>/<file-name>.zip)。

云架构师

提供电子邮箱地址。

提供有效的电子邮件地址以接收 Amazon SNS 通知。

云架构师

定义日志记录级别。

定义 Lambda 函数的日志记录级别与频率。“信息”表示有关应用程序进度的详细信息消息。“错误”表示仍可能允许应用程序继续运行的错误事件。“警告”表示潜在的有害情况。

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

确认订阅。

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

云架构师

相关资源

附件

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