繁体   English   中英

在没有访问权限的情况下连接到 Athena?

[英]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_keysecret_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM