我正在通过 python boto3 使用 athena 查询 S3 存储桶。查询成功且没有错误,但输出 S3 存储桶为空。但是,当我通过 python 控制台运行查询时,它可以工作,并且在 S3 输出存储桶中有 .csv 和 .csv.metadata 以及雅典娜查询结果。
我已添加此页面上提到的权限。https://docs.aws.amazon.com/athena/latest/ug/cross-account-permissions.html
不确定这是否重要,但查询结果应该所在的 S3 输出存储桶不是由无服务器管理(这就是我在项目中使用的)它是一个现有的 S3 存储桶,我使用了这个包和说明https://www .npmjs.com/package/serverless-plugin-existing-s3并且它适用于 dynamoDB 和胶水目录信息在触发 lambda 时被转储。
def function(event,context):
client = boto3('athena')
query = 'select * from athenaTable'
response = client.start_query_execution(
QueryString=params["query"],
QueryExecutionContext={
'Database': params['database']
},
ResultConfiguration={
'OutputLocation': 's3://bucket-name/key/' #output bucket
}
)
return response