AWS Athena PyAthena AccessDeniedException
AWS Athena PyAthena AccessDeniedException
我是 AWS 新手。
我有一个用户帐户和两个角色,一个用于生产,一个用于测试。
通常我会登录我的帐户并切换到产品角色以 运行 一些简单的 select 查询。
现在我想在 Python 中通过 PyAthena 在本地使用 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
但即使正确识别了 env 仍然无法正常工作。
有人可以帮我如何在本地 python 代码中执行 'switch' 角色步骤吗?
问题似乎是由于缺少角色而不是 profile_name
参数引起的。如果您查看 pyathena 中的 Connection
class,您可以在初始化连接时指定一个 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 设置。
我是 AWS 新手。 我有一个用户帐户和两个角色,一个用于生产,一个用于测试。
通常我会登录我的帐户并切换到产品角色以 运行 一些简单的 select 查询。
现在我想在 Python 中通过 PyAthena 在本地使用 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
但即使正确识别了 env 仍然无法正常工作。
有人可以帮我如何在本地 python 代码中执行 'switch' 角色步骤吗?
问题似乎是由于缺少角色而不是 profile_name
参数引起的。如果您查看 pyathena 中的 Connection
class,您可以在初始化连接时指定一个 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 设置。