

# 步骤 2：为 AWS Glue 创建 IAM 角色
<a name="create-an-iam-role"></a>

您需要向您的 IAM 角色授予在 AWS Glue 代表您调用其他服务时可使用的权限。这包括对 Amazon S3 的访问权限，针对用于 AWS Glue 的任何源、目标、脚本和临时目录。爬网程序、任务和开发端点需要权限。

您通过使用 AWS Identity and Access Management（IAM）提供这些权限。请向您传递到 AWS Glue 的 IAM 角色添加一个策略。

****在任务编辑器中创建 IAM 角色****

1. 在 AWS Glue 控制台中创建任务时，查找角色部分。

1. 选择 **Create new role**（创建新角色）。

1. 将打开内联角色创建表单，您可以：
   + 指定**角色名称**；例如 `AWSGlueServiceRoleDefault`。
   + 自动选择托管策略 `AWSGlueServiceRole`。
   + 查看信任策略，以代入该角色。
   + 为元数据添加可选标签。

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

1. 自动为您的任务选择新创建的角色。

或者，您可以使用 IAM 控制台创建角色：

****使用适用于 AWS Glue 的 IAM 控制台创建 IAM 角色****

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在左侧导航窗格中，选择 **Roles (角色)**。

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

1.  对于可信实体类型，请选择 **AWS 服务**。然后，对于服务或应用场景，请查找并选择 **AWS Glue**。选择**下一步**。

1. 在**添加权限**页面上，选择包含所需权限的策略；例如，适用于一般 AWS Glue 权限的 AWS 托管式策略 `AWSGlueServiceRole` 和用于访问 Amazon S3 资源的 AWS 托管式策略 **AmazonS3FullAccess**。然后选择**下一步**。
**注意**  
请确保此角色中的策略之一授予针对您的 Amazon S3 源和目标的权限。您可能想要提供您自己的策略来访问特定 Amazon S3 资源。数据源需要 `s3:ListBucket` 和 `s3:GetObject` 权限。数据目标需要`s3:ListBucket`、`s3:PutObject` 和 `s3:DeleteObject` 权限。有关为您的资源创建 Amazon S3 策略的更多信息，请参阅[在策略中指定资源](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html)。有关示例 Amazon S3 策略，请参阅[编写 IAM policy：如何授予对 Amazon S3 存储桶的访问权限](https://aws.amazon.com/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/)。  
如果您计划访问使用 SSE-KMS 加密的 Amazon S3 资源和目标，请附加一个允许 AWS Glue 爬网程序、任务和开发终端节点解密数据的策略。有关更多信息，请参阅[使用具有 AWS KMS 托管式密钥的服务器端加密（SSE-KMS）保护数据](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)。  
示例如下：  

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt"
         ],
         "Resource": [
           "arn:aws:kms:*:111122223333:key/key-id"
         ]
       }
     ]
   }
   ```

1.  为角色命名并添加描述（可选），然后检查信任策略和权限。对于 **Role name (角色名称)**，输入您角色的名称，例如 `AWSGlueServiceRoleDefault`。使用以字符串 `AWSGlueServiceRole` 为前缀的名称创建角色,以允许角色从控制台用户传递到服务。AWS Glue 提供了要求 IAM 服务角色以 `AWSGlueServiceRole` 开头的策略。否则，您必须添加一个为您的用户授予对 IAM 角色的 `iam:PassRole` 权限的策略，以匹配您的命名约定。选择**创建角色**。
**注意**  
当您创建具有角色的笔记本时，该角色将传递至交互式会话，以便同一角色可以在两个位置使用。因此，`iam:PassRole` 权限需要成为角色策略的一部分。  
使用以下示例为您的角色创建新策略。将账号替换为您的账号，并将角色名称替换为您的角色名称。  

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "iam:PassRole",
         "Resource": "arn:aws:iam::090000000210:role/<role_name>"
       }
     ]
   }
   ```

1.  向角色添加标签（可选）。标签是您可以添加到 AWS 资源的键值对，用来帮助标识、组织或搜索资源。然后，选择**创建角色**。