本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自定义步骤日志文件的日志位置
从 Amazon EMR 7.11 版本开始,您现在可以按步骤自定义 S3 日志记录行为。对于单个步骤,您可以选择一个唯一的 S3 存储桶,用于上传该步骤的日志。您还可以选择一个唯一的 KMS 密钥,该密钥用于在 S3 上加密该步骤的静态日志。这些选项优先于启动集群时配置的任何集群范围的日志记录设置。
先决条件
-
您的集群应启用集群日志记录。有关更多信息,请参阅配置 Amazon EMR 集群日志记录和调试。
-
EC2 实例配置文件:
-
应允许您的集群的 EC2 实例配置文件访问将在该步骤的日志配置中使用的 S3 存储桶。
-
应允许您的集群的 EC2 实例配置文件访问将在该步骤的日志配置中使用的 KMS 密钥。此外,您的集群的 EC2 实例配置文件应允许
kms:Decrypt和kms:GenerateDataKey操作。
-
步骤日志配置
向 EMR 提交步骤时,可以通过配置该步骤的日志行为。StepMonitoringConfiguration StepMonitoringConfiguration 包含 S3 MonitoringConfiguration 对象,您可以在其中为 S3 日志存储桶 and/or 指定该步骤的 KMS 密钥。
以下示例向您展示了如何通过 python 脚本自定义步骤的 S3 存储桶和 KMS 密钥:
import boto3 emr_client = boto3.client("emr", region_name="us-east-1") # Define your step: example_step = [ { "Name": "Example Step for StepMonitoringConfiguration", "ActionOnFailure": "CONTINUE", "HadoopJarStep": { "Jar": "command-runner.jar", "Args": ["bash", "-c", "echo 1"] }, "StepMonitoringConfiguration": { "S3MonitoringConfiguration": { "LogUri": "s3://your-s3-bucket/", # Replace this with your S3 bucket "EncryptionKeyArn": "arn:aws:kms:your-kms-key-arn" # Replace this with your KMS key ARN } } } ] response = emr_client.add_job_flow_steps( JobFlowId="j-xxxxxxxxxxxxx", # Replace this with your EMR cluster ID Steps=example_step )
注意事项
-
如果您的集群未启用集群日志记录,即使您提供了,步骤日志也不会上传到 S3
StepMonitoringConfiguration。 -
如果您的步骤运行 Spark 应用程序,则该应用程序的容器日志也将上传到中指定的位置
StepMonitoringConfiguration。 -
您可以指定
LogUri而不指定,反之EncryptionKeyArn亦然。对于中省略的任何字段,EMR 都将默认为集群范围的设置。StepMonitoringConfiguration