Автор оригинала: Josh Simpson.
Вступление
Это не преувеличение, чтобы сказать, что информация и данные управляют миром. Почти любой Приложение, от социальных сетей и веб-сайтов электронной коммерции для простых временных трекеров и приложений для рисования, опираются на очень базовую и фундаментальную задачу хранения и извлечения данных, чтобы пройти как ожидаемое.
Amazon’s Служба реляционной базы данных (RDS) предоставляет простой способ получить базу данных, установленную в облаке, используя любой из широкого спектра технологий реляционных баз данных. В этой статье мы собираемся настроить базу данных на RDS и хранить данные на нем с приложением узла.
Предпосылки
Amazon Web Services.
Amazon Web Services (AWS) предоставляет коллекцию инструментов для строительства приложений в облаке. Поскольку RDS – это служба AWS, нам нужно будет создать с учетной записью AWS.
AWS имеет свободный уровень для многих потрясающих вещей, а RDS не является исключением – вы можете использовать 750 часов (31 день) месяц db.t2.micro
Использование базы данных бесплатно в течение 12 месяцев.
Почтальон
Postman – это полезный инструмент для создания и отправки запросов. Мы будем использовать это в узле половины статьи, чтобы проверить код, который мы написали.
Почтальон является необязательным, и действительно, вы можете использовать любой инструмент для проверки конечной точки, даже ваш интернет-браузер.
Настройка экземпляра RDS
Во-первых, мы собираемся создать наш кластер экземпляра RDS. Голова к AWS и Войти Отказ
Как только вы вошли в систему, нажмите «Услуги» В левом верхнем углу, а затем искать «RDS» Отказ Вам будет представлено страницу, которая выглядит что-то подобное:
В меню слева выберите «Базы данных» Отказ Это обычно отображает список кластеров экземпляров RDS, которые мы создали, но у нас еще нет.
Чтобы создать один, нажмите оранжевый «Создать базу данных» кнопка. Вам следует представить страницу, которая выглядит как:
AWS недавно представил «Легко создавать» Способ создания новых экземпляров RDS, так что давайте использовать это.
Под «Тип двигателя» Мы будем использовать «Amazon Aurora» Собственный базы данных Amazon, оптимизированный для RDS. Для издания мы оставим этот набор на «Amazon Aurora с MySQL 5.6 совместимость» Отказ
Под «DB размер экземпляра» Выберите ‘Dev/test’ Опция – это менее мощный (и дешевый) тип экземпляра, но все еще более чем достаточно для того, что нам это нужно.
«БД кластер идентификатора» Название кластера базы данных, которую мы создаем. Давайте позвоним наше My-Node-база данных
пока что.
Для главного имени пользователя, оставьте его как Админ
Отказ Наконец, у нас есть возможность получить основной пароль, созданный автоматически. Для простоты этого учебника давайте настроим нашим собственным.
Убедитесь, что он безопасен, так как это главное имя пользователя и пароль!
Наконец, прокрутите вниз и нажмите «Создать базу данных» Отказ Требуется несколько минут до полного обеспечения экземпляра RDS:
Прежде чем начать работу на нашем приложении узла, нам нужно убедиться, что мы можем подключиться к экземпляру. Выберите этот экземпляр, который вы только что создали (он будет вариантом, который заканчивается в Excource-1
) и принимайте заметку значения под «Конечная точка» Отказ
На правой стороне, под «Группы безопасности VPC» , нажмите на ссылку – это приведет вас к группе безопасности, которые были настроены для базы данных. Группы безопасности по существу являются правилами брандмауэра относительно того, кто имеет к тому, кто не может создавать связи с ресурсом.
В настоящее время этот устанавливается только для разрешения подключений от ресурсов, которые имеют одинаковую группу безопасности.
Выбор . «Действия» Выпадайте вверху, перейдите к «Изменить входящие правила» Отказ В этом диалоговом окне нажмите «Добавить правило» Отказ Для нового правила, под «Тип» , выберите «Все трафики» Отказ Под «Источник» , выберите «Где-нибудь» Отказ
Вы должны оказаться с чем-то, что выглядит так:
Вернитесь к RDS, а «Изменить» экземпляр. Здесь, на «Сеть и безопасность» Раздел, под «Доступность общественности» , мы хотим выбрать «Да» – Это позволяет нам подключаться к базе данных с наших машин – в противном случае нам нужно будет Поместите наше приложение на экземпляр EC2 , что не в центре этой статьи.
Ваш экземпляр RDS теперь должен быть готов к работе! Давайте напишем какой-нибудь код для взаимодействия с ним.
Узел приложения
Чтобы взаимодействовать с нашим приложением, мы собираемся создать очень простое API, которое позволяет нам хранить пользовательские профили через Express.js. Прежде чем мы сделаем это, нам нужно создать таблицу внутри нашего экземпляра RDS, чтобы сохранить данные.
Давайте создадим папку, переместите в него и инициализируйте пустой приложение Node.js с конфигурацией по умолчанию:
$ mkdir node-rds $ cd node-rds $ npm init -y
Затем давайте установим необходимые зависимости:
$ npm install express --save $ npm install mysql --save
И, наконец, мы хотим создать два файла JavaScript – один из них будет нашему приложением Express, другой будет один сценарий для создания таблицы в нашей базе данных:
$ touch index.js $ touch dbseed.js
Сценарий создания таблиц
Давайте начнем с dbseed.js
файл:
const mysql = require('mysql'); const con = mysql.createConnection({ host: "", user: "admin", password: " " }); con.connect(function(err) { if (err) throw err; console.log("Connected!"); con.end(); });
Обязательно поменяйте
На конечную точку мы отметили ранее, и заполните пароль. Что будет делать этот кусок кода, – это попытка подключения к базе данных – если она успешна, он будет запустить анонимную функцию, которая журналы ‘Связанный!’ , а затем немедленно закрыть соединение.
Мы можем быстро проверить, настроен ли он правильно запущенным:
$ node dbseed.js
Приложение должно вернуть ‘Связанный!’ Отказ Если это не так, вероятно, проблема с настройками безопасности – вернитесь к установлению RDS и убедитесь, что вы все правильно сделали.
Теперь, когда мы знаем, что мы можем определенно можно подключить к нашей базе данных, нам нужно создать таблицу. Давайте изменим нашу анонимную функцию:
con.connect(function(err) { if (err) throw err; con.query('CREATE DATABASE IF NOT EXISTS main;'); con.query('USE main;'); con.query('CREATE TABLE IF NOT EXISTS users(id int NOT NULL AUTO_INCREMENT, username varchar(30), email varchar(255), age int, PRIMARY KEY(id));', function(error, result, fields) { console.log(result); }); con.end(); });
Ожидаемый выход должен выглядеть что-то вроде:
OkPacket { fieldCount: 0, affectedRows: 0, insertId: 0, serverStatus: 2, warningCount: 0, message: '', protocol41: true, changedRows: 0 }
Теперь, когда у нас есть стол для работы, давайте настроим приложение Express для вставки и извлечения данных из нашей базы данных.
Вставьте конечную точку пользователя
Давайте напишем Пост
Запрос на создание пользователя в нашем index.js
файл:
app.post('/users', (req, res) => { if (req.query.username && req.query.email && req.query.age) { console.log('Request received'); con.connect(function(err) { con.query(`INSERT INTO main.users (username, email, age) VALUES ('${req.query.username}', '${req.query.email}', '${req.query.age}')`, function(err, result, fields) { if (err) res.send(err); if (result) res.send({username: req.query.username, email: req.query.email, age: req.query.age}); if (fields) console.log(fields); }); }); } else { console.log('Missing a parameter'); } });
Какой этот код довольно прост – он упакован на информацию из Пост
Запрос и вставьте его в запрос. Этот запрос создаст пользователя в базе данных RDS и регистрирует результаты.
Давайте проверим, работает ли это:
$ node index.js
Почтен, мы хотим создать Пост
Запрос на наш сервер. Давайте введем необходимые параметры и отправьте запрос:
Мы должны получать те же данные, что означает, что он работает правильно, и наша конечная точка вставила пользователя.
Получите конечные точки пользователей
Давайте разработать простое Получить
Конечная точка для более удобного для пользователя способа проверить результаты. Ниже Пост
Запросить обработчик, давайте сделаем другой обработчик:
app.get('/users', (req, res) => { con.connect(function(err) { con.query(`SELECT * FROM main.users`, function(err, result, fields) { if (err) res.send(err); if (result) res.send(result); }); }); });
В вашем браузере перейдите к localhost: 3000/пользователи
И вам следует представить всем вставленным пользователям.
Что дальше?
Закрепите вашу базу данных
Ранее мы сделали наш экземпляр RDS публично доступны, а с полностью открытой группой безопасности. Вы можете создать настроить EC2 и начать затягивать безопасность в вашем экземпляре, удалив публичный доступ и блокируя группу безопасности.
Вы также должны взглянуть на кодовую базу, а также функционально, но может быть уязвим для таких атак, как инъекция SQL – стоит проводить время, чтобы пользователи не могли выполнять действия в вашей базе данных, которые вы не намерены.
Эксперимент с чтением/записью
Если вы погрузитесь немного глубже в RDS, вы можете настроить экземпляры, специально для чтения или записи или записи – это может помочь с защитой вашего экземпляра, но и если вы имеете дело с большим количеством операций с базой данных, это может помочь оптимизировать производительность ваших баз данных.
Попробуйте разные конфигурации
Мы использовали AWS ‘«Easy Create», чтобы сделать нашу базу данных – она стоит вернуться и пробовать различные конфигурации, которые вы можете установить RDS, чтобы удовлетворить ваши особые потребности.
Прекратите свой экземпляр RDS!
Если вы не планируете продолжить использование экземпляра RDS, обязательно прекратите его! В противном случае вы будете стоерть здоровенный счет в течение месяца.
Заключение
Вы создали экземпляр RDS и заполнили его с помощью данных через конечную точку узла/Express. Это отличный трамплин, чтобы прыгать в более сложные веб-приложения, которые хранят и обслуживают данные для своих пользователей, и с данными, поднимающимися к метеорически в качестве ценного товара, это хорошее время, чтобы подумать о том, с помощью которых вы хотите работать.
Чтобы закончить, помните, что какие-либо данные, которые вы храните, ваша обязанность защитить – всегда убедитесь, что вы понимаете, как построить Безопасный Применение, прежде чем вы начнете вкладывать личные данные людей !!