実行 IAM ポリシー - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

実行 IAM ポリシー

EMR Serverless でジョブ実行を送信するときに、実行ロールに加えて実行 IAM ポリシーを指定できます。ジョブ実行によって引き受けられるアクセス許可は、実行ロールのアクセス許可と指定された実行 IAM ポリシーの共通部分です。

開始方法

実行 IAM ポリシーを使用する手順:

emr-serverless アプリケーションを作成するか、既存のアプリケーションを使用して、次の aws cli を実行して、インライン IAM ポリシーでジョブ実行を開始します。

aws emr-serverless start-job-run --region us-west-2 \ --application-id application-id \ --execution-role-arn execution-role-arn \ --job-driver job-driver-options \ --execution-iam-policy '{"policy": "inline-policy"}'

CLI コマンドの例

次のポリシーがマシンの policy.json ファイルに格納されている場合:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-test-bucket", "arn:aws:s3:::my-test-bucket/*" ] } ] }

その後、次の AWS CLI コマンドを使用して、このポリシーでジョブを開始できます。

aws emr-serverless start-job-run --region us-west-2 \ --application-id application-id \ --execution-role-arn execution-role-arn \ --job-driver job-driver-options --execution-iam-policy '{ "policy": "'"$(sed 's/"/\"/g' policy.json | tr -d '[:space:]')"'" }'

AWS とカスタマー管理ポリシーの両方を使用し、ARNsを通じて指定することもできます。

aws emr-serverless start-job-run --region us-west-2 \ --application-id application-id \ --execution-role-arn execution-role-arn \ --job-driver job-driver-options --execution-iam-policy '{ "policyArns": [ "arn:aws:iam::aws:policy/AmazonS3FullAccess", "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess" ] }'

同じリクエストでインライン IAM ポリシーとマネージドポリシー ARNs の両方を指定することもできます。

aws emr-serverless start-job-run --region us-west-2 \ --application-id application-id \ --execution-role-arn execution-role-arn \ --job-driver job-driver-options --execution-iam-policy '{ "policy": "'"$(sed 's/"/\"/g' policy.json | tr -d '[:space:]')"'", "policyArns": [ "arn:aws:iam::aws:policy/AmazonS3FullAccess", "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess" ] }'

重要な注意事項

  • execution-role-policypolicyフィールドの最大長は 2048 文字です。

  • execution-iam-policypolicyフィールドで指定されたインライン IAM ポリシー文字列は JSON 文字列標準に準拠している必要があり、上記の例のように改行や引用符はエスケープされません。

  • 最大 10 個の管理ポリシー ARNs のリストは、 execution-iam-policypolicyArnsフィールドの値として指定できます。

  • 管理ポリシー ARNs は、有効な AWS またはカスタマー管理ポリシー ARN のリストである必要があります。カスタマー管理ポリシー ARN を指定する場合、ポリシーは EMR-S JobRun の同じ AWS アカウントに属している必要があります。

  • インライン IAM ポリシーと 管理ポリシーの両方を使用する場合、インラインポリシーと 管理ポリシーの組み合わせに使用するプレーンテキストは 2,048 文字を超えることはできません。

  • JobRun によって引き受けられるアクセス許可は、実行ロールのアクセス許可と指定された実行 IAM ポリシーの共通部分です。

ポリシーの交差

ジョブ実行によって引き受けられるアクセス許可は、実行ロールのアクセス許可と指定された実行 IAM ポリシーの共通部分です。つまり、JobRun を機能させるには、必要なアクセス許可を両方の場所で指定する必要があります。ただし、更新または上書きする予定のないアクセス許可については、インラインポリシーで追加の一括許可ステートメントを指定できます。

次の実行 IAM ロールポリシーを前提としています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action":[ "logs:DescribeLogGroups" ], "Resource":[ "arn:aws:logs:us-west-2:12345678910:log-group::log-stream" ] }, { "Effect": "Allow", "Action": [ "dynamodb:DescribeTable" ], "Resource": [ "arn:aws:dynamodb:*:*:table/MyCompany1table" ] } ] }

また、次のインライン IAM ポリシーがあります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-test-bucket/tenant1", "arn:aws:s3:::my-test-bucket/tenant1/*" ] }, { "Effect": "Allow", "Action":[ "logs:*", "dynamodb:*", ], "Resource":[ "*" ] } ] }

JobRun によって引き受けられるアクセス許可は次のとおりです。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-test-bucket/tenant1", "arn:aws:s3:::my-test-bucket/tenant1/*" ] }, { "Effect": "Allow", "Action":[ "logs:DescribeLogGroups" ], "Resource":[ "arn:aws:logs:us-west-2:12345678910:log-group::log-stream" ] }, { "Effect": "Allow", "Action": [ "dynamodb:DescribeTable" ], "Resource": [ "arn:aws:dynamodb:*:*:table/MyCompany1table" ] } ] }