本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
的已知问题 AWS Lake Formation
查看这些已知问题 AWS Lake Formation。
主题
对表元数据筛选的限制
AWS Lake Formation 列级权限可用于限制对表中特定列的访问权限。当用户使用控制台或API类似工具检索有关表的元数据时glue:GetTable
,表对象中的列列表仅包含他们有权访问的字段。请务必要了解这种元数据筛选的相关限制。
尽管 Lake Formation 为集成服务提供了有关列权限的元数据,但实际筛选查询响应中的列是相关集成服务的责任。支持列级筛选的 Lake Formation 客户端,包括亚马逊 Athena、Amazon Redshift Spectrum 和EMR亚马逊,根据在 Lake Formation 注册的列权限筛选数据。用户将无法读取他们不应访问的任何数据。目前,AWS Glue ETL不支持列筛选。
注意
EMR群集并非完全由管理 AWS。因此,EMR管理员有责任妥善保护集群,以避免未经授权访问数据。
某些应用程序或格式可能会将其他元数据(包括列名和类型)作为表属性存储在 Parameters
映射中。这些属性将未经修改返回,并且可由对任何列具有 SELECT
权限的任何用户访问。
例如,Avro 将表架构的JSON表示形式SerDe存储在名为的表属性中avro.schema.literal
,该属性可供所有有权访问该表的用户使用。建议避免在表属性中存储敏感信息,并注意用户可以了解 Avro 格式表的完整架构。此限制特定于表的元数据。
AWS Lake Formation 如果调用者对表中的所有列都没有SELECT
权限,则删除以响应glue:GetTable
或类似请求spark.sql.sources.schema
时开头的所有表属性。这样可以防止用户访问有关使用 Apache Spark 创建的表的其他元数据。在 Amazon 上运行时EMR,Apache Spark 应用程序仍然可以读取这些表,但某些优化可能无法应用,并且不支持区分大小写的列名。如果用户有权访问表中的所有列,则 Lake Formation 将返回未修改的表以及所有表属性。
重命名排除列时出现问题
如果使用列级权限排除列,然后重命名该列,则该列将不再被排除在查询之外,例如 SELECT *
。
删除CSV表中的列时出现问题
如果您使用该CSV格式创建数据目录表,然后从架构中删除一列,则查询可能会返回错误的数据,并且可能无法遵守列级权限。
解决方法:改为创建新表。
必须在公共路径下添加表分区
Lake Formation 期望表的所有分区都位于表的位置字段中设置的公共路径下。当您使用爬网程序将分区添加到目录时,这会无缝工作。但是,如果手动添加分区,并且这些分区不在父表中设置的位置下,则无法访问数据。
在工作流创建期间创建数据库时出现问题
使用 Lake Formation 控制台从蓝图创建工作流时,您可以创建目标数据库(如果该数据库不存在)。执行此操作时,登录的用户将获得对所创建数据库的 CREATE_TABLE
权限。但是,工作流生成的爬网程序在尝试创建表时会承担工作流的角色。由于该角色不具有对数据库的 CREATE_TABLE
权限,因此此操作会失败。
解决方法:如果您在工作流设置期间通过控制台创建数据库,则在运行工作流之前,必须向与工作流关联的角色授予对刚刚创建的数据库的 CREATE_TABLE
权限。
删除然后重新创建用户时出现问题
以下情况会导致 lakeformation:ListPermissions
返回错误的 Lake Formation 权限:
-
创建用户并授予 Lake Formation 权限。
-
删除用户。
-
重新创建具有相同名称的用户。
ListPermissions
返回两个条目,一个用于旧用户,一个用于新用户。如果您尝试撤销授予旧用户的权限,则系统会撤消新用户的权限。
GetTables
并且SearchTables
APIs不要更新IsRegisteredWithLakeFormation
参数的值
有一个已知的限制,即数据目录API操作(例如GetTables
和SearchTables
不更新)的值IsRegisteredWithLakeFormation parameter
,并返回默认值,即 false。建议使用查看GetTable
API的正确值IsRegisteredWithLakeFormation parameter
。
数据目录API操作不会更新IsRegisteredWithLakeFormation
参数的值
有一个已知的限制,即数据目录API操作(如GetTables
和SearchTables
)不会更新IsRegisteredWithLakeFormation
参数的值,而是返回默认值,即 false。建议使用GetTable
API查看IsRegisteredWithLakeFormation
参数的正确值。
Lake Formation 操作不支持 AWS Glue 架构注册表
Lake Formation 操作不支持包含SchemaReference
在架构注册 AWS Glue表中使用的表。StorageDescriptor