当我尝试在 Amazon Athena 中使用已注册 AWS Lake Formation 的 Amazon Simple Storage Service (Amazon S3) 位置的数据库/表时,查询失败且显示错误“Insufficient Lake Formation permission(s) on
”(
上的 Lake Formation 权限不足)。但是,Athena AWS Identity and Access Management (IAM) 用户或角色拥有必要的 IAM 权限。
解决方法
当满足以下条件时,您会收到此错误:
- IAM 用户或角色尝试在使用 Lake Formation 注册的 Amazon S3 存储桶上创建或调整 Data Catalog 资源(数据库或表)。
- IAM 用户或角色在 Lake Formation 中没有相应的数据位置权限。
要解决此错误,您必须向您用于创建数据库或表的 IAM 用户或角色授予相应的数据位置权限。当您将 Athena 与 Lake Formation 结合使用时,除了 IAM 用户或角色所需的数据访问权限之外,请务必向 Lake Formation 中的 IAM 用户或角色授予所需的 S3 权限。数据访问权限允许 IAM 用户或角色对基础 Amazon S3 位置中的数据执行读取和写入操作。但是,Lake Formation 中的数据位置权限使 IAM 用户或角色能够创建和调整指向注册的 Amazon S3 位置的 Data Catalog 资源。
要解决此错误,请执行以下操作:
- 验证 Athena 中的 S3 路径是否已成功在 Lake Formation 中注册。
- 向 IAM 用户或角色授予所需的数据位置权限,以访问 S3 路径。
验证已在 Lake Formation 中注册数据湖位置
- 以数据湖管理员的角色登录到 AWS Lake Formation 控制台。
- 在导航窗格中的 Register and ingest(注册和提取)下,选择 Data lake locations(数据湖位置)。
在 Data lake locations(数据湖位置)列表中,验证 Data Catalog 资源指向的 S3 路径已在 Lake Formation 中注册。
通过 AWS Lake Formation 控制台授予数据位置权限
- 在导航窗格中,选择 Data locations(数据位置)。
- 选择 Grant(授予)。
- 在 Grant permissions(授予权限)对话框中,选择 My account(我的账户)。
- 对于 IAM users and roles(IAM 用户和角色),选择您想要为其授予权限的 IAM 用户或角色。
- 对于 Storage locations(存储位置),选择您从中收到错误的 S3 路径。
- 选择 Grant(授予)。
**注意:**仅当 S3 路径位于相同账户中时才执行这些步骤。如果 S3 路径位于不同账户中,请确保满足所有跨账户访问前提条件。然后,按照授予数据位置权限(外部账户)中提供的说明进行操作。
相关信息
授予数据位置权限