

# 爬网程序先决条件
<a name="crawler-prereqs"></a>

爬网程序代入您在定义它时指定的 AWS Identity and Access Management（IAM）角色的权限。此 IAM 角色必须有权从您的数据存储中提取数据并将其写入数据目录。AWS Glue 控制台仅列出已为 AWS Glue 委托人服务附加信任策略的 IAM 角色。从控制台中，您还可以创建具有 IAM policy 的 IAM 角色，该策略允许访问爬网程序所访问的 Amazon S3 数据存储。有关为 AWS Glue 提供角色的更多信息，请参阅[适用于 AWS Glue 的基于身份的策略](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies)。

**注意**  
在爬取 Delta Lake 数据存储时，您必须拥有该 Amazon S3 位置的读/写权限。

对于您的爬网程序，您可以创建一个角色并附加以下策略：
+ `AWSGlueServiceRole` AWS 托管策略，授予对数据目录所需的权限
+ 授予数据源权限的内联策略。
+ 对角色授予 `iam:PassRole` 权限的内联策略。

一种更快的方法是让 AWS Glue 控制台爬网程序向导为您创建一个角色。它创建的角色专用于爬网程序，包括 `AWSGlueServiceRole` AWS 托管策略以及指定数据源所需的内联策略。

如果您为爬网程序指定现有角色，请确保它包含 `AWSGlueServiceRole` 策略或等效策略（或此策略的范围缩小版本），以及所需的内联策略。例如，对于 Amazon S3 数据存储，内联策略至少为以下内容：

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

****  

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

------

对于 Amazon DynamoDB 数据存储，策略至少为以下内容：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:DescribeTable",
        "dynamodb:Scan"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:111122223333:table/table-name*"
      ]
    }
  ]
}
```

------

此外，如果爬网程序读取 AWS Key Management Service（AWS KMS）加密的 Amazon S3 数据，则 IAM 角色必须具有 AWS KMS 密钥的解密权限。有关更多信息，请参阅 [步骤 2：为 AWS Glue 创建 IAM 角色](create-an-iam-role.md)。