将爬网程序配置为使用 Lake Formation 凭据 - AWS Glue

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

将爬网程序配置为使用 Lake Formation 凭据

您可以将爬网程序配置为使用 AWS Lake Formation 凭证访问底层 Amazon S3 数据存储或位于相同或另一个 AWS 账户位置的 Amazon S3 数据存储 AWS 账户 或数据目录表。如果爬网程序与 Data Catalog 表位于同一账户中,则可以将现有 Data Catalog 表配置为爬网程序的目标。使用 Data Catalog 表作为爬网程序的目标时,目前只允许具有单个目录表的单个目录目标。

注意

将 Data Catalog 表定义为爬网程序目标时,请确保 Data Catalog 表的基础位置是 Amazon S3 位置。使用 Lake Formation 凭证的爬网程序仅支持具有基础 Amazon S3 位置的 Data Catalog 目标。

爬网程序与注册的 Amazon S3 位置或 Data Catalog 表位于同一账户(账户内爬取)时所需的设置

要允许爬网程序使用 Lake Formation 凭证访问数据存储或 Data Catalog 表,您需要向 Lake Formation 注册数据位置。此外,爬网程序的IAM角色必须有权从注册 Amazon S3 存储桶的目标读取数据。

您可以使用 AWS Management Console 或 AWS Command Line Interface (AWS CLI) 完成以下配置步骤。

AWS Management Console
  1. 在配置爬网程序以访问爬网程序源之前,向 Lake Formation 注册数据存储或 Data Catalog 的数据位置。在 Lake Formation 控制台 (https://console.aws.amazon.com/lakeformation/) 中,将 Amazon S3 位置注册为定义爬虫 AWS 账户 所在的数据湖的根位置。有关更多信息,请参阅 Registering an Amazon S3 location(注册 Amazon S3 位置)。

  2. 向用于爬虫运行的IAM角色授予数据定位权限,以便爬网程序可以从 Lake Formation 中的目标读取数据。有关更多信息,请参阅 Granting data location permissions (same account)(授予数据位置权限(同一账户))。

  3. 授予爬网程序角色访问数据库的权限(Create),该数据库被指定为输出数据库。有关更多信息,请参阅 Granting database permissions using the Lake Formation console and the named resource method(使用 Lake Formation 控制台和指定的资源方法授予数据库权限)。

  4. 在IAM控制台 (https://console.aws.amazon.com/iam/) 中,为爬虫创建一个IAM角色。将 lakeformation:GetDataAccess 策略添加到该角色。

  5. 在 AWS Glue 控制台 (https://console.aws.amazon.com/glue/) 中,在配置爬网程序时,选择 “使用 Lake Formation 凭证抓取 Amazon S3 数据源” 选项。

    注意

    对于账户内抓取,该 accountId 字段是可选字段。

AWS CLI
aws glue --profile demo create-crawler --debug --cli-input-json '{ "Name": "prod-test-crawler", "Role": "arn:aws:iam::111122223333:role/service-role/AWSGlueServiceRole-prod-test-run-role", "DatabaseName": "prod-run-db", "Description": "", "Targets": { "S3Targets":[ { "Path": "s3://crawl-testbucket" } ] }, "SchemaChangePolicy": { "UpdateBehavior": "LOG", "DeleteBehavior": "LOG" }, "RecrawlPolicy": { "RecrawlBehavior": "CRAWL_EVERYTHING" }, "LineageConfiguration": { "CrawlerLineageSettings": "DISABLE" }, "LakeFormationConfiguration": { "UseLakeFormationCredentials": true, "AccountId": "111122223333" }, "Configuration": { "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" } }, "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" } }, "CrawlerSecurityConfiguration": "", "Tags": { "KeyName": "" } }'