запустить лямбда-функцию только один раз, время будет установлено через 5 минут - PullRequest
0 голосов
/ 29 октября 2018

У меня есть запрос на установку лямбда-функции для инициализации базы данных RDS, но запуск только один раз

Я планирую развернуть функции rds и lambda вместе в одном модуле, но настроен на запуск лямбда-функции 5минут спустя, только один раз.Таким образом, я могу гарантировать, что RDS является активным статусом.

Я не могу установить local-exec или remote-exec, потому что прокси-сервер нашей компании.Terraform не использует openssh / openssl в своих кодах Golang, тогда terraform не понимает ~/.ssh/config

Никаких идей установить лямбда-функцию после однократного запуска через 5 минут и игнорировать изменения позже.

timestamp () в terraform может генерировать время, timeadd () может использоваться для генерации времени на 5 минут позже.

output "time" {
  value = "${timeadd(timestamp(), "5m")}"
}

Но конвертировать в cron(Minutes Hours Day-of-month Month Day-of-week Year) будет сложно.Я чувствую, что не должен делать это в Terraform напрямую.

Обновление 1

Я собираюсь добавить переменную окружения (EXECUTE_TIMESTAMP) к лямбда-функции.Позже подтвердит, помогает ли это или нет.

Таким образом, лямбда проверит timestamp, если не прошло, или более 1 часа, он проигнорирует остальные задачи.Эта лямбда-функция будет запускаться по часам.

Затем, однажды, если я захочу перезапустить эту лямбда-функцию, я легко отрегулирую эту переменную.

Обновление 2

PR был поднят для этой функции формата вывода времени, но в настоящее время он не объединен.

Не уверен, поддерживает ли новая функция формирование крон в качестве вывода или нет.

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Вы можете использовать null_resource (имеет local-exec 5 минут сна), который depends_on и trigger при создании RDS. И сделать лямбду depends_on выше null_resource.

Таким образом, ваша лямбда-функция будет вызываться только один раз после 5 минут создания RDS.

Надеюсь, это поможет.

0 голосов
/ 29 октября 2018

Решение может состоять в том, чтобы вызвать конечный автомат, который будет ждать 5 минут, прежде чем вызвать вашу лямбду.

0 голосов
/ 29 октября 2018

Если вы не собираетесь делать это много, ничего не стоит, чтобы в эти дни максимальный тайм-аут лямбды составлял 15 минут.

Так что, несмотря на то, что это не лучшая часть архитектуры, для простого и нечастого "dev" -скрипта вы можете просто запустить лямбду одновременно с развертыванием RDS и подождать (time.sleep(300)) в течение 5 минут в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...