

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

# Lake Formation 故障診斷
<a name="troubleshooting"></a>

如果您在使用 AWS Lake Formation 時遇到問題，請參閱本節中的主題。

**Topics**
+ [一般性問題的故障診斷](#trouble-general)
+ [對跨帳戶存取進行故障診斷](#trouble-cross-account)
+ [疑難排解藍圖和工作流程](#trouble-workflows)
+ [的已知問題 AWS Lake Formation](limitations.md)
+ [已更新錯誤訊息](error-message-update.md)

## 一般性問題的故障診斷
<a name="trouble-general"></a>

使用此處的資訊來協助您診斷和修正各種 Lake Formation 問題。

### 錯誤：<Amazon S3 location> 上的 Lake Formation 許可不足
<a name="trouble-location"></a>

嘗試建立或修改 Data Catalog 資源，而沒有資源指向的 Amazon S3 位置上的資料位置許可。

如果 Data Catalog 資料庫或資料表指向 Amazon S3 位置，當您授予 Lake Formation 許可`CREATE_TABLE`或 時`ALTER`，也必須授予該位置的`DATA_LOCATION_ACCESS`許可。如果您要將這些許可授予外部帳戶或組織，則必須包含授予選項。

將這些許可授予外部帳戶後，該帳戶中的資料湖管理員必須接著將許可授予帳戶中的主體 （使用者或角色）。授予從另一個帳戶收到的`DATA_LOCATION_ACCESS`許可時，您必須指定擁有者帳戶的目錄 ID (AWS 帳戶 ID)。擁有者帳戶是註冊位置的帳戶。

如需詳細資訊，請參閱[基礎資料存取控制](access-control-underlying-data.md)及[授予資料位置許可](granting-location-permissions.md)。

### 錯誤：「Glue API 的加密金鑰許可不足」
<a name="trouble-encryption-grant"></a>

嘗試對加密資料目錄的 AWS KMS 加密金鑰授予 Lake Formation 許可，而沒有 AWS Identity and Access Management (IAM) 許可。

### 使用資訊清單的我 Amazon Athena 或 Amazon Redshift 查詢失敗
<a name="trouble-manifest-query"></a>

Lake Formation 不支援使用資訊清單的查詢。

### 錯誤：「Lake Formation (Lake Formation) 許可不足：目錄上需要建立標籤」
<a name="permission-create-tag"></a>

使用者/角色必須是資料湖管理員。

### 刪除無效的資料湖管理員時發生錯誤
<a name="delete-admins"></a>

您應該同時刪除所有無效的資料湖管理員 （已刪除定義為資料湖管理員的 IAM 角色）。如果您嘗試分別刪除無效的資料湖管理員，Lake Formation 會擲回無效的主體錯誤。

### 錯誤：「呼叫者暫時無權在資源上執行此操作...」
<a name="trouble-tombstone"></a>

嘗試使用可能已重新導向的資源連結來查詢資料表。為了避免此錯誤，您的應用程式應該採用 [QuerySessionContext](https://docs.aws.amazon.com/glue/latest/webapi/API_QuerySessionContext.html) 通訊協定。如需詳細資訊[Lake Formation ，請參閱應用程式整合 API 操作的工作流程](https://docs.aws.amazon.com/lake-formation/latest/dg/api-overview.html)。否則，請等待 24 小時，然後再嘗試再次執行您的查詢。

## 對跨帳戶存取進行故障診斷
<a name="trouble-cross-account"></a>

使用此處的資訊來協助您診斷和修正跨帳戶存取問題。

**Topics**
+ [我授予跨帳戶 Lake Formation 許可，但收件人看不到資源](#troubleshooting-problem1)
+ [收件人帳戶中的主體可以查看 Data Catalog 資源，但無法存取基礎資料](#troubleshooting-problem11)
+ [錯誤：接受 AWS RAM 資源共享邀請時，「關聯失敗，因為發起人未授權」](#troubleshooting-cross-acct-accepting)
+ [錯誤：「未授權授予資源的許可」](#troubleshooting-problem2)
+ [錯誤：「拒絕擷取 AWS 組織資訊的存取」](#troubleshooting-problem3)
+ [錯誤：「找不到組織 <organization-ID>」](#troubleshooting-problem4)
+ [錯誤：「Lake Formation 許可不足：組合不合法」](#troubleshooting-problem5)
+ [對外部帳戶授予/撤銷請求的 ConcurrentModificationException](#troubleshooting-problem6)
+ [使用 Amazon EMR 存取跨帳戶共用的資料時發生錯誤](#toubleshooting-problem7)

### 我授予跨帳戶 Lake Formation 許可，但收件人看不到資源
<a name="troubleshooting-problem1"></a>
+ 收件人帳戶中的使用者是否為資料湖管理員？ 只有資料湖管理員可以在共用時查看資源。
+ 您是否使用具名資源方法與組織外部的帳戶共用？ 若是如此，收件人帳戶的資料湖管理員必須在 AWS Resource Access Manager () 中接受資源共享邀請AWS RAM。

  如需詳細資訊，請參閱[從 接受資源共享邀請 AWS RAM](accepting-ram-invite.md)。
+ 您是否在 中使用帳戶層級 (Data Catalog) 資源政策AWS Glue？ 如果是，則如果您使用具名資源方法，您必須在 政策中包含一個特殊陳述式，授權 代表您 AWS RAM 共用政策。

  如需詳細資訊，請參閱[使用 AWS Glue和 Lake Formation 管理跨帳戶許可](hybrid-cross-account.md)。
+ 您是否有授予跨帳戶存取權所需的 AWS Identity and Access Management (IAM) 許可？

  如需詳細資訊，請參閱[先決條件](cross-account-prereqs.md)。
+ 您授予許可的資源不得將任何 Lake Formation 許可授予`IAMAllowedPrincipals`群組。
+ 帳戶層級政策中的資源是否有`deny`陳述式？ 

### 收件人帳戶中的主體可以查看 Data Catalog 資源，但無法存取基礎資料
<a name="troubleshooting-problem11"></a>

收件人帳戶中的委託人必須具有必要的 AWS Identity and Access Management (IAM) 許可。如需詳細資訊，請參閱[存取共用資料表的基礎資料](cross-account-read-data.md)。

### 錯誤：接受 AWS RAM 資源共享邀請時，「關聯失敗，因為發起人未授權」
<a name="troubleshooting-cross-acct-accepting"></a>

將資源的存取權授予不同帳戶之後，當接收帳戶嘗試接受資源共享邀請時，動作會失敗。

```
$ aws ram get-resource-share-associations --association-type PRINCIPAL --resource-share-arns arn:aws:ram:{{aws-region}}:444444444444:resource-share/e1d1f4ba-xxxx-xxxx-xxxx-xxxxxxxx5d8d
{
    "resourceShareAssociations": [
        {
            "resourceShareArn": "arn:aws:ram:{{aws-region}}:444444444444:resource-share/e1d1f4ba-xxxx-xxxx-xxxx-xxxxxxxx5d8d
",
            "resourceShareName": "LakeFormation-MMCC0XQBH3Y",
            "associatedEntity": "5815803XXXXX",
            "associationType": "PRINCIPAL",
            "status": "FAILED",
            "statusMessage": "Association failed because the caller was not authorized.",
            "creationTime": "2021-07-12T02:20:10.267000+00:00",
            "lastUpdatedTime": "2021-07-12T02:20:51.830000+00:00",
            "external": true
        }
    ]
}
```

發生錯誤是因為當接收帳戶接受資源共享邀請AWS Glue時， 會`glue:PutResourcePolicy`叫用 。若要解決問題，請允許生產者/授權者帳戶使用的擔任角色執行 `glue:PutResourcePolicy`動作。

### 錯誤：「未授權授予資源的許可」
<a name="troubleshooting-problem2"></a>

嘗試對另一個帳戶擁有的資料庫或資料表授予跨帳戶許可。與您的帳戶共用資料庫或資料表時，身為資料湖管理員，您只能將資料庫或資料表的許可授予帳戶中的使用者。

### 錯誤：「拒絕擷取 AWS 組織資訊的存取」
<a name="troubleshooting-problem3"></a>

您的帳戶是 AWS Organizations 管理帳戶，您沒有擷取組織資訊的必要許可，例如帳戶中的組織單位。

如需詳細資訊，請參閱[Required permissions for cross-account grants](cross-account-prereqs.md#cross-account-permissions-needed)。

### 錯誤：「找不到組織 <organization-ID>」
<a name="troubleshooting-problem4"></a>

嘗試與組織共用資源，但未啟用與組織共用。啟用與組織共用資源。

如需詳細資訊，請參閱*AWS RAM 《 使用者指南*》中的[啟用與 AWS Organizations 共用](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-orgs)。

### 錯誤：「Lake Formation 許可不足：組合不合法」
<a name="troubleshooting-problem5"></a>

當 Lake Formation 許可授予資源的 `IAMAllowedPrincipals`群組時，使用者共用 Data Catalog 資源。使用者必須先從 撤銷所有 Lake Formation 許可，`IAMAllowedPrincipals`才能共用資源。

### 對外部帳戶授予/撤銷請求的 ConcurrentModificationException
<a name="troubleshooting-problem6"></a>

當使用者對 LF-Tag 政策上的委託人提出多個並行授予和/或撤銷許可請求時，Lake Formation 會擲回 ConcurrentModificationException。使用者需要擷取例外狀況，並重試失敗的授予/撤銷請求。使用 `GrantPermissions`/`RevokePermissions` API 操作的批次版本 - [BatchGrantPermissions](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_BatchGrantPermissions.html) 和 [BatchRevokePermissions](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_BatchRevokePermissions.html) 可透過減少並行授予/撤銷請求的數量，在一定程度上緩解此問題。

### 使用 Amazon EMR 存取跨帳戶共用的資料時發生錯誤
<a name="toubleshooting-problem7"></a>

當您使用 Amazon EMR 存取從其他帳戶與您共用的資料時，部分 Spark 程式庫將嘗試呼叫 `Glue:GetUserDefinedFunctions` API 操作。由於 AWS RAM 受管許可的第 1 版和第 2 版不支援此動作，您會收到下列錯誤訊息：

`"ERROR: User: arn:aws:sts::012345678901:assumed-role/my-spark-role/i-06ab8c2b59299508a is not authorized to perform: glue:GetUserDefinedFunctions on resource: arn:exampleCatalogResource because no resource-based policy allows the glue:GetUserDefinedFunctions action"`

若要解決此錯誤，建立資源共享的資料湖管理員必須更新連接至資源共享的 AWS RAM 受管許可。 AWS RAM 受管許可第 3 版允許主體執行 `glue:GetUserDefinedFunctions` 動作。

如果您建立新的資源共享，Lake Formation 預設會套用最新版本的 AWS RAM 受管許可，而且您不需要採取任何動作。若要啟用現有資源共享的跨帳戶資料存取，您需要將 AWS RAM 受管許可更新為第 3 版。

您可以在 中檢視指派給與您共用資源的 AWS RAM 許可 AWS RAM。第 3 版中包含下列許可：

```
Databases
  AWSRAMPermissionGlueDatabaseReadWriteForCatalog 
  AWSRAMPermissionGlueDatabaseReadWrite
    
Tables
  AWSRAMPermissionGlueTableReadWriteForCatalog
  AWSRAMPermissionGlueTableReadWriteForDatabase
    
AllTables
  AWSRAMPermissionGlueAllTablesReadWriteForCatalog
  AWSRAMPermissionGlueAllTablesReadWriteForDatabase
```

**更新現有資源共享的 AWS RAM 受管許可版本**  
您 （資料湖管理員） 可以遵循*AWS RAM 《 使用者指南*》中的指示，將[AWS RAM 受管許可更新為較新版本](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-update-permissions.html)，或者您可以撤銷資源類型的所有現有許可，並將其重新授予。如果您撤銷許可， 會 AWS RAM 刪除與 AWS RAM 資源類型相關聯的資源共用。當您授予許可時， AWS RAM 會建立新的資源共用，以連接最新版本的 AWS RAM 受管許可。

## 疑難排解藍圖和工作流程
<a name="trouble-workflows"></a>

使用此處的資訊來協助您診斷和修正藍圖和工作流程問題。

**Topics**
+ [我的藍圖失敗，「使用者：<user-ARN> 未獲授權執行：iam：PassRole on resource： <role-ARN>」](#problem-bp-1)
+ [我的工作流程失敗，「使用者：<user-ARN> 未獲授權執行：iam：PassRole on resource： <role-ARN>」](#problem-bp-2)
+ [我工作流程中的爬蟲程式失敗，出現「資源不存在或請求者無權存取請求的許可」](#problem-bp-3)
+ [我工作流程中的爬蟲程式失敗，出現「呼叫 CreateTable 操作時發生錯誤 (AccessDeniedException)...」](#problem-bp-4)

### 我的藍圖失敗，「使用者：<user-ARN> 未獲授權執行：iam：PassRole on resource： <role-ARN>」
<a name="problem-bp-1"></a>

嘗試建立藍圖的使用者，其沒有足夠的許可來傳遞選擇的角色。

更新使用者的 IAM 政策以傳遞角色，或要求使用者選擇具有必要通行許可的不同角色。

如需詳細資訊，請參閱[Lake Formation 角色和 IAM 許可參考](permissions-reference.md)。

### 我的工作流程失敗，「使用者：<user-ARN> 未獲授權執行：iam：PassRole on resource： <role-ARN>」
<a name="problem-bp-2"></a>

您為工作流程指定的角色沒有內嵌政策，允許角色自行傳遞。

如需詳細資訊，請參閱[（選用） 建立工作流程的 IAM 角色](initial-lf-config.md#iam-create-blueprint-role)。

### 我工作流程中的爬蟲程式失敗，出現「資源不存在或請求者無權存取請求的許可」
<a name="problem-bp-3"></a>

可能的原因之一是傳遞的角色沒有足夠的許可，無法在目標資料庫中建立資料表。將 資料庫上的`CREATE_TABLE`許可授予該角色。

### 我工作流程中的爬蟲程式失敗，出現「呼叫 CreateTable 操作時發生錯誤 (AccessDeniedException)...」
<a name="problem-bp-4"></a>

可能的原因是工作流程角色沒有目標儲存位置的資料位置許可。將資料位置許可授予角色。

如需詳細資訊，請參閱[`DATA_LOCATION_ACCESS`](lf-permissions-reference.md#perm-location)。