创建任务执行角色 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

创建任务执行角色

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

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

任务执行角色的下列策略允许访问资源目标、Amazon S3 和 CloudWatch。这些权限是监控任务和访问日志所必需的。要使用 Amazon 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 Logs