使用 EMR Serverless 的服务相关角色 - Amazon EMR

使用 EMR Serverless 的服务相关角色

Amazon EMR Serverless 使用 AWS Identity and Access Management(IAM)服务相关角色。服务相关角色是一种独特的 IAM 角色类型,直接关联到 EMR Serverless。服务相关角色由 EMR Serverless 预定义,具有服务代表您调用其他 AWS 服务所需的所有权限。

服务相关角色使设置 EMR Serverless 变得更加容易,因为您无需手动添加必要的权限。EMR Serverless 定义了其服务相关角色的权限,除非另有定义,否则只有 EMR Serverless 可以代入其角色。定义的权限包括信任策略和权限策略,以及不能附加到任何其他 IAM 实体的权限策略。

只有在首先删除相关资源后,您才能删除服务相关角色。这可以保护您的 EMR Serverless 资源,因为您不会无意中删除对资源的访问权限。

有关支持服务相关角色的其他服务的信息,请参阅与 IAM 配合使用的 AWS 服务,并查找服务相关角色列中显示为的服务。选择和链接,查看该服务的服务相关角色文档。

EMR Serverless 的服务相关角色权限

EMR Serverless 使用名为 AWSServiceRoleForAmazonEMRServerless 的服务相关角色,使其能够代表您调用 AWS API。

AWSServiceRoleForAmazonEMRServerless 服务相关角色信任以下服务代入角色:

  • ops.emr-serverless.amazonaws.com

名为 AmazonEMRServerlessServiceRolePolicy 的角色权限策略允许 EMR Serverless 对指定资源完成以下操作。

注意

托管策略内容发生变化,此处显示的策略可能已过时。在 AWS Management Console 中查看最新策略 AmazonEMRServerlessServiceRolePolicy

  • 操作:ec2:CreateNetworkInterface

  • 操作:ec2:DeleteNetworkInterface

  • 操作:ec2:DescribeNetworkInterfaces

  • 操作:ec2:DescribeSecurityGroups

  • 操作:ec2:DescribeSubnets

  • 操作:ec2:DescribeVpcs

  • 操作:ec2:DescribeDhcpOptions

  • 操作:ec2:DescribeRouteTables

  • 操作:cloudwatch:PutMetricData

以下是完整的 AmazonEMRServerlessServiceRolePolicy 策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EC2PolicyStatement", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeRouteTables" ], "Resource": "*" }, { "Sid": "CloudWatchPolicyStatement", "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "cloudwatch:namespace": [ "AWS/EMRServerless", "AWS/Usage" ] } } } ] }

以下信任策略附加到此角色,允许 EMR Serverless 主体代入此角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ops.emr-serverless.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

您必须配置权限,允许 IAM 实体(如用户、组或角色)创建、编辑或删除服务相关角色。有关更多信息,请参阅《IAM 用户指南》中的服务相关角色权限

为 EMR Serverless 创建服务相关角色

您无需手动创建服务相关角色。当您在 AWS Management Console(使用 EMR Studio)、AWS CLI 或 AWS API 中创建新的 EMR Serverless 应用程序时,EMR Serverless 会为您创建服务相关角色。您必须配置权限,允许 IAM 实体(如用户、组或角色)创建、编辑或删除服务相关角色。

使用 IAM 创建 AWSServiceRoleForAmazonEMRServerless 服务相关角色

将以下语句添加到需要创建服务相关角色的 IAM 实体的权限策略。

{ "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::*:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWSServiceRoleForAmazonEMRServerless*", "Condition": {"StringLike": {"iam:AWSServiceName": "ops.emr-serverless.amazonaws.com"}} }

如果您删除该服务相关角色,然后需要再次创建,您可以使用相同流程在账户中重新创建此角色。当您创建新的 EMR Serverless 应用程序时,EMR Serverless 会再次为您创建服务相关角色。

您还可以使用 IAM 控制台通过 EMR Serverless 用例创建服务相关角色。在 AWS CLI 或 AWS API 中,使用 ops.emr-serverless.amazonaws.com 服务名称创建服务相关角色。有关更多信息,请参阅《IAM 用户指南》中的创建服务相关角色。如果您删除了此服务相关角色,可以使用同样的过程再次创建角色。

编辑 EMR Serverless 的服务相关角色

EMR Serverless 不允许您编辑 AWSServiceRoleForAmazonEMRServerless 服务相关角色,因为各种实体可能会引用该角色。您无法编辑 EMR Serverless 服务相关角色使用的 AWS 自有 IAM 策略,因为其包含 EMR Serverless 所需的所有必要权限。不过,您可以使用 IAM 编辑角色的说明。

使用 IAM 编辑 AWSServiceRoleForAmazonEMRServerless 服务相关角色的描述

将以下语句添加到需要编辑服务相关角色的描述的 IAM 实体的权限策略。

{ "Effect": "Allow", "Action": [ "iam: UpdateRoleDescription" ], "Resource": "arn:aws:iam::*:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWSServiceRoleForAmazonEMRServerless*", "Condition": {"StringLike": {"iam:AWSServiceName": "ops.emr-serverless.amazonaws.com"}} }

有关更多信息,请参阅《IAM 用户指南》 中的编辑服务相关角色

删除 EMR Serverless 的服务相关角色

如果不再需要使用某个需要服务相关角色的功能或服务,我们建议您删除该角色。这样可避免出现未被主动监控或维护的未使用实体。但是,必须先删除所有区域中的所有 EMR Serverless 应用程序,然后才能删除服务相关角色。

注意

如果在尝试删除与角色关联的资源时,EMR Serverless 服务正在使用该角色,那么删除可能会失败。如果发生这种情况,请等待几分钟后重试。

使用 IAM 删除 AWSServiceRoleForAmazonEMRServerless 服务相关角色

将以下语句添加到需要删除服务相关角色的 IAM 实体的权限策略。

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWSServiceRoleForAmazonEMRServerless*", "Condition": {"StringLike": {"iam:AWSServiceName": "ops.emr-serverless.amazonaws.com"}} }

使用 IAM 手动删除服务相关角色

使用 IAM 控制台、AWS CLI 或 AWS API 删除 AWSServiceRoleForAmazonEMRServerless 服务相关角色。有关更多信息,请参阅《IAM 用户指南》中的删除服务相关角色

EMR Serverless 服务相关角色的支持区域

EMR Serverless 支持在提供服务的所有区域使用服务相关角色。有关更多信息,请参阅 AWS 区域和端点