授予用户访问 Amazon EMR on EKS 的权限 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

授予用户访问 Amazon EMR on EKS 的权限

对于您在 Amazon EMR on EKS 执行的任何操作,您需要对该操作具有相应的 IAM 权限。您必须创建 IAM policy,以便您执行 Amazon EMR on EKS 操作,并将该策略附加到您使用的 IAM 用户或角色。

本主题提供了创建新策略并将其附加到用户的步骤。IAM policy 还涵盖了在 EKS 环境上设置 Amazon EMR 所需的基本权限。我们建议您尽可能根据您的业务需求来优化特定资源的权限。

在 IAM 控制台中创建新 IAM policy 并将其附加到用户

创建新 IAM policy
  1. 登录 Amazon Web Services 管理控制台,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在 IAM 控制台的导航窗格中,选择 Policies (策略)

  3. 策略页面上,选择 Create a policy (创建策略)

  4. Create Policy (创建策略) 窗口中,导航到 Edit JSON (编辑 JSON) 选项卡。创建包含一个或多个 JSON 语句的策略文档,如该过程以下示例所示。接下来,选择 Review policy (查看策略)

  5. Review Policy (查看策略) 屏幕上,输入您的 Policy Name (策略名称),例如 AmazonEMROnEKSPolicy。输入可选描述,然后选择 Create policy (创建策略)

将策略附加到用户或角色
  1. 登录 Amazon Web Services 管理控制台,单击 https://console.aws.amazon.com/iam/,打开 IAM 控制台。

  2. 在导航窗格中,选择 Policies(策略)

  3. 在策略列表中,选中在前一部分中所创建策略旁边的复选框。您可以使用 Filter 菜单和搜索框来筛选策略列表。

  4. 选择 Policy actions(策略操作),然后选择 Attach(附加)

  5. 选择要将此策略附加到的用户或角色。您可以使用 Filter(筛选条件)菜单和搜索框来筛选委托人实体列表。在选择要将策略附加到的用户或角色后,选择 Attach policy (附加策略)

管理虚拟集群的权限

要管理Amazon账户中的虚拟集群,请创建具有以下权限的 IAM policy。这些权限可让您在Amazon账户中创建、列出、描述和删除虚拟集群。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "*" ], "Condition": { "StringLike": { "iam:AWSServiceName": "emr-containers.amazonaws.com" } }, "Sid": "AllowIAMCreateservicelinkedrole" }, { "Effect": "Allow", "Action": [ "emr-containers:CreateVirtualCluster", "emr-containers:ListVirtualClusters", "emr-containers:DescribeVirtualCluster", "emr-containers:DeleteVirtualCluster" ], "Resource": [ "*" ], "Sid": "AllowEMRCONTAINERSCreatevirtualcluster" } ] }

Amazon EMR 已与 Amazon EKS 集群访问管理(CAM)集成,因此您可以自动配置必要的 AuthN 和 AuthZ 策略,以便在 Amazon EKS 集群的命名空间中运行 Amazon EMR Spark 作业。要完成此操作,您必须具有以下权限:

{ "Effect": "Allow", "Action": [ "eks:CreateAccessEntry" ], "Resource": "arn:<AWS_PARTITION>:eks:<AWS_REGION>:<AWS_ACCOUNT_ID>:cluster/<EKS_CLUSTER_NAME>" }, { "Effect": "Allow", "Action": [ "eks:DescribeAccessEntry", "eks:DeleteAccessEntry", "eks:ListAssociatedAccessPolicies", "eks:AssociateAccessPolicy", "eks:DisassociateAccessPolicy" ], "Resource": "arn:<AWS_PARTITION>:eks:<AWS_REGION>:<AWS_ACCOUNT_ID>:access-entry/<EKS_CLUSTER_NAME>/role/<AWS_ACCOUNT_ID>/AWSServiceRoleForAmazonEMRContainers/*" }

有关更多信息,请参阅自动启用 Amazon EMR on EKS 集群访问

当首次从Amazon账户调用 CreateVirtualCluster 操作时,您还需要 CreateServiceLinkedRole 权限,以为 Amazon EMR on EKS 创建服务相关角色。有关更多信息,请参阅 对 Amazon EMR on EKS 使用服务相关角色

提交任务的权限

要在您Amazon账户中的虚拟集群上提交任务,请创建具有以下权限的 IAM policy。这些权限允许您启动、列出、描述和取消账户中所有虚拟集群的任务运行。您应该考虑添加列出或描述虚拟集群的权限,以便在提交任务之前检查虚拟集群的状态。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-containers:StartJobRun", "emr-containers:ListJobRuns", "emr-containers:DescribeJobRun", "emr-containers:CancelJobRun" ], "Resource": [ "*" ], "Sid": "AllowEMRCONTAINERSStartjobrun" } ] }

用于调试和监控的权限

要访问推送到 Amazon S3 和 CloudWatch 的日志,或在 Amazon EMR 控制台中查看应用程序事件日志,请创建具有以下权限的 IAM policy。我们建议您尽可能根据您的业务需求来优化特定资源的权限。

重要

如果您尚未创建 Amazon S3 存储桶,您需要添加 s3:CreateBucket 权限以访问策略声明。如果您尚未创建日志组,则需要添加 logs:CreateLogGroup 到策略声明。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-containers:DescribeJobRun", "elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL" ], "Resource": [ "*" ], "Sid": "AllowEMRCONTAINERSDescribejobrun" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "*" ], "Sid": "AllowS3Getobject" }, { "Effect": "Allow", "Action": [ "logs:Get*", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "*" ], "Sid": "AllowLOGSGet" } ] }

有关如何配置任务运行以将日志推送到 Amazon S3 和 CloudWatch 的更多信息,请参阅将任务运行配置为使用 S3 日志配置任务运行以使用 CloudWatch Logs