EMR Serverless のサービスリンクロールの使用 - Amazon EMR

EMR Serverless のサービスリンクロールの使用

Amazon EMR Serverless は、AWS Identity and Access Management (IAM) のサービスリンクロールを使用しています。サービスリンクロールは、EMR Serverless に直接リンクされた一意のタイプの IAM ロールです。サービスリンクロールは、EMR Serverless によって事前定義されており、お客様の代わりにサービスから他の AWS サービスを呼び出す必要のあるアクセス権限がすべて含まれています。

サービスリンクロールを使用すると、必要なアクセス権限を手動で追加する必要がなくなるため、EMR Serverless の設定が簡単になります。EMR Serverless は、サービスリンクロールのアクセス権限を定義します。特に定義されている場合を除き、EMR Serverless のみがそのロールを引き受けることができます。定義される許可は信頼ポリシーと許可ポリシーに含まれており、その許可ポリシーを他の IAM エンティティにアタッチすることはできません。

サービスリンクロールを削除するには、最初に関連リソースを削除する必要があります。これにより、不注意でリソースにアクセスするアクセス許可の削除が防止され、EMR Serverless リソースは保護されます。

サービスにリンクされたロールをサポートする他のサービスについては、「IAM と連動する AWS のサービス」を参照し、[サービスにリンクされたロール] の列内で [はい] と表記されたサービスを確認してください。サービスリンクロールに関するドキュメントをサービスにアクセスするには、リンクで [はい] を選択します。

EMR Serverless のサービスリンクロールのアクセス許可

EMR Serverless は、AWSServiceRoleForAmazonEMRServerless という名前のサービスリンクロールを使用して、EMR Serverless がユーザーに代わって AWS API を呼び出します。

AWSServiceRoleForAmazonEMRServerless サービスリンクロールは、次のサービスを信頼してロールを引き受けます。

  • ops.emr-serverless.amazonaws.com

AmazonEMRServerlessServiceRolePolicy という名前のロール許可ポリシーによって、EMR Serverless が次のアクションを指定されたリソースで完了できるようになります。

注記

マネージドポリシーの内容は変わるため、ここに示すポリシーは古くなっている可能性があります。AWS マネジメントコンソールで、最新のポリシー AmazonEMRServerlessServiceRolePolicy を確認してください。

  • アクション:ec2:CreateNetworkInterface

  • アクション:ec2:DeleteNetworkInterface

  • アクション:ec2:DescribeNetworkInterfaces

  • アクション:ec2:DescribeSecurityGroups

  • アクション:ec2:DescribeSubnets

  • アクション:ec2:DescribeVpcs

  • アクション:ec2:DescribeDhcpOptions

  • アクション:ec2:DescribeRouteTables

  • アクション:cloudwatch:PutMetricData

以下は AmazonEMRServerlessServiceRolePolicy ポリシー全体です。

JSON
{ "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 プリンシパルがこのロールを引き受けることを許可するには、このロールに以下の信頼ポリシーをアタッチします。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::123456789012:role/aws-service-role/emr-serverless.amazonaws.com/AWSServiceRoleForEMRServerless", "Sid": "AllowSTSAssumerole" } ] }

サービスリンク役割の作成、編集、削除を IAM エンティティ (ユーザー、グループ、役割など) に許可するにはアクセス許可を設定する必要があります。詳細については「IAM ユーザーガイド」の「サービスにリンクされたロールの作成」を参照してください。

EMR Serverless のサービスリンクロールの作成

サービスリンクロールを手動で作成する必要はありません。AWS マネジメントコンソール (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 はサービスリンクロールを再度作成します。

EMR Serverless のユースケースでサービスリンクロールを作成する場合も、IAM コンソールを使用できます。AWS CLI または AWS API では、ops.emr-serverless.amazonaws.com サービス名を使用してサービスにリンクされたロールを作成します。詳細については、「IAM ユーザーガイド」の「サービスにリンクされたロールの作成」を参照してください。このサービスリンクロールを削除しても、同じ方法でロールを再作成できます。

EMR Serverless のサービスリンクロールの編集

EMR Serverless では、AWSServiceRoleForAmazonEMRServerless サービスリンクロールを編集できません。さまざまなエンティティがロールを参照している可能性があるためです。EMR Serverless が必要とするすべてのアクセス許可が含まれているため、EMR Serverless のサービスリンクロールが使用する AWS 所有の IAM ポリシーは、編集できません。ただし、IAM を使用してロールの説明を編集することはできます。

AWSServiceRoleForAmazonEMRServerless サービスリンクロールの説明を IAM を使用して編集するには

サービスにリンクされたロールの説明を編集する必要のある 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 ユーザーガイド」の「Editing a service-linked role」を参照してください。

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 ユーザーガイド」の「Deleting a service-linked role」を参照してください。

EMR Serverless のサービスリンクロールをサポートするリージョン

EMR Serverless は、このサービスが利用可できるすべてのリージョンで、サービスリンクロールの使用をサポートします。詳細については、「AWS サービスエンドポイント」を参照してください。