簡體   English   中英

AWS Athena PyAthena AccessDeniedException

[英]AWS Athena PyAthena AccessDeniedException

我是 AWS 的新手。 我有一個用戶帳戶和兩個角色,一個用於生產,一個用於測試。

通常我登錄我的帳戶並切換到 prod 角色來運行一些簡單的選擇查詢。

現在我想通過 PyAthena 在 Python 中本地使用 Athena。 我已經嘗試了 PyAthena 文檔中的以下資源:

from pyathena import connect
import pandas as pd

conn = connect(aws_access_key_id='YOUR_ACCESS_KEY_ID',
               aws_secret_access_key='YOUR_SECRET_ACCESS_KEY',
               s3_staging_dir='s3://YOUR_S3_BUCKET/path/to/',
               region_name='us-west-2')
df = pd.read_sql("SELECT * FROM many_rows", conn)
print(df.head())

但是總是報錯

An error occurred (AccessDeniedException) when calling the StartQueryExecution operation: User: arn:aws:iam::xxxxxx:user/xxxx@xxxxx is not authorized to perform: athena:StartQueryExecution on resource: arn:aws:athena:ap-southeast-2:xxxxx:workgroup/primary

如果我使用我的用戶帳戶運行相同的查詢而不切換角色,這正是我會得到的錯誤。

我還嘗試profile name parameter in connect添加profile name parameter in connect但即使正確識別了 env,仍然無法正常工作。

有人可以幫助我如何在本地 python 代碼中執行“切換”角色步驟?

問題似乎是由於缺少角色而不是profile_name參數。 如果您查看 pyathena 中的Connection類,您可以在初始化連接時指定一個role_arn變量。 這是我正在談論的線路。

你可能想這樣試試——

conn = connect(aws_access_key_id='YOUR_ACCESS_KEY_ID',
               aws_secret_access_key='YOUR_SECRET_ACCESS_KEY',
               s3_staging_dir='s3://YOUR_S3_BUCKET/path/to/',
               region_name='us-west-2',
               role_arn='<your arn here'>)

我沒有自己測試過,因為我沒有 Athena 設置。

暫無
暫無

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

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