Шаблоны AWS CloudFormation обеспечивают несколько преимуществ.

  • Знакомый формат. Шаблон CloudFormation – это текстовый файл в формате JSON (JavaScript Object Notation) или YAML, который описывает элементы инфраструктуры AWS, необходимой для запуска приложения или сервиса, а также все взаимосвязи между ними.
  • Управление связями. Шаблоны подробно описывают связи между ресурсами, например какие инстансы EC2 должны быть связаны с балансировщиком нагрузки Elastic Load Balancing или тот факт, что том EBS должен находиться в одной зоне доступности EC2 с инстансом, к которому он прикреплен.
  • Возможность многократного использования. Параметры шаблонов позволяют использовать один шаблон для развертывания множества инфраструктур с различными значениями конфигурации, таким как количество инстансов, развертывание которых требуется для приложения.
  • Ценная обратная связь. Шаблоны также показывают характеристики на выходе, которые позволяют пользователю узнать результаты развертывания или данные конфигурации. Например, по завершении работы шаблон может вернуть URL сервера Elastic Load Balancing, необходимый клиенту для подключения к только что запущенному приложению.
  • Отсутствие конфликтов. Все ресурсы AWS в шаблоне определяются с помощью логических имен, благодаря чему из одного шаблона можно создать несколько стеков, не опасаясь возникновения конфликтов между именами ресурсов AWS.
  • Удобный запуск. Используйте любой из методов запуска стека без предварительной регистрации шаблона в AWS CloudFormation.
  • Визуализация стека. CloudFormation Designer позволяет визуализировать шаблоны в виде диаграмм. Можно удобно просматривать ресурсы AWS и связи между ними, а также без труда менять их взаимное расположение на диаграмме. Шаблоны можно редактировать путем перетаскивания в графическом интерфейсе и с помощью встроенного редактора JSON. При изменении диаграммы автоматически меняется и файл JSON данного шаблона.
  • Поиск ресурсов. В AWS CloudFormation сохраняется копия шаблона стека, что позволяет использовать Консоль управления AWS, инструменты командной строки и API для поиска конкретных конфигураций ресурсов, использованных при создании стека.
  • Автоматизация. Процесс создания шаблона можно автоматизировать с помощью любого языка программирования или удобного инструмента. Для автоматизации создания стека из шаблона также можно использовать API сервиса CloudFormation, пакеты AWS SDK или интерфейс командной строки AWS.

Шаблон имеет следующую высокоуровневую структуру JSON.

Начать работу с AWS бесплатно

Создать бесплатный аккаунт
или войти в Консоль

Получите доступ к уровню бесплатного пользования AWS на один год, включая преимущества поддержки AWS Basic Support: круглосуточное обслуживание клиентов (без праздников и выходных), форумы и многое другое.

{

    "Description" : "Текстовое описание использования шаблона",

    "Parameters" : {

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

    },

    "Resources" : {

        // Набор ресурсов AWS и связей между ними

    },

    "Outputs" : {

        // Набор значений, которые будут показаны создателю стека

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}

В следующем шаблоне продемонстрирован простой пример создания инстанса EC2.

{

    "Description" : "Создать инстанс EC2, запускающий образ AMI Amazon Linux 32 bit.",

    "Parameters" : {

        "KeyPair" : {

            "Description" : "Пара ключей EC2, разрешающая доступ к инстансу по SSH",

            "Type" : "String"

        }

    },

    "Resources" : {

        "Ec2Instance" : {

            "Type" : "AWS::EC2::Instance",

            "Properties" : {

                "KeyName" : { "Ref" : "KeyPair" },

                "ImageId" : "ami-3b355a52"

            }

        }

    },

    "Outputs" : {

        "InstanceId" : {

            "Description" : "Идентификатор созданного инстанса EC2",

            "Value" : {

                "Ref" : "Ec2Instance"

            }

        }

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}   

Стек – это набор ресурсов, полученный в результате применения шаблона. Стек создается посредством передачи шаблона и всех необходимых параметров в AWS CloudFormation. На основании шаблона и указанных в нем связей AWS CloudFormation определяет, какие ресурсы AWS необходимо создать и в какой последовательности.

Чтобы обновить стек, необходим шаблон с новой конфигурацией всех ресурсов в стеке. Сервис позволяет менять свойства существующих ресурсов в стеке, чтобы приспосабливаться к изменениям в среде или новым требованиям приложений. К примеру, можно изменить пороговые значения для предупреждений AWS CloudWatch или обновить AMI, используемый на инстансах стека. AWS CloudFormation автоматически распространяет сделанные изменения на все связанные ресурсы стека. Во многих случаях внесение таких изменений не затрагивает работающее приложение. Если изменение нельзя внести в динамическом режиме (например, когда требуется обновить AMI на инстансе EC2), AWS CloudFormation создает новый ресурс и внесет его в стек. Как только сервис определит, что обновление успешно завершено, старый ресурс будет удален.

AWS CloudFormation выполняет создание или обновление стека в полном объеме. Если стек будет невозможно создать или обновить полностью, AWS CloudFormation отменит внесенные изменения. В целях отладки операцию отмены изменений можно отключить, чтобы позже повторить создание или обновление стека вручную.

Можно также создавать или изменять шаблон стека с помощью AWS CloudFormation Designer, а затем отправлять его в AWS CloudFormation для создания или обновления стека. AWS CloudFormation Designer доступен в Консоли управления AWS.

Доступ к AWS CloudFormation можно просто получить в Консоли управления AWS, предоставляющей интерактивный веб‑интерфейс для управления стеками и их развертывания. Создавать, удалять и обновлять приложения непосредственно из Консоли управления AWS можно в несколько простых этапов.

AWS CloudFormation Designer – это визуальный инструмент, позволяющий добавлять ресурсы в шаблоны путем перетаскивания в графическом интерфейсе. CloudFormation Designer позволяет уделять больше времени разработке инфраструктуры AWS, сокращая необходимость написания кода для шаблонов вручную. Так, при добавлении или удалении ресурсов CloudFormation Designer автоматически изменяет базовый файл JSON. Кроме того, с помощью встроенного текстового редактора можно вводить сведения о шаблоне, например значения свойств ресурсов и входные параметры. Подробнее см. в документации.

AWS CloudFormation Designer входит в состав консоли AWS CloudFormation; чтобы воспользоваться этим инструментом, необходимо выполнить вход в свой аккаунт AWS с соответствующими данными для доступа. Чтобы воспользоваться AWS CloudFormation Designer, перейдите по ссылке https://console.aws.amazon.com/cloudformation/designer. Следующие сценарии демонстрируют некоторые из возможностей AWS CloudFormation Designer.

Визуализация ресурсов шаблона
Выявлять ресурсы, которые содержатся в шаблоне, и связи между ними путем анализа текстовых файлов в формате JSON может оказаться непростым делом. AWS CloudFormation Designer открывает любой корректный шаблон AWS CloudFormation и отображает все его ресурсы в виде диаграммы. Это дает возможность удобно просматривать ресурсы шаблонов и связи между ними, не читая JSON. AWS CloudFormation Designer включает в себя текстовый редактор JSON, что позволяет просматривать подробные сведения о шаблоне, если потребуется.

Упрощенное создание шаблона
При работе с ресурсами шаблона в текстовом редакторе приходится редактировать JSON вручную, что требует определенных трудозатрат и нередко приводит к ошибкам. В AWS CloudFormation Designer работа с ресурсами осуществляется по аналогии с диаграммами. Для добавления ресурсов в шаблон и установления связей между ними используется перетаскивание. AWS CloudFormation Designer автоматически изменяет файл JSON. Встроенный текстовый редактор JSON не только визуализирует ресурсы, но и автоматически заполняет имена их свойств. AWS CloudFormation Designer сокращает необходимость ручного написания кода шаблонов, позволяя уделять больше времени разработке инфраструктуры AWS.

AWS CloudFormation также предлагает простой, удобный и очень гибкий набор API. Чтобы получить полный список доступных API AWS CloudFormation, см. Справку по API AWS CloudFormation. Ниже перечислены некоторые из часто используемых API и соответствующие операции.

  • CreateStack: начинает создание нового стека. Входные параметры вызова включают имя стека и имя файла (или соответствующий URL Amazon S3) исходного шаблона. Если процесс создания стека пройдет успешно, стек перейдет в состояние CREATE_COMPLETE. Если в процессе создания стека произойдет сбой, AWS CloudFormation удалит ранее созданные ресурсы, за исключением случаев, когда пользователь установил флаг на сохранение этих элементов в целях отладки.
  • ListStacks: выводит список всех стеков для аккаунта. Этот API можно использовать для просмотра всех стеков и их текущего состояния, например создания или обновления.
  • ListStackResources: выводит список всех имен и идентификаторов ресурсов AWS, которые были созданы в ходе создания стека. Помимо информационной функции, этот вызов можно использовать в приложениях, работающих с AWS CloudFormation, для анализа среды.
  • DescribeStackEvents: выводит список всех операций и событий, сформированных AWS CloudFormation для стека, что позволяет контролировать ход процесса создания или удаления.
  • UpdateStack: запускает процесс обновления существующего стека. Входные параметры вызова включают имя стека и имя (или URL Amazon S3) файла обновленного шаблона. Если процесс обновления стека пройдет успешно, стек перейдет в состояние UPDATE_COMPLETE. Если в процессе обновления произойдет сбой, AWS CloudFormation отменит все внесенные изменения, чтобы стек вернулся в состояние, описанное в исходном шаблоне.

AWS CloudFormation можно также использовать посредством пакетов AWS SDK и AWS CLI.

AWS CloudFormation интегрирован с сервисом Amazon Simple Notification Service (Amazon SNS), что позволяет получать уведомления о создании, обновлении и удалении стеков. Помимо предоставления информации о состоянии, этот сервис также позволяет другим программам получать доступ к событиям, происходящим в CloudFormation, и реагировать на них или участвовать в процессе конфигурирования стека.

Шаблоны AWS CloudFormation позволяют использовать опыт работы с AWS с максимальной отдачей. Каждый ресурс имеет набор параметров, имена которых идентичны именам, использованным при создании ресурсов с помощью собственных API сервисов. Приведенный ниже фрагмент кода шаблона показывает определение тома Amazon EBS. Логическое имя тома в шаблоне – myVolume, а его тип – AWS::EC2::Volume. Если вы ранее использовали тома EBS, показанные свойства будут вам знакомы.

"myVolume" : {

    "Type" : "AWS::EC2::Volume",

    "Properties" : {

        "Size" : "10",

        "SnapshotId" : "snap-7b8fd361",

        "AvailabilityZone" : "us-east-1a"

    }

}

AWS CloudFormation предлагает множество вспомогательных скриптов для развертывания на инстансах EC2. Эти скрипты позволяют удобно считывать метаданные ресурсов из стека и использовать их для конфигурирования приложения, развертывания в инстансе пакетов и файлов, перечисленных в шаблоне, и реагирования на обновления стека – изменения конфигурации или обновления приложения.

Доступны следующие скрипты.

  • cfn-get-metadata: получение метаданных, закрепленных за ресурсами в шаблоне.
  • cfn-init: загрузка и установка пакетов и файлов, описанных в шаблоне.
  • cfn-signal: сигнал рабочему процессу создания стека о том, что приложение запущено и готово к обработке трафика.
  • cfn-hup: демон, прослушивающий обновления стека, инициированные непосредственно через консоль AWS, инструменты командной строки или API, и исполняющий заданные процедуры, необходимые для приложения, в качестве реакции на внесенные изменения.

Скрипты CloudFormation можно использовать независимо или в сочетании с возможностью CloudInit, доступной в Amazon Linux AMI и некоторых других Linux AMI. Для получения дополнительных сведений о начальной загрузке приложений и обновлении конфигурации см. Ресурсы для разработчиков по AWS CloudFormation. 

Использование данного сервиса регламентируется пользовательским соглашением Amazon Web Services.