我的 AWS Glue 編目程式或 ETL 工作失敗,並出現 AWS Lake Formation 權限錯誤。儘管我設定了所需的 AWS Identity and Access Management (IAM) 權限,但仍發生錯誤。
解決方法
常見的權限錯誤包括預設權限不足,或權限不足以授予其他使用者權限。
預設權限不足
您必須為嘗試查詢資料表的角色提供對預設資料庫的權限。如果缺少這些權限,Lake Formation 將產生類似以下的例外狀況:
"AnalysisException: Unable to verify existence of default database: com.amazonaws.services.glue.model.AccessDeniedException: Insufficient Lake Formation permission(s) on default"
若要授與預設權限:
- 以資料湖管理員身分登入您的 Lake Formation 主控台。
- 在左側窗格中,依序開啟 Permissions (權限)、Data lake permissions( 資料湖權限),然後選擇 Grant (授予)。
- 在授予資料湖權限頁面的 Principals (主體) 下,選擇 Glue 工作的主體類別。
- 在 IAM 使用者和角色下,選擇一個或多個 IAM 角色。
- 在 LF-Tags or catalog resources (LF-Tags 或目錄資源) 下,選擇 Named Data Catalog resources (命名資料目錄資源),然後在 Databases (資料庫) 下,選擇 Default (預設)。如果您沒有看到預設資料庫,請按照後面的說明建立一個。
- 在授予資料湖權限頁面上的 Database permissions (資料庫權限)下,在 Database permissions (資料庫權限),選取 Describe (描述)。
- 選擇 Grant (授予) 按鈕。
- 在 AWS Glue 中重新執行您的工作,並確認工作是否成功。
若要建立預設資料庫 (如果不存在),請執行以下操作:
- 開啟 Administrative roles and tasks (管理角色和任務),然後在 Database creators (資料庫建立者) 下選擇 Grant (授予)。
- 在 Grant permissions (授予權限) 對話方塊中,選擇您的 Glue 角色。
- 在 Grantable permissions (可授權權限) 下,為要授予的特定存取權限選取 Create database (建立資料庫) 權限,然後選擇 Grant (授予)。這會將附加到 AWS Glue 工作的 IAM 角色設定為 Lake Formation 中的資料庫建立者。然後,Lake Formation 會自動建立一個預設資料庫 (如果不存在),並為該角色授予所需的權限。
- 在 AWS Glue 中執行您的工作,並確認工作是否成功。
權限不足,無法授予權限
當您授予對 AWS Glue 資料表的權限時,您必須擁有該資料表的可授權權限。例如,要透過 CloudFormation 範本或 CI/CD 管道授予權限,您必須擁有可授權權限。如果缺少可授權權限,Lake Formation 將產生以下例外狀況:
"AccessDeniedException: An error occurred (AccessDeniedException) when calling the GrantPermissions operation: Resource does not exist or requester is not authorized to access requested permissions."
- 使用命名資源方法為使用者或角色授予對資料表或資料庫的可授權權限。
- 該使用者或角色可以授予權限(例如,透過 AWS CloudFormation 或 CICD 管道)給其他使用者或角色。
相關資訊
管理 Lake Formation 許可
註冊 Amazon S3 位置