Подтвердить что ты не робот

AWS:: CloudFormation:: Init как это работает?

Мы можем использовать AWS:: CloudFormation:: Init для выполнения команд и загрузки файлов после запуска экземпляра. Но знает ли кто-нибудь, что является внутренним элементом этой операции (со стороны Амазонки)?

Когда мы передаем шаблон, в какой момент находятся файлы или команды, переданные на виртуальную машину? Является ли это функцией Xen (через специальный канал) или через сеть?

"Resources": {
  "MyInstance": {
    "Type": "AWS::EC2::Instance",
    "Metadata" : {
      "AWS::CloudFormation::Init" : {
        "config" : {
          "packages" : {
            :
          },
          "sources" : {
            :
          },
          "commands" : {
            :
          },
          "files" : {
            :
          },
          "services" : {
            :
          },
          "users" : {
            :
          },
          "groups" : {
            :
          }
        }
      }
    },
    "Properties": {
      :
    }
  }
}
4b9b3361

Ответ 1

Создание ресурса AWS:: CloudFormation:: Init как метаданных для экземпляра EC2 не приводит к тому, что экземпляр ничего не делает сам по себе.

Чтобы экземпляр фактически выполнил все операции, указанные в этом ресурсе, он должен запустить инструмент командной строки cfn-init. На AMA AMAZON EC2 эта команда уже установлена ​​на /opt/aws/bin/cfn-init. Команда принимает несколько параметров, включая имя ресурса AWS:: CloudFormation:: Init, имя ресурса сервера EC2 и область, в которой вы работаете. Вам также необходимо предоставить учетные данные безопасности AWS.

Если вы хотите, чтобы это автоматически запускалось при создании нового экземпляра (я бы точно это сделал), вам нужно будет использовать экземпляр UserData экземпляра EC2 для создания оболочки script, которая будет запущена при первой загрузке, и поместите в него команду cfn-init.

Я недавно написал об этой конкретной проблеме в моем блоге.