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 のサービス」を参照し、Service-linked roles (サービスにリンクされたロール) の列内で Yes (はい) と表記されたサービスを確認してください。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、[Yes] (はい) リンクを選択します。

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

EMR Serverless は、AWSServiceRoleForAmazonEMRServerless という名前のサービスリンクロールを使用して、EMR Serverless がユーザーに代わって 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 User Guide」(IAM ユーザーガイド) の「Service-linked role permissions」(サービスにリンクされたロールのアクセス権限) を参照してください。

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 はサービスリンクロールを再度作成します。

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 ユーザーガイド」の「サービスリンクロールの編集」を参照してください。

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 リージョンとエンドポイント」を参照してください。