

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

# 的已知問題 AWS Lake Formation
<a name="limitations"></a>

檢閱 的這些已知問題 AWS Lake Formation。

**Topics**
+ [篩選資料表中繼資料的限制](#issue-table-metadata-avro)
+ [重新命名排除資料欄的問題](#issue-rename-column)
+ [刪除 CSV 資料表中資料欄的問題](#issue-csv-schema)
+ [資料表分割區必須在通用路徑下新增](#issue-table-partitions)
+ [在工作流程建立期間建立資料庫的問題](#issue-create-table-permission)
+ [刪除然後重新建立使用者的問題](#issue-recreate-user)
+ [Data Catalog API 操作不會更新 `IsRegisteredWithLakeFormation` 參數的值](#issue-get-tables-parameter)
+ [Lake Formation 操作不支援 AWS Glue 結構描述登錄檔](#not-support-GlueSchemaRegistry.title)

## 篩選資料表中繼資料的限制
<a name="issue-table-metadata-avro"></a>

AWS Lake Formation 資料欄層級許可可用來限制對資料表中特定資料欄的存取。當使用者使用主控台或類似 的 API 擷取資料表的中繼資料時`glue:GetTable`，資料表物件中的資料欄清單只會包含他們有權存取的欄位。請務必了解此中繼資料篩選的限制。

雖然 Lake Formation 為整合服務提供資料欄許可的中繼資料，但查詢回應中資料欄的實際篩選是整合服務的責任。支援資料欄層級篩選的 Lake Formation 用戶端，包括 Amazon Athena、Amazon Redshift Spectrum 和 Amazon EMR，會根據向 Lake Formation 註冊的資料欄許可來篩選資料。使用者將無法讀取他們不應存取的任何資料。目前，AWS GlueETL 不支援資料欄篩選。

**注意**  
 EMR 叢集未完全由 管理 AWS。因此，EMR 管理員有責任正確保護叢集，以避免未經授權存取資料。

某些應用程式或格式可能會在`Parameters`映射中將其他中繼資料存放為資料表屬性，包括資料欄名稱和類型。這些屬性會以未修改的方式傳回，且任何具有任何資料欄`SELECT`許可的使用者皆可存取。

例如，[Avro SerDe](https://docs.aws.amazon.com/athena/latest/ug/supported-serdes.html) 會將資料表結構描述的 JSON 表示法存放在名為 的資料表屬性中`avro.schema.literal`，可供有權存取資料表的所有使用者使用。我們建議您避免在資料表屬性中存放敏感資訊，並請注意，使用者可以了解 Avro 格式資料表的完整結構描述。此限制專屬於資料表的中繼資料。

AWS Lake Formation 如果發起人沒有資料表中所有資料欄的`SELECT`許可，則在回應 `glue:GetTable`或類似請求`spark.sql.sources.schema`時， 會移除以 開頭的任何資料表屬性。這可防止使用者存取使用 Apache Spark 建立之資料表的其他中繼資料。在 Amazon EMR 上執行時，Apache Spark 應用程式仍然可以讀取這些資料表，但可能不會套用某些最佳化，也不支援區分大小寫的資料欄名稱。如果使用者可存取資料表中的所有資料欄，Lake Formation 會傳回未修改且具有所有資料表屬性的資料表。

## 重新命名排除資料欄的問題
<a name="issue-rename-column"></a>

如果您使用資料欄層級許可來排除資料欄，然後重新命名資料欄，則資料欄不會再從查詢中排除，例如 `SELECT *`。

## 刪除 CSV 資料表中資料欄的問題
<a name="issue-csv-schema"></a>

如果您使用 CSV 格式建立 Data Catalog 資料表，然後從結構描述中刪除資料欄，查詢可能會傳回錯誤的資料，而且可能未遵守資料欄層級許可。

解決方法：改為建立新的資料表。

## 資料表分割區必須在通用路徑下新增
<a name="issue-table-partitions"></a>

Lake Formation 預期資料表的所有分割區都位於資料表位置欄位中設定的常見路徑下。當您使用爬蟲程式將分割區新增至目錄時，這會順暢運作。但是，如果您手動新增分割區，且這些分割區不在父資料表中設定的位置之下，則資料存取無法運作。

## 在工作流程建立期間建立資料庫的問題
<a name="issue-create-table-permission"></a>

使用 Lake Formation 主控台從藍圖建立工作流程時，如果目標資料庫不存在，您可以建立目標資料庫。當您這樣做時，登入的使用者會取得所建立資料庫的 `CREATE_TABLE` 許可。不過，工作流程產生的爬蟲程式會在嘗試建立資料表時擔任工作流程的角色。這會失敗，因為角色在資料庫上沒有 `CREATE_TABLE`許可。

解決方法：如果您在工作流程設定期間透過主控台建立資料庫，則在執行工作流程之前，您必須為與工作流程相關聯的角色提供您剛建立之資料庫的`CREATE_TABLE`許可。

## 刪除然後重新建立使用者的問題
<a name="issue-recreate-user"></a>

下列案例會導致 傳回錯誤的 Lake Formation 許可`lakeformation:ListPermissions`：

1. 建立使用者並授予 Lake Formation 許可。

1. 刪除使用者。

1. 使用相同名稱重新建立使用者。

`ListPermissions` 傳回兩個項目，一個用於舊使用者，另一個用於新使用者。如果您嘗試撤銷授予舊使用者的許可，則會撤銷新使用者的許可。

## Data Catalog API 操作不會更新 `IsRegisteredWithLakeFormation` 參數的值
<a name="issue-get-tables-parameter"></a>

Data Catalog API 操作有已知的限制，例如 `GetTables`和 `SearchTables` 不會更新 `IsRegisteredWithLakeFormation` 參數的值，並傳回預設值，即 false。建議使用 `GetTable` API 來檢視 `IsRegisteredWithLakeFormation` 參數的正確值。

## Lake Formation 操作不支援 AWS Glue 結構描述登錄檔
<a name="not-support-GlueSchemaRegistry.title"></a>

Lake Formation 操作不支援在 `SchemaReference`中包含`StorageDescriptor`要在[結構描述登錄](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html)中使用的 的 AWS Glue 資料表。