Инициировать экземпляр EC2 с пакетом команд

#amazon-web-services #amazon-ec2

#amazon-веб-сервисы #amazon-ec2

Вопрос:

Есть ли способ запустить экземпляр AWS EC2 с помощью пакета команд? Итак, я создаю новый экземпляр, и чего я не хочу добиваться, так это автоматического запуска некоторых команд Linux после его запуска без подключения к компьютеру и ввода этих команд вручную.

Ответ №1:

Именно для этого и предназначены пользовательские данные.

Вы бы указали свой скрипт (bash для Linux или Powershell для Windows), который затем будет запущен при первом запуске экземпляра.

Ниже приведен пример пользовательских данных, взятых из документации для выполнения настройки веб-сервера.

 #!/bin/bash
yum update -y
amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
yum install -y httpd mariadb-server
systemctl start httpd
systemctl enable httpd
usermod -a -G apache ec2-user
chown -R ec2-user:apache /var/www
chmod 2775 /var/www
find /var/www -type d -exec chmod 2775 {} ;
find /var/www -type f -exec chmod 0664 {} ;
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
  

В случае, если вам потребуется выполнить отладку, просмотрите /var/log/cloud-init-output.log журнал после запуска экземпляра.

Однако, если требуется большее количество шагов, может быть предпочтительнее создать предварительно подготовленный AMI, который включает в себя настройку чистого сервера со всеми необходимыми службами и конфигурацией с помощью таких инструментов, как Ansible, Chef или Puppet.

Комментарии:

1. Могу ли я вызвать эти команды bash из функции lambda при запуске экземпляра из lambda?

2. Вы создаете экземпляр с помощью лямбда-функции? Если вы используете SDK в Lambda, то да, вы можете, например: boto3.amazonaws.com/v1/documentation/api/latest/reference/… существует параметр с именем UserData .