

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

# 开始使用 Amazon EMR Serverless
<a name="getting-started"></a>

本教程可帮助您在部署示例 Spark 或 Hive 工作负载时开始使用 EMR Serverless。您将创建、运行和调试自己的应用程序。我们将在本教程的大部分内容中展示默认选项。

在启动 EMR Serverless 应用程序之前，请完成以下任务。

**Topics**
+ [授予使用 EMR Serverless 的权限](#gs-permissions)
+ [准备 EMR Serverless 存储](#gs-prepare-storage)
+ [创建 EMR Studio 运行交互式工作负载](#gs-interactive)
+ [创建作业运行时角色](#gs-runtime-role)
+ [从控制台开始使用 EMR Serverless](gs-console.md)
+ [从这里开始 AWS CLI](gs-cli.md)

## 授予使用 EMR Serverless 的权限
<a name="gs-permissions"></a>

要使用 EMR Serverless，您需要具有附加策略的用户或 IAM 角色，可授予使用 EMR Serverless 的权限。要创建用户并向该用户附加适当的策略，请按照 [授予权限](setting-up.md#setting-up-iam) 中的说明操作。

## 准备 EMR Serverless 存储
<a name="gs-prepare-storage"></a>

在本教程中，您将使用 S3 存储桶来存储示例 Spark 或 Hive 工作负载（使用 EMR Serverless 应用程序运行）的输出文件和日志。要创建存储桶，请按照《Amazon Simple Storage Service 控制台用户指南》**中[创建存储桶](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)的说明操作。将对 `amzn-s3-demo-bucket` 的进一步引用替换为新建存储桶的名称。

## 创建 EMR Studio 运行交互式工作负载
<a name="gs-interactive"></a>

如果要使用 EMR Serverless 通过托管在 EMR Studio 中的 Notebook 执行交互式查询，则需要指定一个 S3 存储桶，并[为 EMR Serverless 指定一个最低服务角色](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-service-role.html#emr-studio-service-role-serverless)，以创建 Workspace。有关设置步骤，请参阅《Amazon EMR 管理指南》**中的[设置 EMR Studio](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-set-up.html)。有关交互式工作负载的更多信息，请参阅 [通过 EMR Studio 使用 EMR Serverless 运行交互式工作负载](interactive-workloads.md)。

## 创建作业运行时角色
<a name="gs-runtime-role"></a>

在 EMR Serverless 中运行的作业使用运行时角色，该角色在运行时为特定资源 AWS 服务 和资源提供精细权限。在本教程中，数据和脚本存放在公有 S3 存储桶中。存储桶 `amzn-s3-demo-bucket` 存储输出。

要设置作业运行时角色，先创建一个具有信任策略的运行时角色，以便 EMR Serverless 可以使用新角色。然后，将所需的 S3 访问策略附加到该角色。以下步骤将指导您完成此过程。

------
#### [ Console ]

1. 导航到 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 控制台。

1. 在左侧导航窗格中，选择 **Policies（策略）**。

1. 选择**创建策略**。

1. **创建策略**页面将在新选项卡中打开。选择**策略编辑器**为 JSON，并在下面粘贴策略 JSON。
**重要**  
将以下策略中的 `amzn-s3-demo-bucket` 替换为 [准备 EMR Serverless 存储](#gs-prepare-storage) 中创建的实际存储桶名称。这是 S3 访问的基本策略。有关更多作业运行时角色示例，请参阅 [Amazon EMR Serverless 的作业运行时角色](security-iam-runtime-role.md)。

------
#### [ 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": "FullAccessToOutputBucket",
         "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": [
           "*"
         ]
       }
     ]
   }
   ```

------

1. 选择**下一步**为您的策略输入名称（如 `EMRServerlessS3AndGlueAccessPolicy`），然后选择**创建策略** 

1. 在 IAM 控制台的左侧导航窗格中，选择**角色**。

1. 选择**创建角色**。

1. 对于角色类型，选择**自定义信任策略**并粘贴以下信任策略。这样，提交到您的 Amazon EMR 无服务器应用程序的任务就可以 AWS 服务 代表您访问其他应用程序。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "sts:AssumeRole"
         ],
         "Resource": "arn:aws:iam::123456789012:role/EMRServerlessExecutionRole",
         "Sid": "AllowSTSAssumerole"
       }
     ]
   }
   ```

------

1. 选择 “**下一步**” 导航至 “**添加权限**” 页面，然后选择 **EMRServerlessS3 AndGlueAccessPolicy**。

1. 在**命名、查看和创建**页面上，在**角色名称**中输入角色的名称，例如 `EMRServerlessS3RuntimeRole`。要创建此 IAM 角色，请选择**创建角色**。

------
#### [ CLI ]

1. 创建一个名为 `emr-serverless-trust-policy.json` 的文件，其中包含要用于 IAM 角色的信任策略。该文件应包含以下策略。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "EMRServerlessTrustPolicy",
         "Action": [
           "sts:AssumeRole"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:iam::123456789012:role/EMRServerlessExecutionRole"
       }
     ]
   }
   ```

------

1. 创建命名为 `EMRServerlessS3RuntimeRole` 的 IAM 角色。使用您在上一步中创建的信任策略。

   ```
   aws iam create-role \
       --role-name EMRServerlessS3RuntimeRole \
       --assume-role-policy-document file://emr-serverless-trust-policy.json
   ```

   记下输出中的 ARN。在作业提交时，您可以使用新角色的 ARN，后面称为 `job-role-arn`。

1. 创建一个名为 `emr-sample-access-policy.json` 的文件，来定义工作负载的 IAM 策略。这提供了对公有 S3 存储桶中存储的脚本和数据的读取访问权限以及对 `amzn-s3-demo-bucket` 的读写访问权限。
**重要**  
将以下策略中的 `amzn-s3-demo-bucket` 替换为 [准备 EMR Serverless 存储](#gs-prepare-storage) 中创建的实际存储桶名称。这是 Glue 和 AWS S3 访问的基本策略。有关更多作业运行时角色示例，请参阅 [Amazon EMR Serverless 的作业运行时角色](security-iam-runtime-role.md)。

------
#### [ 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": "FullAccessToOutputBucket",
         "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": [
           "*"
         ]
       }
     ]
   }
   ```

------

1. 使用您在**步骤 3** 中创建的策略文件创建一个名为 `EMRServerlessS3AndGlueAccessPolicy` 的 IAM 策略。记下输出中的 ARN，因为下一步将使用新策略的 ARN。

   ```
   aws iam create-policy \
       --policy-name EMRServerlessS3AndGlueAccessPolicy \
       --policy-document file://emr-sample-access-policy.json
   ```

   记下输出中新策略的 ARN。下一步将用 `policy-arn` 来替代。

1. 将 IAM 策略 `EMRServerlessS3AndGlueAccessPolicy` 附加到作业运行时角色 `EMRServerlessS3RuntimeRole`。

   ```
   aws iam attach-role-policy \
       --role-name EMRServerlessS3RuntimeRole \
       --policy-arn policy-arn
   ```

------