微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

StartQueryExecution 操作:无法验证/创建输出存储桶

如何解决StartQueryExecution 操作:无法验证/创建输出存储桶

我正在尝试使用 python 在 Athena 上执行查询

示例代码

   client = boto3.client(
        'athena',region_name=region,aws_access_key_id=AWS_ACCESS_KEY_ID,aws_secret_access_key=AWS_SECRET_ACCESS_KEY
    )
    execution = client.start_query_execution(
        QueryString=query,QueryExecutionContext={
            'Database': database
        },WorkGroup=workgroup,ResultConfiguration={
            'OutputLocation': S3_OUTPUT_LOCATION
        }
    )

这是有效的代码,但我遇到了一个不寻常的场景。

InvalidRequestException: An error occurred (InvalidRequestException) when calling the StartQueryExecution operation: Unable to verify/create output bucket <BUCKET NAME>
  • 根据 DevOps 应用程序拥有所有权限,它应该可以工作。
  • 我们尝试在 AWS Athena 控制台(查询编辑器)上执行相同的查询。它正在工作。
  • 然后我们重新运行 python 脚本,它没有抛出任何错误
  • 但是在第二天,python 脚本开始抛出相同的 InvalidRequestException 错误
  • 然后我们在 AWS Athena 控制台(查询编辑器)上执行相同的查询并重新运行 python 脚本,它开始工作。

我们观察了几天这种情况,每 24 小时 python 脚本就会抛出错误,然后我们在 Athena 控制台(查询编辑器)上执行查询并重新运行 python 脚本。 我不明白为什么会这样,是否有任何权限问题。

权限:

{
    "Version": "2012-10-17","Statement": [
        {
            "Sid": "VisualEditor0","Effect": "Allow","Action": [
                "s3:Getobject","athena:GetWorkGroup","athena:StartQueryExecution","athena:ListDatabases","athena:StopQueryExecution","athena:GetQueryExecution","athena:GetQueryResults","athena:GetDatabase","athena:GetDataCatalog","athena:ListQueryExecutions","s3:ListBucket"
            ],"Resource": [
                "arn:aws:s3:::<BUCKET NAME>","arn:aws:s3:::<BUCKET NAME>/*",]
        },{
            "Sid": "VisualEditor1","Action": [
                "s3:PutObject","s3:Getobject","s3:ListBucket","athena:UpdateWorkGroup",],"Resource": [
                "arn:aws:s3:::<BUCKET NAME>/*","arn:aws:s3:::<BUCKET NAME>","arn:aws:athena:*:<BUCKET NAME>/<PATH>",{
            "Sid": "VisualEditor2","Action": [
                "athena:ListDataCatalogs","s3:ListAllMyBuckets"
            ],"Resource": "*"
        }
    ]
}

解决方法

我今天也遇到了同样的错误,发现执行角色也需要 s3:GetBucketLocation 权限,AWS 文档:https://aws.amazon.com/premiumsupport/knowledge-center/athena-output-bucket-error/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。