

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 存取 Amazon S3 位置
<a name="accessing-s3-locations"></a>

AWS Lake Formation 可讓您針對在 （資料目錄） 中註冊的資料表，在 Amazon Simple Storage Service AWS Glue Data Catalog (Amazon S3) 中讀取和寫入基礎資料檔案。這為您提供 SQL 查詢的單一許可集，以及使用現有 Lake Formation 資料表授予的直接檔案存取。Lake Formation 將其登入資料販賣功能擴展至在 Data Catalog 中註冊的 Amazon S3 位置。當您的應用程式請求存取 Data Catalog 資料表基礎的 Amazon S3 檔案時，Lake Formation 會評估發起人現有的資料表層級許可，如果獲得授權， 會傳回該資料表註冊位置的短期範圍 Amazon S3 登入資料。

**啟用直接存取 Amazon S3 位置**  
若要啟用此功能，您必須完成下列步驟。

**先決條件**  
啟用功能旗標之前，請先完成下列先決條件：
+ **註冊 Amazon S3 位置** – 在 Data Catalog 中為您的 Amazon S3 位置編製資料表的目錄，並提供 Amazon S3 儲存貯體擁有者帳戶，以向 Lake Formation 註冊它們。當您註冊位置時，該 Amazon S3 路徑和該路徑下的所有資料夾都會註冊。如需詳細資訊，請參閱[註冊 Amazon S3 位置](register-location.md)。
+ **授予 Lake Formation 許可** – 使用 Lake Formation 主控台或 APIs 將資料表的 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
```
+ **Amazon EC2 上的 Amazon EMR** – EMR 7.13 或更新版本
+ **Amazon EMR on EKS** – EMR 7.13 或更新版本
+ **Amazon EMR Serverless** – EMR 7.13 或更新版本

設定完成後，您就可以立即使用標準 APIs 從 EMR 讀取或寫入資料檔案。

如需 Amazon EMR 整合的詳細資訊，請參閱《*Amazon EMR 管理指南*》中的 [Lake Formation 路徑型登入資料販賣](https://docs.aws.amazon.com/emr/latest/ManagementGuide/lake-formation-path-based-credential-vending.html)。

**運作方式**  
Lake Formation 型 Amazon S3 位置存取遵循此流程：

1. 委託人或角色透過 Amazon EMR Spark 任務或資料處理管道等服務請求存取 Amazon S3 資料檔案。

1. 與 EMR 整合的 AWS SDK 外掛程式會攔截 Amazon S3 請求並呼叫 Lake Formation `GetTemporaryDataLocationCredentials` API。

1. Lake Formation 會檢查 Amazon S3 路徑是否對應於已註冊的位置和目錄化資料表，並評估發起人的許可AWS Glue。

1. 如果發起人對具有完整資料表存取權的對應資料表具有 `SELECT`或 `SUPER`許可，Lake Formation 會提供範圍限定於該 Amazon S3 位置的臨時憑證。 會`SELECT`授予 **READ** 憑證； `SUPER`會授予 **READWRITE** 憑證。

1. 外掛程式使用這些登入資料來完成 Amazon S3 請求，Amazon S3 會將資料提供給應用程式。

1. 所有登入資料販賣操作都會記錄到 CloudTrail，提供資料存取的稽核線索。

此程序對您來說是透明的，您只需將現有的 Lake Formation 許可與標準檔案型 APIs搭配使用。

```
# 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 EMRAWS Glue、 或 Amazon Redshift。這可確保安全界限保持一致。

**跨帳戶存取權**  
Lake Formation 簡化了對 Amazon S3 位置的存取，可與跨帳戶共用功能搭配使用。當您透過 Lake Formation 與其他 AWS 帳戶共用資料表時，收件人可以使用其 Lake Formation 許可存取基礎 Amazon S3 資料檔案，但需符合相同的完整資料表存取要求。

此功能支援 Lake Formation 的跨帳戶存取資源連結機制。當取用者帳戶擁有共用資料表的許可時，Lake Formation 會將範圍限定在已註冊帳戶的 Amazon S3 位置的憑證提供給 ，啟用無縫的跨帳戶資料存取，而不需要單獨的 Amazon S3 儲存貯體政策或跨帳戶 IAM 角色。

**巢狀 Amazon S3 位置**  
當多個資料表指向同一儲存貯體中的巢狀位置時，Lake Formation 會套用下列行為：
+ 存取 時`s3://bucket`，您會收到與在儲存貯體層級註冊的資料表對應的許可。
+ 存取 時`s3://bucket/folder1`，您會收到與該特定路徑註冊之資料表對應的許可。
+ 若要存取沒有註冊資料表的資料夾 （例如 `s3://bucket/folder2`)，您會從最近的父登錄位置收到許可。
+ 如果在同一位置註冊多個資料表，Lake Formation 會傳回因許可衝突而產生的錯誤。

**稽核與合規性**  
所有登入資料販賣操作都會記錄到 CloudTrail，提供資料存取的稽核線索。當 Lake Formation 透過 `GetTemporaryDataLocationCredentials` API 提供登入資料時，CloudTrail 會記錄：
+ 委託人 （使用者或角色）
+ 時間戳記
+ Amazon S3 位置
+ 關聯的AWS Glue資料表

使用這些登入資料進行的後續 Amazon S3 API 呼叫也會記錄為 Amazon S3 資料事件到 CloudTrail，並將內容連結回 Lake Formation 許可授予。這可讓稽核人員完全了解誰在單一 CloudTrail 日誌串流中存取了哪些資料、何時存取和通過哪個許可路徑。

**支援 AWS 的服務**  
Lake Formation 簡化了對 Amazon S3 位置的存取，適用於：
+ Amazon EC2 上的 Amazon EMR (EMR 7.13 或更新版本）
+ Amazon EMR on EKS (EMR 7.13 或更新版本）
+ Amazon EMR Serverless (EMR 7.13 或更新版本）

**第三方服務的開放原始碼外掛程式**  
您也可以使用 APIs Apache Spark 或透過 提供的開放原始碼外掛程式來整合 或 Trino 應用程式 AWS。如需詳細資訊，請參閱 GitHub 上的 [aws-lakeformation-accessgrants-plugin-java-v2](https://github.com/aws/aws-lakeformation-accessgrants-plugin-java-v2)。

**考量事項**  
針對 Amazon S3 位置使用登入資料販賣時，請注意下列考量事項：
+ 不支援跨區域 Amazon S3 位置的登入資料販賣。
+ 憑證販賣支援做為資料表主要位置的 Amazon S3 位置。