Node-RED:Введение/Запуск на Amazon Web Services
Запуск на Amazon Web Services[1]
Это руководство расскажет о том, как запустить Node-RED на платформе AWS.
Это можно сделать двумя способами:
- На сервисе AWS Elastic Beanstalk Service (EBS)
- С помощью Ubuntu-образа на AWS EC2
Запуск на 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-образа
- Залогиниваемся в консоли AWS EC2
- Кликаем на «Launch Instance»
- В меню «Quick Start» выбираем «Ubuntu Server...»
- Далее выбираем тип экземпляра. В качестве отправной точки подойдет «t2.micro»
- На вкладке «Configure Security Group» добавляем новое правило типа «Custom TCP Rule» с портом «1880»
- В финальной вкладке «Review» кликаем на кнопку «Launch»
- Консоль попросит вас задать пару 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-сервер, поэтому в сети можно найти немало руководств о том, какие еще настройки можно задать.
См.также
Внешние ссылки