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

Шаблоны 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.

{

    "Description" : "A text description for the template usage",

    "Parameters": {

        // A set of inputs used to customize the template per deployment

    },

    "Resources" : {

        // The set of AWS resources and relationships between them

    },

    "Outputs" : {

        // A set of values to be made visible to the stack creator

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}

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

{

    "Description" : "Create an EC2 instance running the Amazon Linux 32 bit AMI.",

    "Parameters" : {

        "KeyPair" : {

            "Description" : "The EC2 Key Pair to allow SSH access to the instance",

            "Type" : "String"

        }

    },

    "Resources" : {

        "Ec2Instance" : {

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

            "Properties" : {

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

                "ImageId" : "ami-3b355a52"

            }

        }

    },

    "Outputs" : {

        "InstanceId" : {

            "Description" : "The InstanceId of the newly created EC2 instance",

            "Value" : {

                "Ref" : "Ec2Instance"

            }

        }

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}   

Использование шаблона AWS CloudFormation для создания стека и управления им

Стек – это набор ресурсов, полученный в результате применения шаблона. Стек создается посредством передачи шаблона и всех необходимых параметров в 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 в несколько простых этапов.

Работа с API AWS CloudFormation

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

Шаблоны 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.

 

Подробнее о ценах на AWS CloudFormation

Посетите страницу цен на AWS CloudFormation
Готовы приступить к разработке?
Начать работу с AWS CloudFormation
Есть вопросы?
Свяжитесь с нами