View a markdown version of this page

使用适用于亚马逊 EMR Spark 的 Lake Formation 进行基于 S3 路径的访问 - Amazon EMR

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

使用适用于亚马逊 EMR Spark 的 Lake Formation 进行基于 S3 路径的访问

在 Amazon EMR 7.13.0 及更高版本中,您可以使用AWS Lake Formation 访问权限插件获取在 Lake Formation 中注册的 S3 路径的临时证书。除了Full Table Access (FTA) 提供的基于表名的现有 Formation-vended 凭证自动售货之外,这还允许直接引用 S3 路径的 Spark 查询使用 Lake 凭证。

Lake Formation Access Grants 插件与 Spark 中的 S3A 文件系统集成。启用后,S3A 将使用该插件调用 Lake Formation GetTemporaryDataLocationCredentialsAPI 来获取属于 Lake Formation-registered 表的 S3 路径的临时证书。

当您的 Spark 作业通过直接引用 S3 路径(例如spark.read.parquet("s3a://my-bucket/my-table/"))而不是使用表名来读取或写入数据时,此插件非常有用。该插件还支持在 Lake Formation 访问被拒绝时可选回退到 S3 访问授权或 IAM 角色证书。

与全表访问权限 (FTA) 的关系

现有的 Full Table Access 功能使用 GetTemporaryGlueTableCredentialsAPI,它根据表名提供凭证。Lake Formation Access Grants 插件使用 GetTemporaryDataLocationCredentialsAPI,它基于 S3 路径出售凭证。

您可以同时使用这两个功能。当两者都启用时,FTA 凭证优先用于表名查询,而插件则处理直接的 S3 路径查询。

先决条件

在使用 Lake Formation Access Grants 插件之前,请完成以下步骤:

  • 为您的 Amazon EMR 环境设置全表访问权限 (FTA)。有关说明,请参阅

  • 在 Lake Formation 控制台中,使用所有者账户注册 S3 路径:

    1. 导航到数据湖位置

    2. 选择位置并启用 “向所有者帐户注册 S3 路径”。

  • 向运行时角色授予对表的相应的 Lake Formation 权限:

    • 要读取表数据,请向运行时角色授予对表的完全SELECT权限。

    • 要修改表数据,请授予运行时角色对表的SUPER权限。

启用 Lake Formation 访问权限授予插件

要启用该插件,请在 Spark 会话中设置以下 S3A 配置属性:

Lake Formation 访问权限授予插件配置属性
属性 默认值 说明
fs.s3a.lakeformation.access.grants.enabled FALSE 启用 Lake Formation 访问权限授予插件。
fs.s3a.lakeformation.access.grants.fallback.to.iam FALSE 如果 Lake Formation 拒绝访问,则启用回退到 S3 访问权限授予或 IAM 角色证书。

回退行为

设置fs.s3a.lakeformation.access.grants.fallback.to.iam为时true,如果 Lake Formation 拒绝访问,则插件将使用备用链。这在某些 S3 路径在 Lake Formation 中注册而其他路径通过 S3 访问授权或 IAM 策略进行管理的场景中非常有用。

启用后备功能后,插件会尝试按以下顺序获取凭证:

  1. Lake Formation — 插件调用GetTemporaryDataLocationCredentials。如果 Lake Formation 授予访问权限,则插件会返回这些凭证。

  2. S3 访问授权 — 如果 Lake Formation 拒绝访问,则该插件会检查 S3 访问权限是否可以为请求的路径提供凭证。如果 S3 Access Grants 实例覆盖了路径,并且调用方拥有匹配的授权,则插件将使用这些凭证。

  3. IAM 角色 — 如果 Lake Formation 和 S3 Access Grants 都拒绝访问,则插件将回退到附加到任务的 IAM 角色证书。

注意事项和限制

  • 该插件支持 Apache Hive、Apache Hudi 和 Delta Lake 表格格式。目前不支持 Apache Iceberg。

  • Amazon EMR Spark Fine-Grained 访问控制 (FGAC) 模式目前不支持该插件。

  • Path-based 凭证自动售卖需要在表与其 S3 在 G AWS lue 数据目录中的位置之间建立 1:1 的映射。