Так как вы создаете таблицу из результата запроса, запрос сначала должен быть выполнен до создания таблицы.API StartQueryExecution
только запускает запрос, затем этот запрос выполняется асинхронно, и вам придется периодически спрашивать Athena, используя GetQueryExecution
, выполняется ли он или нет.
Запросы могут потенциально выполняться очень долгои операции CTAS (Create Table AS), занимают еще больше времени.Вы не хотите запускать функцию Lambda во время работы Athena, это будет стоить вам денег, и если запрос выполняется дольше, чем время ожидания функции, он даже не будет работать.
Вы можете запуститьВыполнение запроса в лямбда-функции, как и вы, но если вы хотите дождаться завершения запроса и создания таблицы, вам нужно как-то периодически запускать код, пока GetQueryExecution
не покажет, что запрос выполнен.
Это может быть сделано, например, с помощью пошаговых функций, где у вас может быть одна лямбда-функция, которая запускает запрос, другая, которая опрашивает на предмет завершения, которая вызывается снова и снова, и конечная лямбда-функция, которая, например, оборачивает вещи.В пошаговых функциях для такого рода процессов есть хорошие шаблоны.