В этом руководстве вы узнаете, как запустить Node-RED в среде AWS.
Существует два метода:
Работа на службе AWS Elastic Beanstalk Service (EB)
Работа на Elastic Beanstalk с высокой доступностью
Запуск образа Ubuntu на 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 автоматически его заменит.

To get started, clone the repository here https://github.com/guysqr/node-red-ha-on-aws and follow the simple instructions. The infrastructure is created for you by CloudFormation templates, so you don’t need to know much about AWS to set it up.
Additionally, this deployment option enables you to run Node-RED under https and log in via Auth0 (or you can easily switch to built-in authentication or any Passport-compatible ID provider).
Running on AWS EC2 using Ubuntu
Create a base EC2 image
Log in to the AWS EC2 console
Click “Launch Instance”
In the Quick Start AMI list, select Ubuntu Server
Choose an instance type – t2.micro is a good place to start
On the Configure Security Group tab, add a new Custom TCP Rule for port 1880
In the final “Audit” step, click the “Start” button
The console will prompt you to configure a set of SSH keys. Select Create a new key pair and click Download key pair. Your browser will save the .pem file – keeping it safe. Finally, click Start.
After a few minutes, your EC2 instance will be running. In the console, you can find the IP address of your instance.
Set Node-RED
The next task is to log into the instance and install node.js and Node-RED.
Follow AWS guidelines to connect to your instance.
Once logged in, you need to install node.js and 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
At this point, you can test your instance by running node-red. NOTE: You may receive some errors regarding serial nodes – this is expected and can be ignored.
Once started, you can log in at http://
To have Node-RED start automatically when your instance restarts, you can use pm2:
sudo npm install -g –unsafe-perm pm2
pm2 start `which node-red` — -v
pm2 save
pm2 startup
NOTE: This last command will prompt you to run another command – make sure you do what it says.
Next step
This guide only scratches the surface of how you can choose to configure your instances to run in EC2. Node-RED is “just” a node.js application that exposes an HTTP server – in this principle there are many online guides available to learn about other possible approaches.
Keywords: LoRa gateway


