我正在通过python boto3用雅典娜查询S3存储桶。查询成功,没有错误,但输出S3存储桶为空。但是,当我通过python控制台运行查询时,它可以工作,并且在S3输出存储桶中有.csv和.csv.metadata和athena查询结果。
我已经添加了此页面上提到的权限。 https://docs.aws.amazon.com/athena/latest/ug/cross-account-permissions.html
不确定这是否重要,但是查询结果应由S3输出存储桶管理的无服务器(这是我在我的项目中所使用的),它是现有的S3存储桶,因此我使用了此软件包和说明{{ 3}},并且它与dynamoDB和g胶工作得很好,而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
答案 0 :(得分:0)
对于遇到此问题的任何人,我都可以通过更改我的 lambda 函数的权限来解决它。因此,请确保您的 lambda 角色具有正确的政策。
我通过授予对 Athena
和 Glue
的完全访问权限解决了这个问题。将这些政策添加到您的 lambda 角色中。
完全访问权限可能比您实际需要的更多,因此只需从这些服务中选择必要的策略