как создать таблицу автоматически в aws aurora serverless с бессерверной структурой - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь создать таблицу автоматически с npm migrate всякий раз, когда мы развертываем какие-либо изменения с бессерверной структурой. Это нормально, когда я использовал базу данных Aurora. Но я переехал на Aurora Serverless RDS (регион Сидней), он вообще не работает. Поскольку Aurora Serverless RDS сам работает внутри VP C, поэтому, когда нам нужно получить к нему доступ, лямбда-функция должна быть на том же VP C.

PS: мы используем Github Action как конвейер для развертывания всего в Lambda.

Пожалуйста, дайте мне знать, как решить эту проблему, спасибо.

1 Ответ

1 голос
/ 19 июня 2020

Есть только два основных c способа приблизиться к этому: открыть туннель в VP C или запустить обновления внутри VP C. Вот некоторые из подходов к каждому, которые я использовал в прошлом:

Туннель в VP C:

  • VPN, например OpenVPN.

    Относительно проста в настройке, но предназначена для соединения двух сетей вместе и представляет собой постоянную плату за сервер. Будет хорошо, если вы выполняете миграцию, скажем, из своей корпоративной сети, но не из того, что вы хотите попробовать настроить для действий GitHub (или любого стороннего инструмента сборки).

  • Хост бастиона

    Это экземпляр EC2, который работает в publi c su bnet и предоставляет миру S SH. Вы устанавливаете соединение S SH с Bastion, а затем туннелируете любой протокол, который хотите под ним. Обычно запускается как «всегда включенный» экземпляр, но вы можете запускать и останавливать программно.

    Я думаю, что это добавит сложности вашей сборке. Предполагая, что вы просто хотите запускать по запросу, вам понадобится сценарий, который запустит экземпляр и будет ждать, пока он будет готов принимать соединения. Вы, вероятно, также захотите настроить правила входа группы безопасности, чтобы разрешить трафик c только с вашего компьютера сборки (чей IP-адрес, вероятно, будет изменяться для каждой сборки). Затем вам нужно будет открыть туннель, запустив ssh в фоновом режиме, и снова закрыть его после завершения сборки.

Запуск миграции внутри VP C :

  • Простейший подход (imo) - просто переместить вашу сборку внутрь VP C с помощью CodeBuild. Если вы сделаете это, вам понадобится NAT, чтобы сборка могла общаться с внешним миром. Также не так просто настроить CodeBuild для взаимодействия с GitHub, как это должно быть (есть один ручной шаг, на котором вам нужно предоставить токен доступа).

  • Если вы делаете контейнерный развертывание с помощью ECS, тогда я рекомендую упаковать ваши миграции в контейнер и развернуть его в том же кластере, в котором выполняется приложение. Затем вы запускаете запуск с помощью aws ecs run-task (я предполагаю, что есть что-то подобное для EKS, но не использовал его).

  • Если вы еще не работаете с ECS / EKS, вы можете реализовать ту же идею с помощью AWS Batch .

...