lambda功能可进行achena查询,查询结果不在S3输出存储桶中



我正在通过python boto3查询与雅典娜的S3桶。查询成功,没有错误,但是输出S3存储桶是空的。但是,当我通过Python控制台运行查询时,它可以正常运行,并且有.csv和.csv.metadata,并带有achena查询的结果,会导致S3输出桶。

我添加了此页面上提到的权限。https://docs.aws.amazon.com/athena/latest/ug/cross-account-permissions.html

不确定这是否重要,但是S3输出存储桶中的查询结果不应由无服务器管理(这就是我用于项目的用途(,它是现有的S3存储桶,我使用了此软件包和指令https:https://www.npmjs.com/package/serverless-plugin-escisting-s3,并且在tymerda triger时会倾倒DynamoDB和Glue目录信息。

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

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

我通过完全访问AthenaGlue解决了它。将这些政策添加到您的Lambda角色中。

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

最新更新