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

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

您可以将爬网程序配置为使用 AWS Lake Formation 凭证访问 Amazon S3 数据存储库或 Data Catalog 表的证书,该表包含相同 AWS 账户 或不同 AWS 账户 中的基础 Amazon S3 位置。如果爬网程序与 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 角色授予 Data location(数据位置)权限,以便爬网程序可以从 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/)中配置爬网程序时,选择选项 Use Lake Formation credentials for crawling Amazon S3 data source(使用 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": "" } }'