

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

# 访问亚马逊 S3 地点
<a name="accessing-s3-locations"></a>

AWS Lake Formation 允许您读取和写入在（数据目录）中注册的表的亚马逊简单存储服务 (Amazon S3) AWS Glue Data Catalog 中的基础数据文件。这为你提供了一组权限，既可以进行 SQL 查询，也可以使用现有的 Lake Formation 表授予直接访问文件。Lake Formation 将其凭证自动售货功能扩展到在数据目录中注册的亚马逊 S3 地点。当您的应用程序请求访问数据目录表底层的 Amazon S3 文件时，Lake Formation 会评估调用者的现有表级权限，如果获得授权，则会返回该表注册位置的短期、限定范围的 Amazon S3 凭证。

**允许直接访问 Amazon S3 地点**  
要启用此功能，必须完成以下步骤。

**先决条件**  
在启用功能标志之前，请完成以下先决条件：
+ **注册 Amazon S3 地点** — 在数据目录中对您的亚马逊 S3 位置的表进行编目，然后通过提供亚马逊 S3 存储桶所有者账户将这些表注册到 Lake Formation。当您注册某个位置时，将注册 Amazon S3 路径以及该路径下的所有文件夹。有关更多信息，请参阅 [注册 Amazon S3 位置](register-location.md)。
+ **授予 Lake Formation 权限** — 使用 Lake Formation 控制台或 API 向数据科学家和应用程序授予 Lake Formation`SELECT`（或`SUPER`）表权限。如果您已经使用 Lake Formation 通过 Athena 或 Amazon EMR 等服务访问表格，则此配置已经完成。
+ **启用具有全表访问权限的应用程序集**成-启用具有完整表访问权限的应用程序集成，以允许凭据自动售卖到注册的表格位置。有关更多信息，请参阅 [集成应用程序以获取完整表访问权限](full-table-credential-vending.md)。

**启用功能标志**  
在支持的引擎上启用该`fs.s3a.lakeformation.access.grants.enabled`标志：

```
fs.s3a.lakeformation.access.grants.enabled = true
```
+ **亚马逊 EC2 上的亚马逊 EMR** — EMR 7.13 或更高版本
+ EKS 上的 **Amazon EMR — EM** R 7.13 或更高版本
+ **亚马逊 EMR Serverless — EMR** 7.13 或更高版本

配置完成后，您可以使用标准 API 立即从 EMR 读取或写入数据文件。

有关亚马逊 EMR 集[成的更多信息，请参阅亚马逊 EMR 管理指南中的基于 Lake For *m* ation 路径的凭证](https://docs.aws.amazon.com/emr/latest/ManagementGuide/lake-formation-path-based-credential-vending.html)自动售卖。

**工作原理**  
 Formation-based Amazon S3 湖的位置访问遵循以下流程：

1. 委托人或角色通过诸如 Amazon EMR Spark 任务或数据处理管道之类的服务请求访问 Amazon S3 数据文件。

1. 与 EMR 集成的 AWS 软件开发工具包插件会拦截亚马逊 S3 请求并调用 Lake Formation API。`GetTemporaryDataLocationCredentials`

1. Lake Formation 会检查 Amazon S3 路径是否与注册位置和已编目表相对应，并评估调用者对关联AWS Glue表的权限。

1. 如果调用者拥有`SELECT`或`SUPER`权限访问相应表，则Lake Formation将提供限定在该 Amazon S3 位置的临时证书。 `SELECT`授予**读取**凭证；`SUPER`授予**读写**凭证。

1. 该插件使用这些凭证来完成 Amazon S3 请求，而 Amazon S3 将数据提供给应用程序。

1. 所有凭证自动售卖操作都会记录到 CloudTrail，从而为数据访问提供审计跟踪。

此过程对您来说是透明的，您只需将现有的 Lake Formation 权限与基于文件的 API 一起使用即可。

```
# Read raw data (Lake Formation-based S3 Location access)
raw_df = spark.read.json("s3://finance-datalake/raw/transactions/dt=2024-03-21/")

# Read governed data (Lake Formation-based S3 Location access)
transactions_df = spark.read.parquet("s3://data-lake/transactions/year=2026/")

# Write processed data (Lake Formation-based S3 Location access)
processed_df.write \
    .mode("append") \
    .partitionBy("transaction_date") \
    .parquet("s3://finance-datalake/processed/transactions/")

print("ETL complete. Records written:", processed_df.count())
```

**权限要求**  
目前，该功能仅在调用者拥有**完整表访问权限**时才会出售凭据，这意味着`SELECT`在没有行或列筛选器的所有列上。如果表应用了行级或列级筛选条件，则来电者必须继续使用可信引擎，例如可以强制执行这些筛选条件的 Athena、Amazon EMR 或 Amazon Redshift。AWS Glue这样可以确保安全边界保持一致。

**Cross-account 访问**  
Lake Formation 通过跨账户共享功能简化了对亚马逊 S3 营业地点的访问。当您通过 Lake Formation 与其他 AWS 账户共享表时，收件人可以使用其 Lake Formation 权限访问底层 Amazon S3 数据文件，但须遵守相同的完整表访问要求。

该功能支持 Lake Formation 的资源链接机制，用于跨账户访问。当消费者账户拥有共享表的权限时，Lake Formation 会出售仅限于注册账户的 Amazon S3 位置的证书，从而无需单独的 Amazon S3 存储桶策略或跨账户 IAM 角色即可实现跨账户数据的无缝访问。

**嵌套亚马逊 S3 地点**  
当多个表指向同一个存储桶中的嵌套位置时，Lake Formation 会应用以下行为：
+ 访问时`s3://bucket`，您将获得与在存储桶级别注册的表相对应的权限。
+ 访问时`s3://bucket/folder1`，您将获得与在该特定路径上注册的表相对应的权限。
+ 要访问没有注册表的文件夹（例如，`s3://bucket/folder2`），您将从最近的父注册位置获得权限。
+ 如果在同一位置注册了多个表，Lake Formation 会因为权限冲突而返回错误。

**审计与合规性**  
所有凭证自动售卖操作都会记录到 CloudTrail，从而为数据访问提供审计跟踪。当 Lake Formation 通过 `GetTemporaryDataLocationCredentials` API 出售凭证时，会 CloudTrail 记录：
+ 委托人（用户或角色）
+ Timestamp
+ Amazon S3 位置
+ 关联AWS Glue表

随后使用这些凭证进行的 Amazon S3 API 调用也将记录 CloudTrail 为 Amazon S3 数据事件，上下文将它们与 Lake Formation 权限授予相关联。这使审计员可以完全了解谁访问了哪些数据、何时访问了哪些数据，以及通过哪个权限路径访问了这些数据，所有这些都可以在一个 CloudTrail 日志流中完成。

**支持 AWS 务**  
Lake Formation 简化了对亚马逊 S3 地点的访问，适用于：
+ 亚马逊 EC2 上的亚马逊 EMR（7.13 或更高版本）
+ EKS 上的亚马逊 EMR（EMR 7.13 或更高版本）
+ 亚马逊 EMR Serverless（EMR 7.13 或更高版本）

**第三方服务的开源插件**  
您也可以使用 API Apache Spark 或通过提供的开源插件来集成您的或Trino应用程序 AWS。有关更多信息，请参阅上的 [aws-lakeformation-accessgrants-plugin-java-v2。](https://github.com/aws/aws-lakeformation-accessgrants-plugin-java-v2) GitHub

**注意事项**  
在 Amazon S3 地点使用凭证自动售卖功能时，请注意以下注意事项：
+ 不支持跨区域出售 Amazon S3 地点的凭证。
+ 作为表格主要位置的 Amazon S3 位置支持凭证自动售卖。