Создаем свою базу данных в облаке Amazon


Хочу поделиться историей про работу с данными, начиная от их загрузки в облако и заканчивая созданием дашбордов для аналитики самих данных. Тема не для одного поста, поэтому будем начинать постепенно. Сегодня подробно рассмотрим, как создать и настроить  свой первый инстанс в облаке Amazon и установить на него базу данных Postgres. Погнали!

Создание инстанса RDS


Итак, почему именно Amazon? Так уж получилось, что свое первое знакомство с облачными

системами я начал именно с него. Но если вы планируете развертывать серьезную

инфраструктуру в облаке, то стоит провести предварительный рисерч на тему ценообразования

у разных cloud-вендоров. А также принять во внимание юридические аспекты.

Если ваш продукт собирает пользовательские данные россиян, то вы обязаны их хранить

на территории РФ.

В нашем примере мы такими ограничениями не связаны, поэтому начинаем.


В первую очередь создадим сам аккаунт



Т.к. мы начинающие пользователи, то выбираем Базовый план



Логинимся в консоль


Теперь наша задача выбрать, какой сервис Amazon мы хотим развернуть в облаке.
Сейчас у Amazon существует больше 170 сервисов. Нас интересует только
RDS (Rational Database Service). Поскольку мы будем развертывать БД Postgres,
которая относится к типу реляционных баз данных, то RDS нам подходит.
Надо сказать, что Postgres можно было разместить и на сервисе Lightsail. Это более простой вариант развертывания данных, с упором на облачный BI. Но мы будем делать BI совсем другими инструментами.

Находим в списке сервисов RDS, переходим в карточку и жмём большую оранжевую кнопку Create Database




Дальше выбираем location, где наши данные будут физически храниться.

У Amazon сервера по всему миру. но к нам ближе всего сервера из Франкфурта или Лондона.

Я выбрал немецкий вариант



После выбора локейшна опять жмем Create Database



После этого пункта начинается собственно настройка самого инстанса

Выбираем версию БД Postgres, которую хотим развернуть. Я выбрал последний стабильный

релиз. А также необходимо выбрать Шаблон размещения.

На выбор три варианта - Production, Dev/Test и Free Tier. Для наших целей выберем последний. 



Дальше заносим наши Credantials, а проще говоря, реквизиты доступа (мастер юзернейм и пароль к БД) Пароль лучше записать сразу отдельно.


Выбираем класс инстанса. Я выбрал Burstable (т.е. позволяющий увеличивать его размер с возрастанием нагрузки. Начинаем с t2.micro, 1GB RAM, 1 CPU.


Дальше указываем тип хранения: General Storage на SSD дисках, 20GB

Раздел Availability & Durability пропускаем. Для наших тестовых целей это не нужно.

В Connectivity выбираем тип виртуального сервера. Нам достаточно default варианта. Subnet также оставляем default




Дальше идет очень важный пункт, о том какой вид доступа к БД следует организовать.

Будет он публичный или нет. Публичный доступ означает, что любой человек, знающий ваши credentials сможет войти в БД. Как мы понимает. в случае утечки или подбора пароля такой вариант не обеспечивает безопасность. Не публичный доступ требует настройки специальных правил VPN для доступа. Обычно этим занимаются специально обученный люди, которые отвечают за безопасность. Для нашего примера мы остановимся на публичном доступе, хотя еще раз повторю, такой вариант не следует использовать для продакшена. Выбираем Yes.




Раздел Database Authentication. Выбираем вариант с Password. Вариант с IM и Kerberos подходят для организации доступа большого количества сотрудников с разграничением прав по ролям



Далее задаем название нашей БД и выбираем с какой частотой следует делать бэкапы БД. Чем чаще будет делаться бэкап, тем выше будет ежемесячный billing.

Я хоть и выбрал для примера частоту 36 суток, но по факту. для тренировочной среды бэкап не нужен.



Раздел мониторинг можно оставить включенным. Он отвечает за мониторинг доступности

процессоров.




Настройки Maintenance оставляем, как на скрине. Deletion protection для наших тестовых целей не нужен, пропускаем.



В конце читаем оповещалку по стоимости использования (про это поговорим в конце) и жмем еще раз кнопку Create Database




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



Настройка доступа и подключение к БД


Подключаться к нашей БД мы будем через стороннего SQL-клиента DBeaver,

хотя в принципе, это может быть любой другой клиент, с которым вам удобно работать.

Как показала практика, выставление в настройках инстанса просто Public access не дает клиенту установить соединение. Чтобы все заработало, надо сделать еще несколько настроек

в разделе Connectivity & Security. Переходим в этот раздел и выбираем VPC security groups



Выбираем Edit inbound rules


В разделах Port, Protocol, Port range выбираем соответственно All Traffic, All, All. Сохраняем изменения.



Открываем клиент DBeaver и выбираем тип коннектора - PostgreSQL



В настройках соединения заносим реквизиты доступа, которые берем из консоли RDS Во вкладках Connectivity & Security это Endpoint и Port для Хоста и Порта соответственно. И во вкладке Configuration берем название инстанса для пункта База данных и имя пользователя и пароль доступа.

После того, как все занесли, жмем Тест соединения для проверки.

Ура!


Резюме


Итак, мы создали наш первый инстанс в облаке Amazon, развернули на нем БД Postgres, настроили доступ к инстансу и подключились SQL-клиентом к нашей БД.

Напоследок, я поделюсь одним лайфхаком, который сбережет вам чуток нервов.

Ваш следующий сеанс работы с облаком Amazon вы, скорее всего,

начнете с логина в консоль сервиса. И рискуете быть неприятно удивлены,

что никакого инстанса, над которым вы трудились несколько часов прошлый раз,

нет и в помине. Не спешите расстраиваться!

Нюансом здесь является то, что по умолчанию RDS открывает локейшн для США -  Ohio.

А мы, если вы не забыли, создавали наш инстанс в локейшене Frankfurt.

Переключитесь на этот локейшн и вы увидите ваш Postgres-инстанс, готовый к работе!

В следующих постах я расскажу про два способа, как можно закачать сами данные в нашу БД.



















































Популярные сообщения из этого блога

Быстрый импорт в базу данных с помощью DBeaver

Jupyter-фишки, которые облегчат жизнь аналитику

Два способа загрузить свой датасет в Python

5 приемов при работе с модулем datetime в Python

Чистка и препроцессинг данных. Готовим датасет для ML.