[英]Connect to Athena without access?
我需要使用 Python 连接到 Athena。
使用的代码如下:
import pyathena
import pandas as pd
athena_conn = pyathena.connect(access_key,
secret_key,
s3_staging_dir,
region_name)
df = pd.read_sql("SELECT * FROM db.tableLIMIT 10", athena_conn)
df.head(5)
我个人无法使用我的 AWS 访问 Athena,因此我借用了access_key
和secret_access_key
来自我的同事,他可以访问 Athena。
运行代码时出现以下错误:
An error occurred (AccessDeniedException) when calling the StartQueryExecution operation:
User: arn:aws:iam::xxxxx:user/xxxx is not authorized to perform: athena:StartQueryExecution on resource:
arn:aws:athena:us-east-1:xxxx:workgroup/primary because no identity-based policy allows the
athena:StartQueryExecution action
unable to rollback
是因为我的帐户没有访问 Athena 的权限吗?
来自pyathena · PyPI文档:
from pyathena import connect
cursor = 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").cursor()
请注意,每个参数都指定了名称aws_access_key_id="YOUR_ACCESS_KEY_ID"
,而不仅仅是位置。 传递给 function 时可能需要指定每个参数的名称。
此外,确保提供的凭证与有权使用 Amazon Athena并且有权访问 Amazon S3 中的基础数据的 IAM 用户相关联。
假设您编辑的错误消息中的用户是您的同事用户,那么他没有所需的权限。 至少不适用于您正在使用的工作组。
如果不发布附加到他的用户的政策文件,很难说出您的同事拥有哪些确切权限。
但是,错误消息很清楚,他缺少权限: athena:StartQueryExecution
。 此权限必须在基于身份的策略中授予其用户。
请注意,还必须为相关资源(或所有资源的 *)授予权限。
此权限的有效策略文档示例如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "athena:StartQueryExecution",
"Resource": "arn:aws:athena:*:12345:workgroup/*"
}
]
}
此策略允许对帐户12345
中的所有工作组执行 StartQueryExecution。 有可能他完全没有此权限或拥有特定工作组的权限。
如果他拥有特定工作组的权限,您应该将客户端配置为在该工作组中运行查询。 目前您正在尝试在默认的primary
工作组上运行它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.