如何解决 Athena 中的 Lake Formation 权限问题?

2 分钟阅读
0

由于“Insufficient Lake Formation permissions”或“COLUMN_NOT_FOUND”错误,我的 Amazon Athena 查询失败。

解决方法

对于收到的错误消息,请按照下面的故障排除步骤进行操作。

错误“Insufficient Lake Formation permissions on Amazon_S3_location”

当 AWS Identity and Access Management(IAM)用户或角色存在以下情形时,就会出现此错误:

  • IAM 用户或角色没有 Lake Formation 提供的相应 Amazon Simple Storage Service(Amazon S3)数据位置权限。
  • IAM 用户或角色试图在向 AWS Lake Formation 注册的 Amazon S3 存储桶上创建或更改 Data Catalog 资源

要解决此错误,必须向用于创建数据库或表的 IAM 用户或角色授予数据位置权限。当将 Athena 与 Lake Formation 一起使用时,请确保向 Lake Formation 的 IAM 用户或角色授予必需的 S3 权限。此外,请确保授予 IAM 用户或角色所需的数据访问权限。

数据访问权限允许 IAM 用户或者角色在 Amazon S3 位置读取和写入数据。但是,Lake Formation 中的数据位置权限允许 IAM 用户或角色创建和更改 Data Catalog 资源。Data Catalog 资源指向注册的 Amazon S3 位置。

验证数据湖位置是否已在 Lake Formation 中注册

  1. 打开 AWS Lake Formation 控制台
  2. 在导航窗格的管理下,选择数据湖位置
  3. 数据湖位置中,检查 Data Catalog 资源指向的 S3 路径是否已在 Lake Formation 中注册。

从 AWS Lake Formation 控制台授予数据位置权限

  1. 在导航窗格中,选择数据位置
  2. 选择授予
  3. 授予权限对话框中,选择我的帐户
  4. 对于 IAM 用户和角色,选择想要授予权限的 IAM 用户或角色。
  5. 对于存储位置,选择从中收到错误的 S3 路径。
  6. 选择授予

注意: 仅当 S3 路径位于同一账户内时,才执行这些步骤。如果 S3 路径位于其他账户中,请首先确保满足所有跨账户访问先决条件。然后,按照 Granting data location permissions (external account) 中提供的说明进行操作。

有关更多信息,请参阅 Granting data location permissions (same account)

错误“Insufficient Lake Formation permissions on database_name”

按照以下步骤授予 IAM 用户或角色对数据库的权限。

  1. 打开 Lake Formation 控制台
  2. 在导航窗格中,选择数据库
  3. 选择您的数据库名称,选择操作,然后选择授予
  4. 主体下,选择 IAM 用户和角色
  5. 对于 IAM 用户和角色,选择要向其授予对数据库的权限的 IAM 用户或角色。
  6. LF 标签或目录资源下,选择命名数据目录资源
  7. 数据库权限下,选择描述。
    注意:
    还可以根据自己的用例添加其他权限。
  8. 选择授予

错误“Insufficient Lake Formation permissions: Required Create Table on database_name”

按照下面的步骤向数据库授予 IAM 权限。

  1. 打开 Lake Formation 控制台
  2. 在导航窗格的权限下,选择数据湖权限
  3. 选择授予
  4. 主体下,选择 IAM 用户和角色
  5. 对于 IAM 用户和角色,选择要用于 Athena 的 IAM 用户或角色。
  6. LF 标签或目录资源下,选择命名数据目录资源
  7. 对于数据库,选择 IAM 用户或角色写入的数据库。
  8. 数据库权限下,根据您的用例选择创建表描述
    注意: IAM 用户或角色必须对数据库同时具有描述创建表权限才能创建表。
  9. 选择授予

错误“COLUMN_NOT_FOUND: line 1:8: SELECT * not allowed from relation that has no columns”

按照以下步骤检查数据库的 DESCRIBE 权限。然后,检查表的 DESCRIBESELECT 权限。

注意: Lake Formation 管理员可以在 Athena 控制台中查看数据库和表,但需要所需的权限才能查询数据。

使用命名资源方法授予数据库权限

  1. 打开 Lake Formation 控制台
  2. 在导航窗格的权限下,选择数据湖权限
  3. 选择授予
  4. 主体下,选择 IAM 用户和角色
  5. 对于 IAM 用户和角色,选择想对 Athena 使用的 IAM 用户或角色。
  6. LF 标签或目录资源下,选择命名数据目录资源
  7. 对于数据库,为您的表选择数据库。
  8. 数据库权限下,选择描述
  9. 选择授予

有关更多信息,请参阅 Granting database permissions using the named resource method

使用命名资源方法授予表权限

  1. 打开 Lake Formation 控制台
  2. 在导航窗格的权限下,选择数据湖权限
  3. 选择授予
  4. 主体下,选择 IAM 用户和角色
  5. 对于 IAM 用户和角色,选择想对 Athena 使用的 IAM 用户或角色。
  6. LF 标签或目录资源下,选择命名数据目录资源
  7. 对于数据库,选择您的数据库。
  8. 对于,选择一个或多个表,或选择所有表
  9. 表权限下,选择选择描述以运行 SELECT 查询,或为您的用例选择表权限。
  10. 选择授予

注意: 还可以通过表的资源链接授予对表的权限。为此,在页面上,选择一个资源链接,选择操作,然后选择在目标上授权。有关更多信息,请参阅 How resource links work in Lake Formation

相关信息

Granting data location permissions

AWS 官方
AWS 官方已更新 7 个月前