本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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: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 受管許可版本
您 (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。