Как сказал Крис Поллард, вы можете использовать boto3 для запроса Athena из функции Lambda.
http://boto3.readthedocs.io/en/latest/reference/services/athena.html
Для инициализации клиента Athena:
import boto3
client = boto3.client('athena')
Затем вы выполните ваш запрос:
queryStart = client.start_query_execution(
QueryString = 'SELECT * FROM myTable',
QueryExecutionContext = {
'Database': 'myDatabase'
}
)
Если вы хотите получить результаты в Lambda (возможно, с использованием второй функции, из-за временных ограничений - см. документы - также обратите внимание, что вы платите за 100 мс времени выполнения), вы должны использовать get_query_execution
Чтобы определить статус запроса:
queryExecution = client.get_query_execution(queryStart.QueryExecutionId)
Вам нужно будет проанализировать возвращаемый объект на предмет значения поля QueryExecution.Status.State
. Продолжайте обновлять объект, используя get_query_execution()
, пока не получите результат Succeeded
.
Затем вы можете использовать get_query_results()
, чтобы получить результаты для обработки:
results = client.get_query_results(queryStart.QueryExecutionId)