如何将爬网程序配置为使用 Lake Formation 凭证 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

您可以将爬网程序配置为使用 Amazon Lake Formation 凭证访问 Amazon S3 数据存储库或 Data Catalog 表的证书,该表包含相同 Amazon Web Services 账户 或不同 Amazon Web Services 账户 中的基础 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 桶的注册目标读取数据的权限。

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

Amazon Web Services Management Console
  1. 在配置爬网程序以访问爬网程序源之前,向 Lake Formation 注册数据存储或 Data Catalog 的数据位置。在 Lake Formation 控制台(https://console.aws.amazon.com/lakeformation/)中,将 Amazon S3 位置注册为定义爬网程序的 Amazon Web Services 账户 中数据湖的根位置。有关更多信息,请参阅 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. 在 Amazon Glue 控制台(https://console.aws.amazon.com/glue/)中配置爬网程序时,选择选项 Use Lake Formation credentials for crawling Amazon S3 data source(使用 Lake Formation 凭证爬取 Amazon S3 数据来源)。

    注意

    accountId 字段对于账户内爬取是可选的。

Amazon 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": "" } }'