AWS Glue 无法从爬虫创建数据库:权限被拒绝

Posted

技术标签:

【中文标题】AWS Glue 无法从爬虫创建数据库:权限被拒绝【英文标题】:AWS Glue cannot create database from crawler: permission denied 【发布时间】:2019-12-26 03:05:38 【问题描述】:

我正在尝试在 S3 存储桶上使用 AWS Glue 爬虫来填充 Glue 数据库。我运行 Create Crawler 向导,选择我的数据源(带有 avro 文件的 S3 存储桶),让它创建 IAM 角色并运行它,我收到以下错误:

Database does not exist or principal is not authorized to create tables. (Database name: zzz-db, Table name: avroavro_all) (Service: AWSGlue; Status Code: 400; Error Code: AccessDeniedException; Request ID: 78fc18e4-c383-11e9-a86f-736a16f57a42). For more information, see Setting up IAM Permissions in the Developer Guide (http://docs.aws.amazon.com/glue/latest/dg/getting-started-access.html).

我尝试在新的空白数据库中创建此表(与现有的带有表的数据库相反),尝试为名称添加前缀,尝试获取不同的架构,并尝试使用具有管理员访问权限的现有角色。我虽然后者可以工作,但我一直收到同样的错误,不知道为什么。

明确地说,我创建的服务角色有几个策略,我假设其前提条件足以创建表:

原木原木:


19:52:52
[10cb3191-9785-49dc-8935-fb02dcbd69a3] BENCHMARK : Running Start Crawl for Crawler avro
19:53:22
[10cb3191-9785-49dc-8935-fb02dcbd69a3] BENCHMARK : Classification complete, writing results to database zzz-db
19:53:22
[10cb3191-9785-49dc-8935-fb02dcbd69a3] INFO : Crawler configured with SchemaChangePolicy "UpdateBehavior":"UPDATE_IN_DATABASE","DeleteBehavior":"DEPRECATE_IN_DATABASE".
19:53:34
[10cb3191-9785-49dc-8935-fb02dcbd69a3] ERROR : Insufficient Lake Formation permission(s) on s3://zzz-data/avro-all/ (Database name: zzz-db, Table name: avroavro_all) (Service: AWSGlue; Status Code: 400; Error Code: AccessDeniedException; Request ID: 31481e7e-c384-11e9-a6e1-e78dc8223fae). For more information, see Setting up IAM Permissions in the Developer Guide (http://docs.aws.amazon.com/glu
19:54:44
[10cb3191-9785-49dc-8935-fb02dcbd69a3] BENCHMARK : Crawler has finished running and is in state READY

【问题讨论】:

遇到同样的问题,正在解决。 我通过删除“数据湖位置”条目解决了问题。试试看。 你摇滚!就是这样。您想将此作为官方答案发布吗? @yclian 提供的答案也帮助解决了我面临的同样问题。 @yclian 提供的答案也帮助了我。 【参考方案1】:

在启用 Lake Formation(在同一个 AWS 账户中)后设置并运行新的 AWS 爬虫时,我遇到了同样的问题。我已经运行 Glue crawler 很长时间了,当我看到这个新错误时被难住了。

经过反复试验,我发现问题的根本原因是当您启用 Lake Formation 时,它会在通过 Glue Crawler 创建的新 Glue 数据库和任何资源( Glue 目录、S3 等),您将其添加到 Lake Formation 服务。

要解决此问题,您必须授予 Crawler 的 IAM 角色,即数据库的一组适当的 Lake Formation 权限 (CRUD)。

您可以在 AWS Lake Formation 控制台 (UI) 的“权限”>“数据权限”部分下或通过 awscli Lake Formation 命令管理这些权限。

【讨论】:

【参考方案2】:

我通过在 AWS Lake Formations -> 权限 -> 数据位置中添加授权解决了这个问题。 (别忘了在桶名后面加上正斜杠(/))

【讨论】:

感谢您的加入。没有位置权限,它对我不起作用。 这似乎不起作用。我添加了我能找到的所有 IAM 权限,并授予了数据位置访问权限。还是没有成功。【参考方案3】:

我必须将我为 Glue 创建的自定义角色添加到“数据湖管理员”受赠者:

(注意:只是说这解决了爬虫的拒绝访问。可能有一些权限较小的事情要做......)

【讨论】:

以上是关于AWS Glue 无法从爬虫创建数据库:权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

AWS Glue - boto3 爬虫未创建表

AWS Glue 错误 |无法使用 spark 从开发人员端点读取 Glue 表

AWS Glue - 是不是使用爬虫

控制台中的 AWS Glue 控制列顺序

AWS Lambda 返回权限被拒绝尝试从 S3 存储桶获取对象

爬虫可以更新 AWS Glue 中导入的表吗?