我在 QuickSight 中將 Athena 作為資料來源使用時,如何解決「存取遭拒」錯誤?

3 分的閱讀內容
0

我嘗試在 Amazon QuickSight 帳戶中將 Amazon Athena 作為資料來源使用時,遇到「存取遭拒」錯誤。

簡短說明

以下是您在 Amazon QuickSight 中將 Amazon Athena 作為資料來源使用時,遇到 存取遭拒錯誤的常見原因:

  • 您的 QuickSight 帳戶沒有存取 Amazon Simple Storage Service (Amazon S3) 儲存貯體的所需許可。
  • 您的資料檔案已使用 AWS Key Management Service (KMS) 金鑰加密。
  • 您不必擁有指派給您的必要 AWS Identity and Access Management (IAM) 許可政策。
  • Amazon S3 儲存貯體不存在。或者,用於查詢資料的 IAM 角色並沒有所需的 S3 許可。
  • (使用 AWS Organizations 的 QuickSight 帳戶) 您沒有指派給您的必要服務控制政策 (SCP)。 
  • (使用 Lake Formation 的 Athena 帳戶) 您的 QuickSight 使用者或群組沒有 AWS Lake Formation 許可。 

注意: 在開始疑難排解之前,請確定您可以存取 Athena 中的資料。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱AWS CLI 錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

您的 QuickSight 帳戶沒有存取 Amazon S3 儲存貯體的所需許可

您會收到類似下列內容的錯誤:

"An error has been thrown from AWS Athena client.Permission denied on S3 path:sourceErrorMessage: s3:/example bucket/object name"

若要取得 S3 儲存貯體的許可,請完成下列步驟:

  1. 開啟 Amazon QuickSight 主控台
  2. 選擇管理 QuickSight
  3. 選擇安全和許可
  4. QuickSight 存取 AWS 服務下方,選擇管理
  5. 從 AWS Services 清單,選取 Amazon S3
  6. 選擇選取 S3 儲存貯體,然後選取 S3 儲存貯體。
  7. 選擇Athena 工作群組的寫入許可,然後選擇完成
  8. 選擇儲存

您的資料檔案已使用 AWS KMS 金鑰加密

如果您的資料檔案已使用 AWS KMS 金鑰加密,Amazon S3 會拒絕您存取資料。若要解決此問題,請使用 AWS CLI 或 AWS KMS 主控台授予 AWS KMS 金鑰的 QuickSight 服務角色存取權。 

使用 AWS CLI

請完成下列步驟:

  1. 使用 IAM 主控台找到 QuickSight 服務角色 ARN。

  2. 使用 Amazon S3 主控台尋找 AWS KMS 金鑰 ARN。

  3. 前往包含資料檔案的儲存貯體。

  4. 選擇概觀索引標籤,然後找到 KMS 金鑰 ID

  5. 將 QuickSight 服務角色 ARN 新增到 KMS 金鑰政策。

  6. 執行 AWS CLI create-grant 命令:

    aws kms create-grant --key-id aws_kms_key_arn --grantee-principal quicksight_role_arn --operations Decrypt
    

    **注意:**用 AWS KMS 金鑰的 ARN 取代 aws_kms_key_arn,並用 QuickSight 服務角色的 ARN 取代 quicksight_role_arn

使用 AWS KMS 主控台

若要將 QuickSight 服務角色新增到 AWS KMS 金鑰政策,請變更金鑰政策。然後,將下列許可新增到金鑰政策:

{     "Sid": "Allow use of the key",
     "Effect": "Allow",
     "Principal": {
         "AWS": [
              "arn:aws:iam::aws-account-id:role/service-role/aws-quicksight-service-role-v0",
              "arn:aws:iam::aws-account-id:role/service-role/aws-quicksight-s3-consumers-role-v0"
              ]
         },
         "Action": [
            "kms:Decrypt"
               ],
         "Resource": "*"
}

注意: 在上述政策中,請確定在主體區段中,新增 QuickSight 服務角色的 ARN。

您不必擁有指派給您的必 IAM 許可政策

若要查看哪些政策已指派給您,並驗證政策是否限制您存取,請完成下列步驟:

  1. 開啟 Amazon QuickSight 主控台
  2. 選擇管理 QuickSight
  3. 選擇安全和許可
  4. 選擇 IAM 政策指派
  5. 檢查是否有 Athena 存取權的任何 IAM 政策指派。
  6. 請驗證此政策並未限制您存取 S3 或 Athena。

如果政策限制您存取 S3 或 Athena,則請您的 QuickSight 管理員變更政策。如果您是管理員,請關閉 IAM 政策指派,並編輯政策以包括 S3 和 Athena 許可。如需詳細資訊,請參閱透過 IAM 設定 AWS 服務的精細存取權

S3 儲存貯體不存在。或者,用於查詢資料的 IAM 角色並沒有所需的 S3 許可

如果您收到下列錯誤:

「無法驗證/建立輸出儲存貯體。」

若要解決上述錯誤,請參閱如何解決 Amazon Athena 中的「無法驗證/建立輸出儲存貯體」錯誤?

如果儲存主體不存在,請新增有效的 S3 儲存貯體。前往 Amazon QuickSight 主控台,從 AWS Services 清單選取 Amazon S3。然後,選取用於查詢結果位置的 S3 儲存貯體。

您沒有指派給您 (Organizations) 的必要 SCP

請 Organizations 管理員檢查您的 SCP 設定,以驗證指派給您的許可。如果您是 Organizations 管理員,請參閱建立、更新和刪除服務控制政策

您的 QuickSight 使用者或群組沒有 Lake Formation 許可

如果是使用 Lake Formation 的 Athena 帳戶,您可能會收到下列錯誤:

"An error has been thrown from the AWS Athena client.Insufficient permissions to execute the query.Insufficient Lake Formation permission(s)."

若要授予 QuickSight 的 Lake Formation 許可,您必須是 Lake Formation 管理員。

請完成下列步驟:

  1. 找到 QuickSight 使用者或群組的 ARN。

  2. 執行下列其中一個 AWS CLI 命令:

    describe-user

    aws quicksight describe-user  --user-name user_name  --aws-account-id account_id --namespace default
    

    -or-

    describe-group

    aws quicksight describe-group --group-name group_name  --aws-account-id account_id --namespace default
    

    **注意:**在上述命令中,請將 user_name 取代為您的使用者名稱、將 group_name 取代為您的群組名稱,以及將 account_id 取代為您的帳戶 ID。

  3. 開啟 Lake Formation 主控台

  4. 選擇資料表

  5. 選擇動作,然後選擇許可

  6. 主體清單,選擇授予

  7. SAML 和 Amazon QuickSight 使用者和群組下方,輸入 QuickSight 使用者或群組 ARN。例如,arn:aws:quicksight:region:accountId:user/namespace/username

  8. 選取正確的資料來源,然後選擇全部資料表。資料表許可為選取描述

  9. 選擇授予

授予許可後,請返回 QuickSight 主控台,嘗試再次建立資料集。

相關資訊

搭配 Amazon QuickSight 使用 Athena 時許可不足

對 Amazon S3 和 Amazon Athena 導入 Amazon QuickSight 精細存取控制

開啟 AWS Lake Formation 中 Amazon QuickSight 建立者的精細許可

AWS 官方
AWS 官方已更新 1 年前