0

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

1 回答 1

0

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

我通过完全访问Athena和解决了这个问题Glue。将这些策略添加到您的 lambda 角色。

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

于 2021-02-18T12:30:51.887 回答