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

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

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

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

1 ответов


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

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

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

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