Amazon ec2 user-data, как это работает?
Мы запускаем экземпляры и получаем доступ к размещенным пользовательским данным. Но понимает ли кто-нибудь внутренности этой операции (со стороны Amazon)? Когда мы передаем пользовательские данные, в какой момент эти данные передаются в виртуальную машину (это функция Xen) и где они хранятся?
Сначала я подумал, что он был установлен как USER_DATA env var, но мы также можем передать его в виде файла. Где хранится этот файл? Является ли он общим для всех экземпляров или варьируется в зависимости от AMI?
Это не a проблема как таковая, просто хотел узнать, как Amazon это делает.
Скриншот пользовательских данных: http://d.pr/GZlY
4 ответов:
Пользовательские данные доступны экземпляру с помощью простого HTTP-запроса по следующему адресу:
Amazon EC2 не помещает эти пользовательские данные непосредственно в экземпляр, хотя многие Ami имеют код, который предписывает экземпляру загружать и обрабатывать пользовательские данные автоматически.http://169.254.169.254/latest/user-dataСм. также:
Простой пример для всеобщего понимания: Если вы хотите создать файл
/tmp/testfile.txtпри запуске машины, вы можете просто добавить эти две строки в полеUser data.#!/bin/bash touch /tmp/testfile.txtНе забудьте поставить
#!/bin/bashвверху перед вашими командами.Когда вы запускаете экземпляр (Linux AMI), вы можете увидеть содержимое поля
User dataв/var/lib/cloud/instance/user-data.txt
AWS userdata-это набор команд/данных, которые вы можете предоставить экземпляру во время запуска. Например, если вы запускаете экземпляр ec2 и хотите установить docker на только что запущенный ec2, то вы можете предоставить набор команд bash в поле userdata страницы конфигурации aws ec2.
Usecase
Автоматизированные развертывания
Оркестровка вновь запущенного экземпляра
Загрузка только что запущенного экземпляра с помощью шеф-повар
AWS Autoscaling
Здесь это хорошо объясненный пример AWS userdata с видеоурок
Извините, что отвечаю на такой старый вопрос, но это, кажется, лучшее место, чтобы поместить эту дополнительную информацию.
Большинство документов AWS описывают пользовательские данные как свойство, в которое помещается сценарий запуска жизненного цикла экземпляра, то есть то, что вы хотите запустить только при первом запуске экземпляра.
Обычно это так, но был по крайней мере еще один человек, кроме меня, желающий выполнить различные сценарии при перезапуске, скажем, чтобы исправить сломанный ключ или еще что-нибудь. И знаешь что?.. это можно сделать с помощью пользовательских данных.
Вот код и Ссылка на документ AWS...
Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash /bin/echo "Hello World." >> /tmp/sdksdfjsdlf --//Я не могу найти никакой документации по этому форматированию пользовательских данных, которая позволяет это сделать. Я попробовал его, и он работает. Я пытался проверить, работает ли он при каждом запуске, и он работает.
Так что, если вы считаете, что вам нужно это сделать, я рекомендую вам сделать резервную копию. Убедитесь, что у вас есть копия исходных данных Пользователя, и используйте код при условии изменения в пакет и удаления кода при следующей остановке экземпляра (чтобы избежать многократных запусков скрипта).
Comments