Lambda函数进行雅典娜查询,并且查询结果不在S3输出存储桶中

时间:2019-06-28 23:58:20

标签: python amazon-s3 boto3 amazon-iam amazon-athena

我正在通过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

1 个答案:

答案 0 :(得分:0)

对于遇到此问题的任何人,我都可以通过更改我的 lambda 函数的权限来解决它。因此,请确保您的 lambda 角色具有正确的政策。

我通过授予对 AthenaGlue 的完全访问权限解决了这个问题。将这些政策添加到您的 lambda 角色中。

完全访问权限可能比您实际需要的更多,因此只需从这些服务中选择必要的策略