如何使用python中的lambda函数在通过S3连接的AWS athena中进行查询

如何使用python中的lambda函数在通过S3连接的AWS athena中进行查询,python,amazon-web-services,amazon-s3,boto3,amazon-athena,Python,Amazon Web Services,Amazon S3,Boto3,Amazon Athena,我将.csv文件保存在S3存储桶中。我能够使用AWS Athena查询S3的数据。是否有任何方法可以将lambda函数连接到athena并从lambda函数查询数据。请帮忙 谢谢是的!你可以使用boto3与雅典娜互动 特别是,您可能需要start\u query\u执行方法 正如Chris Pollard所说,您可以使用boto3从Lambda函数查询Athena 要初始化Athena客户端,请执行以下操作: import boto3 client = boto3.client('athena

我将.csv文件保存在S3存储桶中。我能够使用AWS Athena查询S3的数据。是否有任何方法可以将lambda函数连接到athena并从lambda函数查询数据。请帮忙


谢谢

是的!你可以使用boto3与雅典娜互动

特别是,您可能需要start\u query\u执行方法


正如Chris Pollard所说,您可以使用boto3从Lambda函数查询Athena

要初始化Athena客户端,请执行以下操作:

import boto3
client = boto3.client('athena')
然后,您将执行查询:

queryStart = client.start_query_execution(
    QueryString = 'SELECT * FROM myTable',
    QueryExecutionContext = {
        'Database': 'myDatabase'
    }, 
    ResultConfiguration = { 'OutputLocation': 's3://your-bucket/key'}
)
如果您希望在Lambda中检索结果(由于时间限制,可能使用第二个函数-请参阅-另请注意,您每100ms运行时间付费),您可以使用
get\u query\u execution
来确定查询的状态:

queryExecution=client.get\u query\u执行(queryStart.QueryExecutionId)

您需要为
QueryExecution.Status.State
字段的值分析返回的对象。使用
get\u query\u execution()
继续更新对象,直到结果
成功

注意:请不要在连续循环中调用
get\u query\u execution()
。相反,使用一个API来防止被该API限制。您应该对所有API调用使用这种方法

然后,您可以使用
get\u query\u results()
检索要处理的结果:

results=client.get\u query\u执行(QueryExecutionId=queryStart['QueryExecutionId']

您可以使用boto3客户端查询Athena表


您可以在此处了解更多信息:

正是这一点:pHi pollard我尝试使用他们提供的语法,但无法指定要在语法中插入的参数。如果可能的话,你能给我一个小教程吗。这对我很有帮助。实际上,boto3提供的文档是不够的。任何例子都可以。谢谢并问候VipendraHi我犯了一个错误。它显示“errorMessage”:“参数验证失败:\n输入中缺少必需的参数:\“ResultConfiguration\”请阅读方法调用的文档。命令client.get\u query\u execution(queryStart.QueryExecutionId)给出了错误AttributeError:“dict”对象没有属性“QueryExecutionId”。我必须切换到client.get_query_execution(QueryExecutionId=queryStart['QueryExecutionId'])