解决爬网程序使用 Lake Formation 凭证时出现的爬网程序错误 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

解决爬网程序使用 Lake Formation 凭证时出现的爬网程序错误

使用 Lake Formation 凭证配置爬网程序时,通过以下信息诊断和修复各种问题。

错误:S3 位置:s3://examplepath 未注册

要让爬网程序使用 Lake Formation 凭证运行,您需要先设置 Lake Formation 权限。要解决此错误,请向 Lake Formation 注册目标 Amazon S3 位置。有关更多信息,请参阅 Registering an Amazon S3 location(注册 Amazon S3 位置)。

错误:用户/角色未授权执行:资源上的 lakeformation:GetDataAccess

请使用 IAM 控制台或 Amazon CLI 将 lakeformation:GetDataAccess 权限添加至爬网程序。获得此权限后,Lake Formation 将授权访问数据的临时凭证请求。请参见以下策略:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" } }

错误:其上的 Lake Formation 权限不足(数据库名称:exampleDatabase,表名:exampleTable)

在 Lake Formation 控制台 (https://console.aws.amazon.com/lakeformation/) 中,授予爬网程序针对数据库的角色访问权限( CreateDescribeAlter),该数据库指定为输出数据库。您也可以授予对表的权限。有关更多信息,请参阅 Granting database permissions using the named resource method(使用 指定的资源方法授予数据库权限)。

错误:s3://examplepath 上的 Lake Formation 权限不足

  1. 跨账户爬取

    1. 使用注册 Amazon S3 存储桶的账户(账户 B)登录 Lake Formation 控制台 (https://console.aws.amazon.com/lakeformation/)。向将运行爬网程序的账户(账户 A)授予数据位置权限。这将允许爬网程序从目标 Amazon S3 位置读取数据。

    2. 在创建爬网程序的账户(账户 A)中,授予用于爬网程序运行的 IAM 角色目标 Amazon S3 位置上的数据位置权限,以使爬网程序能够从 Lake Formation 中的目标读取数据。有关更多信息,请参阅 Granting data location permissions (external account)(授予数据位置权限(外部账户))。

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

有关使用 Lake Formation 凭证配置爬网程序的常见问题

  1. 如何使用 Amazon 控制台将爬网程序配置为使用 Lake Formation 凭证运行?

    在 Amazon Glue 控制台(https://console.aws.amazon.com/glue/)中配置爬网程序时,选择选项 Use Lake Formation credentials for crawling Amazon S3 data source(使用 Lake Formation 凭证爬取 Amazon S3 数据来源)。对于跨账户爬取,请指定向 Lake Formation 注册的目标 Amazon S3 位置的 Amazon Web Services 账户 ID。对于账户内爬取,accountId 字段是可选的。

  2. 如何使用 Amazon CLI 将爬网程序配置为使用 Lake Formation 凭证运行?

    CreateCrawler API 调用期间,添加 LakeFormationConfiguration

    "LakeFormationConfiguration": { "UseLakeFormationCredentials": true, "AccountId": "111111111111" (AWS account ID where the target Amazon S3 location is registered with Lake Formation) }
  3. 使用 Lake Formation 凭证的爬网程序支持哪些目标?

    使用 Lake Formation 凭证的爬网程序仅支持 Amazon S3(账户内和跨账户爬取)和账户内数据目录目标(其底层位置为 Amazon S3)和 Apache Iceberg 目标。

  4. 作为使用 Lake Formation 凭证的单个爬网程序的一部分,我是否可以爬取多个 Amazon S3 桶?

    不可以,对于使用 Lake Formation 凭证售卖的爬取目标,基础 Amazon S3 位置必须属于同一个桶。例如,如果它们在同一个桶 (bucket1) 下,则客户可以使用多个目标位置 (s3://bucket1/folder1, s3://bucket1/folder2)。不支持指定不同的桶 (s3://bucket1/folder1, s3://bucket2/folder2)。