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对任何列的权限。

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

Amazon Lake Formation删除任何以spark.sql.sources.schemaCRENT OFglue: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返回两个条目,一个条目用于旧用户,另一个条目用于新用户。如果您尝试撤消授予旧用户的权限,则会从新用户撤销权限。