的已知问题 AWS Lake Formation - AWS Lake Formation

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

的已知问题 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 权限:

  1. 创建用户并授予 Lake Formation 权限。

  2. 删除用户。

  3. 重新创建具有相同名称的用户。

ListPermissions 返回两个条目,一个用于旧用户,一个用于新用户。如果您尝试撤销授予旧用户的权限,则系统会撤消新用户的权限。

GetTables并且SearchTablesAPIs不要更新IsRegisteredWithLakeFormation参数的值

有一个已知的限制,即数据目录API操作(例如GetTablesSearchTables不更新)的值IsRegisteredWithLakeFormation parameter,并返回默认值,即 false。建议使用查看GetTableAPI的正确值IsRegisteredWithLakeFormation parameter

数据目录API操作不会更新IsRegisteredWithLakeFormation参数的值

有一个已知的限制,即数据目录API操作(如GetTablesSearchTables)不会更新IsRegisteredWithLakeFormation参数的值,而是返回默认值,即 false。建议使用GetTableAPI查看IsRegisteredWithLakeFormation参数的正确值。

Lake Formation 操作不支持 AWS Glue 架构注册表

Lake Formation 操作不支持包含SchemaReference架构注册 AWS Glue表中使用的表。StorageDescriptor