В этом руководстве вы узнаете, как запустить Node-RED в среде AWS.
Существует два метода:
Работа на службе AWS Elastic Beanstalk Service (EB)
Работа на Elastic Beanstalk с высокой доступностью
Запуск образа Embedded Linux на AWS EC2
Работа на AWS EBS
предварительные условия
Убедитесь, что у вас есть учетная запись AWS с включенными Elastic Beanstalk, SQS и S3.
Загрузите командную строку EB и установите на локальную машину - см. ссылку
Создайте учетные данные AWS и сохраните их в локальном файле (~/.aws/config или Usersusername.awsconfig), как показано ниже
[профиль eb-cli]
aws_access_key_id = идентификатор ключа
aws_secret_access_key = ключ доступа
Создайте среду EB
Создайте новый каталог (например, demoapp).
перейдите в эту директорию
Запустите eb init, чтобы создать новый проект elastic beanstalk. Выберите предпочтительный регион и используйте node.js в качестве платформы. Вас спросят, хотите ли вы использовать ssh. В этом случае убедитесь, что на вашем компьютере установлен ssh, если вы хотите сгенерировать новую пару ключей.
Войдите в консоль AWS через браузер, выберите Identity and Access Management (IAM) и добавьте политику AmazonS3FullAccess в aws-elasticbeanstalk-ec2-role. ПРИМЕЧАНИЕ: Это обеспечивает полный доступ из EBS к S3, вы можете настроить эту политику в соответствии с вашими потребностями безопасности.
Создайте среду Node-RED
Создайте файл package.json со следующим содержимым (замените "demoapp" на название вашего приложения)
{
"name": "demoapp",
"Версия": "1.0.0",
"Описание": "node-red demo app",
"main": "",
"scripts": {
"start": "./node_modules/.bin/node-red -s ./settings.js".
},
"engines": {
"node": "10.x"
},
"dependencies": {
"node-red": "1.1.x",
"aws-sdk": "2.4.x",
"node-red-contrib-storage-s3": "0.0.x",
"когда": "3.7.x"
},
"author": "",
"Лицензия": "ISC".
}
Скопируйте стандартный файл Node-RED settings.js в каталог demoapp
Отредактируйте файл settings.js и добавьте следующую запись в module.exports (установите awsRegion на тот, который используется в eb init, и замените demoapp на название вашего приложения):
awsRegion: 'eu-west-1',
awsS3Appname: 'demoapp',
storageModule: require('node-red-contrib-storage-s3'),
В командной строке убедитесь, что вы находитесь в каталоге верхнего уровня приложения, и выполните команду eb create; возможно, вам захочется указать более уникальное имя приложения. Выполнение команды займет много времени, но в конце концов завершится успешно.
Настройте доступ к Node-RED
Теперь доступ к Node-RED можно получить непосредственно через веб-адрес приложения. Однако это небезопасно и не очень подходит для ведения логов. Вместо этого мы настроим прямой доступ к порту управления node-red на используемом им экземпляре ec2.
В консоли AWS выберите EC2, а затем выберите группу безопасности. Вы увидите набор групп безопасности. Выберите вариант с именем вашей среды и описанием "Группа безопасности для среды ElasticBeanstalk". После выбора нажмите Actions (Действия), а затем Edit Inbound Settings (Редактировать входящие параметры). Появится диалоговое окно с правилами. Добавьте новое правило. Установите тип на "весь трафик" и источник на "мой ip". Сохраните правило.
Выберите экземпляр EC2, на котором запущено приложение node red. Скопируйте его IP-адрес.
Введите в браузере IP-адрес и порт 8081. Это обеспечит прямой доступ к консоли управления node-red.
Примечание: Публичный IP-адрес также предоставляет доступ к приложению node-red, поэтому лучше удалить и этот доступ, а именно правило HTTP для порта 80.
Ваш экземпляр Node-RED теперь работает на EBS. Все созданные вами потоки будут сохранены в AWS S3, чтобы вы могли снести среду и получить доступ к потокам при повторном развертывании.
Работа на Elastic Beanstalk с высокой доступностью
Этот вариант развертывания позволяет создать многоузловую систему Node-RED с общей файловой системой, использующей Amazon Elastic File System (EFS). Поскольку несколько узлов работают за балансировщиком нагрузки, вы получаете высокую доступность - если узел умирает, Elastic Beanstalk автоматически его заменит.

Чтобы начать работу, клонируйте репозиторий здесь https://github.com/guysqr/node-red-ha-on-aws и следуйте простым инструкциям. Инфраструктура создается с помощью шаблонов CloudFormation, поэтому для ее настройки вам не нужно много знать об AWS.
Кроме того, этот вариант развертывания позволяет запускать Node-RED под https и входить в систему через Auth0 (или вы можете легко переключиться на встроенную аутентификацию или любой Passport-совместимый ID-провайдер).
Запуск на AWS EC2 с помощью Embedded Linux
Создайте базовый образ EC2
Войдите в консоль AWS EC2
Нажмите “Запустить экземпляр”.”
В списке AMI быстрого запуска выберите Embedded Linux Server.
Выберите тип экземпляра - t2.micro является хорошим местом для начала
На вкладке Настройка группы безопасности добавьте новое пользовательское правило TCP для порта 1880.
На последнем этапе “Аудит” нажмите кнопку “Начать”.
Консоль предложит вам настроить набор ключей SSH. Выберите Создать новую пару ключей и нажмите Загрузить пару ключей. Ваш браузер сохранит файл .pem - он будет в безопасности. Наконец, нажмите кнопку Начать.
Через несколько минут ваш экземпляр EC2 будет запущен. В консоли вы сможете найти IP-адрес вашего экземпляра.
Установите Node-RED
Следующая задача - войти в инстанс и установить node.js и Node-RED.
Следуйте рекомендациям AWS для подключения к вашему экземпляру.
После входа в систему вам нужно установить node.js и Node-RED
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -.
sudo apt-get install -y nodejs build-essential
sudo npm install -g -unsafe-perm node-red
На этом этапе вы можете протестировать свой экземпляр, запустив node-red. ПРИМЕЧАНИЕ: Вы можете получить несколько ошибок, касающихся последовательных узлов - это ожидаемо и может быть проигнорировано.
После запуска вы можете войти в систему по адресу http://.
Чтобы Node-RED запускался автоматически при перезагрузке вашего экземпляра, вы можете использовать pm2:
sudo npm install -g -unsafe-perm pm2
pm2 start `which node-red` - -v
pm2 save
запуск pm2
ПРИМЕЧАНИЕ: Последняя команда предложит вам выполнить еще одну команду - убедитесь, что вы делаете то, что там написано.
Следующий шаг
Это руководство лишь поверхностно описывает то, как вы можете выбрать конфигурацию ваших инстансов для работы в EC2. Node-RED - это “всего лишь” приложение node.js, открывающее HTTP-сервер - в этом принципе существует множество онлайн-руководств, позволяющих узнать о других возможных подходах.
Ключевые слова: LoRa шлюз