创建任务执行角色 - Amazon EMR

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

创建任务执行角色

要在 Amazon EMR on EKS 上运行工作负载,您需要创建一个 IAM 角色。我们在本文档中将此角色称为任务执行角色。有关如何创建 IAM 角色的更多信息,请参阅《IAM 用户指南》中的创建 IAM 角色

您必须创建 IAM policy 来指定任务执行角色的权限,然后将 IAM policy 添加到任务执行角色。

以下任务执行角色策略允许访问资源目标、Amazon S3 和 CloudWatch。这些权限是监控任务和访问日志所必需的。要执行相同的过程,请使用 AWS CLI:

为任务执行创建 IAM 角色:让我们创建 EMR 将用于任务执行的角色。这是 EMR 作业在 EKS 上运行时将扮演的角色。

cat <<EoF > ~/environment/emr-trust-policy.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "elasticmapreduce.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EoF aws iam create-role --role-name EMRContainers-JobExecutionRole --assume-role-policy-document file://~/environment/emr-trust-policy.json

接下来,我们需要将所需的 IAM 策略附加到该角色,以便它可以将日志写入 s3 和 cloudwatch。

cat <<EoF > ~/environment/EMRContainers-JobExecutionRole.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] } EoF aws iam put-role-policy --role-name EMRContainers-JobExecutionRole --policy-name EMR-Containers-Job-Execution --policy-document file://~/environment/EMRContainers-JobExecutionRole.json
注意

应适当限定访问范围,而不是授予对任务执行角色中所有 S3 对象的权限。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Sid": "AllowS3Putobject" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ], "Sid": "AllowLOGSPutlogevents" } ] }

有关更多信息,请参阅使用任务执行角色、将任务运行配置为使用 S3 日志和将任务运行配置为使用 CloudWatch 日志