配置任务运行以使用 Amazon S3 日志 - Amazon EMR

配置任务运行以使用 Amazon S3 日志

为了能够监控任务进度并排查故障,您必须配置任务以将日志信息发送到 Amazon S3、Amazon CloudWatch Logs 或两者。本主题可提供入门知识,帮助您将通过 Amazon EMR on EKS 启动的任务的应用程序日志发布到 Amazon S3。

S3 日志 IAM policy

任务执行角色的权限策略中必须包含以下权限,然后才能将日志数据发送到 Amazon S3。将 amzn-s3-demo-logging-bucket 替换为日志记录存储桶的名称。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-logging-bucket", "arn:aws:s3:::amzn-s3-demo-logging-bucket/*", ] } ] }
注意

Amazon EMR on EKS 也可以创建 Amazon S3 存储桶。如果 Amazon S3 存储桶不可用,则 IAM policy 应包含 “s3:CreateBucket” 权限。

在您授予执行角色将日志发送到 Amazon S3 的合适权限后,只要 s3MonitoringConfiguration 通过 monitoringConfiguration 请求的 start-job-run 部分,您的日志数据将发送到以下 Amazon S3 位置,如 使用 AWS CLI 管理任务运行 所示。

  • 提交者日志:/logUri/virtual-cluster-id/jobs/job-id/containers/pod-name/(stderr.gz/stdout.gz)

  • 驱动程序日志 - /logUri/virtual-cluster-id/jobs/job-id/containers/spark-application-id/spark-job-id-driver/(stderr.gz/stdout.gz)

  • 执行程序日志 - /logUri/virtual-cluster-id/jobs/job-id/containers/spark-application-id/executor-pod-name/(stderr.gz/stdout.gz)