Шаблоны 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 для поиска конкретных конфигураций ресурсов, использованных при создании стека.
  • Автоматизация: процесс создания шаблона можно автоматизировать с помощью любого языка программирования или удобного инструмента. Для автоматизации создания стека из шаблона также можно использовать CloudFormation API, AWS SDK или AWS CLI.

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

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

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

Получите доступ к уровню бесплатного пользования AWS на двенадцать месяцев и используйте возможности базовой поддержки AWS Support, в том числе круглосуточный доступ к сервису поддержки клиентов, форумы поддержки и многое другое.

{

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

        "Parameters" : {

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

    },

    "Ресурсы" : {

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

    },

    "Outputs" : {

        // Набор значений, которые должны стать видимыми создателю стека

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}

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

{

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

    "Parameters" : {

        "KeyPair" : {

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

            "Type" : "String"

        }

    },

    "Ресурсы" : {

        "Ec2Instance" : {

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

    "Properties" : {

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

                "ImageId" : "ami-3b355a52"

            }

        }

    },

    "Outputs" : {

        "InstanceId" : {

            "Description" : "Идентификатор InstanceId последнего созданного инстанса 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. Кроме того, с помощью встроенного текстового редактора можно вводить сведения о шаблоне, например значения свойств ресурсов и входные параметры. Подробнее см. в документации.

CloudFormation-ss-1

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, см. «Справочное руководство по 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.