Подключитесь к частной Amazon RDS без EC2

#mysql #amazon-web-services #amazon-rds #amazon-vpc

Вопрос:

Я вижу много статей в Интернете, в которых задействован EC2, но, поскольку мой сервер, по сути, не имеет сервера, я не нашел много информации о том, как получить доступ к моему RDS, как только он станет частным. Может ли кто-нибудь указать мне правильное направление?

Текущее состояние:

  • Общедоступные MySQL RDS
  • Доступ к RDS осуществляется клиентом MySQL на моем локальном компьютере (MySQL Workbench) и функциями AWS Lambda через мое веб-приложение (оба подключаются через SSL).

Будущее состояние:

  • Частные MySQL RDS
  • Частные RDS будут по-прежнему доступны только на моем локальном компьютере и только для отмеченных функций AWS Lambda через мое веб-приложение (я предполагаю, что продолжаю использовать SSL?)

Комментарии:

1. К вашему сведению, как правило, плохая идея отделять базу данных от «вычислений». Наличие базы данных в AWS и ваших вычислений в Интернете приводит к большой задержке, которая повлияет на производительность вашего приложения. Это нормально, если вы просто выполняете специальные запросы, но не очень хорошая идея, если основное приложение разделено по Интернету.

Ответ №1:

В вашем сценарии ваши функции Lambda должны быть настроены для запуска в VPC, если они еще не запущены. Это единственное изменение, необходимое для лямбда-функций.

Однако, когда вы переключаете экземпляр RDS на закрытый, это означает, что он принимает соединения только из VPC. Таким образом, вы больше не можете подключаться непосредственно с локального компьютера к базе данных. Вам нужно пройти через какой-то «мост», чтобы ваш локальный компьютер попал в сеть AWS VPC.

В этом сценарии пользователи либо используют экземпляр EC2 в качестве хоста bastion, либо создают VPN-соединение со своего локального компьютера в AWS VPC. AWS Client VPN-это управляемый сервис, который вы могли бы использовать для этого.

Вам нужно будет оценить цену VPN для клиента, но я думаю, вы можете обнаружить, что один t4g.nano хост EC2 bastion, вероятно, дешевле, и вы также можете остановить экземпляр, когда он вам не нужен, чтобы действительно снизить стоимость.

Комментарии:

1. Единственное, что я хотел бы добавить к ответу @Mark, — это то, что существует третий вариант, называемый менеджером сеансов AWS Systems Manager, который поддерживает перенаправление портов и может использоваться для прокси-сервера локальных подключений вместо хоста бастиона: aws.amazon.com/blogs/aws/…

2. @Nick Насколько я понимаю, у менеджера сеансов System Manager должен быть экземпляр EC2, на котором работает агент System Manager. Другими словами, вы бы использовали диспетчер сеансов SSM вместо SSH, но вы все равно использовали бы хост EC2 bastion. Я не думаю, что он может перенаправить порт непосредственно на экземпляр RDS, не так ли?

3. Да, это совершенно верно, обычно он «продается» как замена хоста бастиона, но в случае RDS ему потребуется экземпляр EC2 с работающим на нем агентом. Так что вы правы, нам все равно понадобится сервер перехода. Единственное, что добавил бы менеджер сеансов в этом случае, — это лучшая подотчетность, поскольку у него есть различные возможности для регистрации большого количества доказательств того, кто что сделал .

4. @MarkB, если я правильно понимаю: Для доступа к частной RDS через мою локальную машину: создайте хост EC2 bastion, поместите EC2 в тот же VPC, что и RDS, и подключитесь к хосту bastion через мою локальную машину для доступа к RDS. Чтобы получить доступ к закрытому RDS с помощью моих функций Lambda, мне нужно поместить Лямбду в тот же VPC, что и RDS. Однако, если функция Lambda использует мой собственный VPC, мне нужно будет предоставить доступ в Интернет к функции Lambda, правильно? Есть ли причины, по которым мне не нужно было бы предоставлять доступ в Интернет? Эти лямбда-функции используют различные SDK Javascript (aws-sdk, stripe и т.д.).

5. Вам нужно будет предоставить вашим лямбда-функциям доступ в Интернет, если они получают доступ к таким вещам, как Stripe. К сожалению, это означает, что вам придется добавить шлюз NAT в VPC, так как функции Lambda в VPC никогда не будут иметь общедоступного IP-адреса, непосредственно назначенного им.

Ответ №2:

Вы можете использовать VPC также с лямбдой. Lambda и RDS могут находиться в одном VPC или в отдельных VPC, объединенных вместе. Документацию Aws для этого сценария можно найти здесь: https://aws.amazon.com/premiumsupport/knowledge-center/connect-lambda-to-an-rds-instance/

Комментарии:

1. Это не решает вопрос о подключении локального (не AWS) компьютера к частному серверу RDS.