如何解决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 举报,一经查实,本站将立刻删除。