

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

# Amazon EMR Serverless 的作业运行时角色
<a name="security-iam-runtime-role"></a>

您可以指定 EMR Serverless 作业运行在代表您调用其他服务时可以代入的 IAM 角色权限。这包括访问任何数据源、目标以及其他 AWS 资源（例如 Amazon Redshift 集群和 DynamoDB 表）的 Amazon S3。要了解有关如何创建角色的更多信息，请参阅 [创建作业运行时角色](getting-started.md#gs-runtime-role)。

**运行时策略示例**

您可以将运行时策略（如下所示）附加到作业运行时角色。以下作业运行时策略允许：
+ 对包含 EMR 示例的 Amazon S3 存储桶的读取访问权限。
+ 对 S3 存储桶的完全访问权限。
+ 创建并读取 AWS Glue 数据目录的权限。

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

------
#### [ JSON ]

****  

```
{
  "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 服务的权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)。

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

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

## 与运行时角色关联的托管权限策略
<a name="security-iam-user-access-policies-permissions"></a>

当您通过 EMR Studio 控制台向 EMR Serverless 提交作业运行时，有一个步骤需要您选择要与您的应用程序关联的**运行时角色**。控制台中的每个选择都有关联的底层托管策略，了解这些策略非常重要。这三个选择如下：

1. **所有存储桶** — 当您选择此选项时，它会指定 [AmazonS3 FullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3FullAccess.html) AWS 托管策略，该策略提供对所有存储桶的完全访问权限。

1. **特定存储桶**：这指定您选择的每个存储桶的 Amazon 资源名称（ARN）标识符。不包括底层托管策略。

1. **无**：不包括托管策略权限。

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