Node-RED:Введение/Запуск на Amazon Web Services

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Запуск на Amazon Web Services[1]

Это руководство расскажет о том, как запустить Node-RED на платформе AWS.

Это можно сделать двумя способами:

Запуск на AWS EBS

Для того, чтобы запустить Node-RED на AWS EBS, вам понадобится следующее:

  • Аккаунт в AWS, в котором активированы Elastic Beanstalk, SQS и S3
  • На вашем ПК должна быть установлена командная строка EB (см. тут)
  • Создайте учетные данные для AWS и сохраните их в локальный файл («~/.aws/config» или «Usersusername.awsconfig») как показано ниже:
[profile eb-cli]
aws_access_key_id = key id
aws_secret_access_key = access key

Создаем EB-приложение

  • Создаем новую папку (например, «demoapp»)
  • При помощи «cd» перемещаемся в эту директорию
  • Запускаем «eb init», чтобы создать новый EB-проект. Выбираем нужный регион, в качестве платформы указываем Node.js. Вас спросят, хотите ли вы использовать SSH. Если да и если вы хотите сгенерировать новую пару ключей, убедитесь, что SSH установлен на вашем ПК
  • Залогиньтесь в консоли управления AWS, откройте меню «Identity and Access Management» («IAM») и добавьте политику «AmazonS3FullAccess» к роли «aws-elasticbeanstalk-ec2-role». Это даст полный доступ от EBS к S3, поэтому вы, возможно, захотите отредактировать правила этой политики, чтобы задать нужные правила безопасности

Создаем приложение Node-RED

  • Создаем файл «package.json» со следующим содержимым (поменяйте «demoapp» на свое название):
{   
 "name": "demoapp",
 "version": "1.0.0",
 "description": "node-red demo app",
 "main": "",
 "scripts": {
     "start": "./node_modules/.bin/node-red -s ./settings.js"
 },
 "engines": {
     "node": "10.x"
 },
 "dependencies": {
     "node-red": "0.20.x",
     "aws-sdk": "2.4.x",
     "node-red-contrib-storage-s3": "0.0.x",
     "when": "3.7.x"
 },
 "author": "",
 "license": "ISC"
}
  • Скопируйте в директорию своего приложения стандартный файл «settings.js» Node-RED
  • Отредактируйте файл «settings.js», добавив в секцию «module.exports» строчки ниже (в свойстве «awsRegion» нужно задать значение, которое вы использовали в «eb init», а в свойстве «awsS3Appname» – собственное название приложения):
awsRegion: 'eu-west-1',
awsS3Appname: 'demoapp',
storageModule: require('node-red-contrib-storage-s3'),
  • При помощи командной строки перейдите в корневую папку приложения и запустите «eb create». Вы, возможно, захотите задать для своего приложения какое-то более уникальное название. Запуск займет много времени, но в итоге все должно завершиться успешно

Настройка доступа к Node-RED

Теперь доступ к Node-RED можно получить прямо через URL приложения. Но это небезопасно и не очень хорошо для записи логов. Поэтому мы настроим прямой доступ к административному порту Node-RED в экземпляре EC2, который он использует.

  • Зайдите в консоль управления AWS, кликните на «EC2», а затем на «Security Groups». Выберите группу с таким же названием, как у вашего приложения, и описанием «Security Group for ElasticBeanstalk Environment». Выбрав, кликните на «Actions», а потом на «Edit inbound settings». Появится окно для установки правил. Добавьте новое правило. В поле «Type» задайте «ALL Traffic», а в «Source»«My ip». Сохраните правило.
  • Выберите EC2-экземпляр, на котором запущено приложение Node-RED. Скопируйте его IP-адрес.
  • Введите этот IP-адрес в адресную строку браузера, добавив порт «8081». Это даст прямой доступ к административной консоли Node-RED.

Примечание: Доступ к приложению Node-RED также можно получить через публичный IP-адрес, поэтому было бы неплохо также устранить возможность этого доступа (т.е. удалить правило с типом «HTTP» и портом «80»).

Готово! Вы запустили на EBS экземпляр Node-RED. Все созданные вами потоки будут сохранены в AWS S3. То есть даже после удаления приложения эти потоки по-прежнему будут доступны на случай, если вы захотите сделать повторную развертку.

Запуск на AWS EC2 при помощи Ubuntu

Создание базового EC2-образа

  1. Залогиниваемся в консоли AWS EC2
  2. Кликаем на «Launch Instance»
  3. В меню «Quick Start» выбираем «Ubuntu Server...»
  4. Далее выбираем тип экземпляра. В качестве отправной точки подойдет «t2.micro»
  5. На вкладке «Configure Security Group» добавляем новое правило типа «Custom TCP Rule» с портом «1880»
  6. В финальной вкладке «Review» кликаем на кнопку «Launch»
  7. Консоль попросит вас задать пару SSH-ключей. Выбираем пункт «Create a new key pair» и кликаем на кнопку «Download key pair». Ваш браузер сохранит на ПК файл с расширением «*.pem» – скоро он вам пригодится. Наконец, кликаем на «Launch»

Спустя пару минут ваш EC2-экземпляр будет запущен. IP-адрес этого экземпляра можно найти в консоли.

Настройка Node-RED

Далее нам нужно залогиниться в EC2-экземпляре, а затем установить Node.js и Node-RED.

О том, как подключиться к своему EC-экземпляру читайте в этом руководстве на сайте AWS.

Залогинившись, устанавливаем Node.js и Node-RED.

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential
sudo npm install -g node-red

После этого вы сможете протестировать свой экземпляр, запустив команду «node-red». Примечание: У вас могут выскочить ошибки, связанные с нодом «serial» – их можно проигнорировать.

После запуска Node-RED вы можете открыть сам редактор при помощи следующей команды:

http://<ip-адрес-вашего-экземпляра>:1880

Если вам нужно, чтобы Node-RED запускался автоматически при перезапуске EC2-экземпляра, то это можно настроить с помощью «pm2»:

sudo npm install -g pm2
pm2 start `which node-red` -- -v
pm2 save
pm2 startup

Примечание: Финальная команда попросит у вас запустить еще одну команду – сделайте, как она попросит.

Что дальше

В этом руководстве мы лишь поверхностно затронули то, как можно настроить свой экземпляр для запуска на EC2. Node-RED – это «просто» Node.js-приложение, запускающее HTTP-сервер, поэтому в сети можно найти немало руководств о том, какие еще настройки можно задать.

См.также

Внешние ссылки