Amazon EMR Serverless 的 Job 运行时角色 - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon EMR Serverless 的 Job 运行时角色

您可以指定EMR无服务器作业在代表您调用其他服务时可以承担的IAM角色权限。这包括访问任何数据源、目标以及其他 AWS 资源(例如 Amazon Redshift 集群和 DynamoDB 表)的 Amazon S3。要了解有关如何创建角色的更多信息,请参阅 创建作业运行时角色

运行时策略示例

您可以将运行时策略(如下所示)附加到作业运行时角色。以下作业运行时策略允许:

  • 阅读带EMR示例的 Amazon S3 存储桶访问权限。

  • 对 S3 存储桶的完全访问权限。

  • 创建并读取 AWS Glue 数据目录的权限。

要添加对 DynamoDB 等其他 AWS 资源的访问权限,您需要在创建运行时角色时在策略中包含这些资源的权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadAccessForEMRSamples", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.elasticmapreduce", "arn:aws:s3:::*.elasticmapreduce/*" ] }, { "Sid": "FullAccessToS3Bucket", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Sid": "GlueCreateAndReadDataCatalog", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:GetDataBases", "glue:CreateTable", "glue:GetTable", "glue:UpdateTable", "glue:DeleteTable", "glue:GetTables", "glue:GetPartition", "glue:GetPartitions", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetUserDefinedFunctions" ], "Resource": ["*"] } ] }

传递角色权限

您可以将IAM权限策略附加到用户的角色,以允许该用户仅传递已批准的角色。这允许管理员控制哪些用户可以将特定的作业运行时角色传递给 EMR Serverless 作业。要了解有关设置权限的更多信息,请参阅向用户授予将角色传递给 AWS 服务的权限

以下是允许将作业运行时角色传递给 EMR Serverless 服务主体的示例策略。

{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::1234567890:role/JobRuntimeRoleForEMRServerless", "Condition": { "StringLike": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } }

与运行时角色关联的托管权限策略

当您通过 EMR Studio 控制台向EMR无服务器提交作业运行时,有一个步骤是选择要与应用程序关联的运行时角色。控制台中的每个选项都有与之相关的底层托管策略,这些策略需要注意。这三个选项如下:

  1. 所有存储桶 — 当您选择此选项时,它会指定 AmazonS3 FullAccess AWS 托管策略,该策略提供对所有存储桶的完全访问权限。

  2. 特定存储桶 — 这指定了您选择的每个存储桶的 Amazon 资源名称 (ARN) 标识符。不包括底层托管策略。

  3. — 不包括托管策略权限。

我们建议添加特定的存储桶。如果您选择所有存储桶,请记住,它会为所有存储分区设置完全访问权限。