的已知问题Amazon Lake Formation - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

的已知问题Amazon Lake Formation

查看 Amazon Lake Formation 的以下已知问题。

对表元数据过滤的限制

Amazon Lake Formation可以使用列级权限来限制对表中特定列的访问。当用户使用控制台或类似的 API 检索有关表的元数据时glue:GetTable,表对象中的列列表仅包含他们有权访问的字段。务必要了解此元数据筛选的局限。

尽管 Lake Formation 为集成服务提供了有关列权限的元数据,但是在查询响应中实际筛选列是集成服务的责任。支持列级筛选的湖形客户端,包括 Amazon Athena、Amazon Redshift Spectrum 和亚马逊 EMR 根据在 Lake Formation 注册的列权限过滤数据。用户将无法读取任何不应访问的数据。目前,Amazon GlueETL 不支持列筛选。

注意

EMR 集群不完全由Amazon. 因此,EMR 管理员有责任适当保护群集,以避免未经授权访问数据。有关更多信息,请参阅 (可选)允许在 Amazon EMR 集群上进行数据筛选

某些应用程序或格式可能会将其他元数据(包括列名和类型)存储在Parameters映射为表属性。这些属性将在未经修改的情况下返回,任何用户都可以访问SELECT对任何列的权限。

例如,AvroSerDe将表架构的 JSON 表示形式存储在名为的表属性中avro.schema.literal,有权访问表的所有用户可以使用该表。我们建议您避免在表属性中存储敏感信息,并注意用户可以学习 Avro 格式表的完整架构。此限制特定于有关表的元数据。

Amazon Lake Formation删除任何以开头的表属性spark.sql.sources.schema当回应glue:GetTable或者如果呼叫者没有类似的请求SELECT对表的所有列的权限。这样可以防止用户访问有关使用 Apache Spark 创建的表的其他元数据。在 Amazon EMR 上运行时,Apache Spark 应用程序仍然可以读取这些表,但可能无法应用某些优化,并且不支持区分大小写的列名。如果用户有权访问表中的所有列,则 Lake Formation 将返回未经修改且包含所有表属性的表格。

重命名已排除的列的问题

如果您使用列级权限排除列然后重命名该列,则不再从查询中排除该列,例如SELECT *.

删除 CSV 表中的列的问题

如果使用 CSV 格式创建数据目录表,然后从架构中删除列,则查询可能会返回错误的数据,并且可能不遵守列级权限。

解决办法:请改为创建新表。

必须在公共路径下添加表分区

Lake Formation 希望表的所有分区都位于表的位置字段中设置的公共路径之下。当您使用 Crawler 向目录中添加分区时,这可以无缝运行。但是,如果手动添加分区,并且这些分区不在父表中设置的位置下,则数据访问将不起作用。

创建工作流程期间创建数据库的问题

使用 Lake Formation 控制台从蓝图创建工作流时,如果目标数据库不存在,则可以创建该数据库。当您执行此操作时,登录的 IAM 用户将获得CREATE_TABLE对创建的数据库的权限。但是,工作流生成的 Crawler 在尝试创建表时承担工作流的角色。这失败是因为该角色没有CREATE_TABLE对数据库的权限。

解决办法:如果在工作流程设置期间通过控制台创建数据库,则在运行工作流之前,必须为与工作流关联的角色指定CREATE_TABLE对刚刚创建的数据库的权限。

删除然后重新创建用户时出现问题

以下情况会导致由返回的 Lake Formation 权限错误lakeformation:ListPermissions

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

  2. 请删除用户。

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

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

GetTablesSearchTablesAPI 不会更新的值IsRegisteredWithLakeFormation参数

数据目录 API 操作有一个已知的限制,例如GetTablesSearchTables不要更新的值IsRegisteredWithLakeFormation parameter,然后返回默认值,该值为 false。建议使用GetTable用于查看的正确值的 APIIsRegisteredWithLakeFormation parameter.

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

数据目录 API 操作有一个已知的限制,例如GetTablesSearchTables不要更新的值IsRegisteredWithLakeFormation参数,然后返回默认值,为 false。建议使用GetTable用于查看的正确值的 APIIsRegisteredWithLakeFormation参数。

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

Lake Formation 操作不支持Amazon Glue包含SchemaReference中的StorageDescriptor将在Schema.