簡體   English   中英

從 boto3 在 AWS Athena 中運行查詢提供了錯誤的權限

[英]Run queries in AWS Athena from boto3 gives bad permissions

嘗試從 python (boto3) 向 AWS Athena 運行查詢時,會引發以下錯誤:

botocore.exceptions.ClientError:調用 StartQueryExecution 操作時發生錯誤 (AccessDeniedException):用戶:arn:aws:iam::account-id:user/sa.prd 無權執行:athena:StartQueryExecution on resource:arn: aws:athena:us-east-1:account-id:workgroup/primary

我無權訪問 AWS 控制台。 我還被告知還有另一個用戶“sa.prd.athena”具有正確的權限(“sa.prd”似乎沒有發生這種情況)。

  • 是否可以使用 boto3 指定不同的用戶? 現在不要使用任何特定用戶。
  • 如果無法使用其他用戶,是否可以設置 boto3 在運行時執行中使用的某種策略(這是因為我無權訪問 AWS 管理控制台)

謝謝,

BR

AWS 中的用戶由用於簽署對 AWS API 的 API 調用的憑證確定。 一般來說,有幾種方法可以將這些憑證傳遞給 AWS 開發工具包(尤其是 boto3)。

它在這些地方查找憑據,並從它們所在的第一個地方獲取它們:

  1. 實例化客戶端時的硬編碼憑據
  2. 存儲在環境變量中的憑據
  3. 存儲在~/.aws/credentials中的憑據(默認情況下,它使用默認配置文件的憑據)
  4. 在 EC2/ECS/Lambda 上的實例元數據服務中

由於您沒有直接設置憑據,我假設它從 SDK 配置 (3) 中獲取它們,因此您可以在實例化 Athena 客戶端時覆蓋它們,如下所示:

import boto3

athena_client = boto3.client(
    'athena',
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    aws_session_token=SESSION_TOKEN
)

這是來自文檔的改編示例,您需要指定您的憑據而不是大寫變量。

不過,硬編碼這些被認為是不好的做法,因此您可能希望使用環境變量來研究選項 (2),或者在本地 SDK 中設置另一個配置文件並告訴客戶端使用它。 這方面的信息可以在我上面鏈接的 boto3-docs 中找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM