как создать таблицу автоматически в aws aurora serverless с бессерверной структурой

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

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

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


person PPShein    schedule 18.06.2020    source источник
comment
Как вы строите / развертываете? Можете ли вы использовать CodeBuild?   -  person Parsifal    schedule 18.06.2020
comment
@Parsifal yap, это план б. Но мы используем Github Action для развертывания всего.   -  person PPShein    schedule 19.06.2020


Ответы (2)


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

Туннель в VPC:

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

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

  • Бастионный хозяин

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

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

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

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

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

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

person Parsifal    schedule 19.06.2020
comment
Приятно, что я попытался интегрировать как действие github ›сборка кода› aurora rds serverless. - person PPShein; 22.06.2020

Здесь приведен пример подхода к миграции схемы базы данных с помощью Amazon API Gateway, AWS. Lambda, Amazon Aurora Serverless (MySQL) и Python CDK.

person Samuel James    schedule 14.11.2020