gpt4 book ai didi

python - AWS Athena PyAthena AccessDeniedException

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:05 25 4
gpt4 key购买 nike

我是 AWS 新手。我有一个用户帐户和两个角色,一个用于生产,一个用于测试。

通常我会登录我的帐户并切换到产品角色来运行一些简单的选择查询。

现在我想通过 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

如果我使用我的用户帐户运行相同的查询而不切换角色,这正是我会得到的错误。

我还尝试在连接中添加配置文件名称参数,但即使正确识别了环境,仍然无法工作。

有人可以帮助我如何在本地 python 代码中执行“切换”角色步骤吗?

最佳答案

问题似乎是由于缺少角色而不是 profile_name 参数造成的。如果您查看 pyathena 中的 Connection 类,您可以在初始化连接时指定一个 role_arn 变量。 Here's the line I'm talking about.

您可能想尝试这种方式 -

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 设置。

关于python - AWS Athena PyAthena AccessDeniedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59232003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com