Lake Formation 疑難排解 - AWS Lake Formation

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

Lake Formation 疑難排解

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

一般性問題的故障診斷

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

錯誤:<Amazon S3 location> 上的 Lake Formation 許可不足

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

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

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

如需詳細資訊,請參閱 基礎資料存取控制授予資料位置許可

錯誤:「Glue 的加密金鑰許可不足API」

嘗試授予 Lake Formation 許可,而沒有 AWS Identity and Access Management (IAM) 加密金鑰的 AWS KMS 加密金鑰許可。

使用資訊清單的我的 Amazon Athena 或 Amazon Redshift 查詢失敗

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

錯誤:「 Lake Formation (湖形成) 許可不足:目錄上需要建立標籤」

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

刪除無效的資料湖管理員時發生錯誤

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

對跨帳戶存取進行故障診斷

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

我授予跨帳戶 Lake Formation 許可,但收件人看不到資源

  • 收件人帳戶中的使用者是否為資料湖管理員? 只有資料湖管理員可以在共用時查看資源。

  • 您是否使用具名資源方法與組織外部的帳戶共用? 如果是這樣,收件人帳戶的資料湖管理員必須在 AWS Resource Access Manager () 中接受資源共用邀請AWS RAM。

    如需詳細資訊,請參閱接受來自的資源共用邀請 AWS RAM

  • 您是否在 中使用帳戶層級 (資料型錄) 資源政策 AWS Glue? 如果是,則如果您使用具名資源方法,則必須在政策中包含一個特殊陳述式,以授權代表您 AWS RAM 共享政策。

    如需詳細資訊,請參閱使用兩者管理跨帳戶許可 AWS Glue 和 Lake Formation

  • 您是否有授予跨帳戶存取權所需的 AWS Identity and Access Management (IAM) 許可?

    如需詳細資訊,請參閱必要條件

  • 您授予 許可的資源不得授予IAMAllowedPrincipals群組任何 Lake Formation 許可。

  • 帳戶層級政策中的資源是否有deny陳述式?

收件人帳戶中的主體可以查看 Data Catalog 資源,但無法存取基礎資料

收件人帳戶中的主體必須具有必要的 AWS Identity and Access Management (IAM) 許可。如需詳細資訊,請參閱 存取共用資料表的基礎資料

錯誤:接受 AWS RAM 資源共用邀請時「關聯失敗,因為呼叫者未經授權」

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

$ 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 } ] }

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

錯誤:「未授權授予資源的許可」

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

錯誤:「拒絕存取以擷取 AWS 組織資訊」

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

如需詳細資訊,請參閱Required permissions for cross-account grants

錯誤:「找不到組織 <organization-ID>」

已嘗試與組織共用資源,但未啟用與組織共用。啟用與組織的資源共用。

如需詳細資訊,請參閱 AWS RAM 使用者指南 中的啟用與 AWS 組織共用

錯誤:「湖形成許可不足:組合不合法」

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

ConcurrentModificationException 對外部帳戶的授予/撤銷請求

當使用者對 LF-Tag 政策上的主體提出多個並行授予和/或撤銷許可請求時,Lake Formation 會擲回 ConcurrentModificationException。使用者需要擷取例外狀況,並重試失敗的授予/撤銷請求。使用 GrantPermissions/RevokePermissions API操作的批次版本 - BatchGrantPermissions並透過減少並行授予/撤銷請求的數量,在一定程度上BatchRevokePermissions緩解此問題。

使用 Amazon EMR存取跨帳戶共用的資料時發生錯誤

當您使用 Amazon 從另一個帳戶EMR存取與您共用的資料時,部分 Spark 程式庫會嘗試呼叫Glue:GetUserDefinedFunctionsAPI操作。由於 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 受管許可版本

您 (data lake 管理員) 可以依照 AWS RAM 使用者指南中的指示,將AWS RAM 受管許可更新為較新的版本,或者您可以撤銷資源類型的所有現有許可並加以授予。如果您撤銷許可, 會 AWS RAM 刪除與 AWS RAM 資源類型相關聯的資源共用。當您請求許可時, AWS RAM 會建立新的資源共用,以連接最新版本的 AWS RAM 受管許可。

藍圖和工作流程疑難排解

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

我的藍圖在「使用者:<user-ARN> 未獲授權執行:iam:PassRole on resource:<role-ARN>」失敗

已嘗試建立藍圖,該使用者沒有足夠的許可來傳遞所選角色。

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

如需詳細資訊,請參閱Lake Formation 角色和IAM許可參考

我的工作流程失敗,「使用者:<user-ARN> 未獲授權執行:iam:PassRole on resource:<role-ARN>」

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

如需詳細資訊,請參閱(選用) 建立工作流程IAM的角色

我工作流程中的爬蟲程式失敗,其中「資源不存在或請求者無權存取請求的許可」

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

工作流程中的爬蟲程式失敗,「呼叫 CreateTable 操作時發生 (AccessDeniedException) 錯誤...」

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

如需詳細資訊,請參閱DATA_LOCATION_ACCESS