我一直在尝试从我的 lambda 函数(Python3.8)查询 Athena,但尽管尝试添加 if else 语句来检查执行状态,但我不断收到相同的错误,并且在 aws 控制台和 cli 上总是出现相同的错误本地
这是 lambda 函数:
import json
import boto3
import time
def function(event, context):
client=boto3.client('athena')
#setup and perform query
queryStart=client.start_query_execution(
QueryString = 'SELECT * FROM my_s3_bucket_developer limit 8;',
QueryExecutionContext = {
'Database':'mydb'
},
ResultConfiguration = {
'OutputLocation': 's3://athena-results-queries-developer/'
}
)
#get query ID
queryId= queryStart['QueryExecutionId']
#we gonna sleep the function now because we don't know how
#long it will take to execute the query
time.sleep(25)
results=client.get_query_results(QueryExecutionId = queryId)
for row in results['ResultSet']['Rows']:
print(row)
这是我附加到 lambda 函数的 IAM 角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"S3:GetBucketLocation",
"S3:GetObject"
],
"Resource": [
"arn:aws:s3:::athena-results-queries-developer/*",
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"athena:StartQueryExecution",
"athena:StopQueryExecution",
"athena:GetQueryExecution",
"athena:GetQueryResults",
"glue:GetTable"
],
"Resource": "*"
}
]
}
这是我在日志中不断收到的错误
调用 GetQueryResults 操作时发生错误 (InvalidRequestException):查询未成功完成。最终查询状态:FAILED
“错误类型”:“InvalidRequestException”
“堆栈跟踪”: [
[
“/var/task/lambda_function.py”,
26,
“功能”,
“结果=client.get_query_results(QueryExecutionId = queryId)”
],
[
“/var/runtime/botocore/client.py”,
316、
“_api_call”,
“返回self._make_api_call(操作名称,kwargs)”
],
[
“/var/runtime/botocore/client.py”,
626、
“_make_api_call”,
“引发错误类(解析响应,操作名称)”
]
]
}
如果有人能帮助我,我会非常感激 - 我已经尝试解决这个问题好几天了