Вопросы и ответы по AWS CloudFormation

Общие вопросы

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

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

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

Сервис AWS CloudFormation – удобное средство распределения разнообразных ресурсов AWS и сторонних поставщиков. Он обеспечивает поддержку инфраструктурных требований многих типов приложений, таких как существующие корпоративные приложения, приложения прежних версий, приложения на основе различных ресурсов AWS и решения на основе контейнеров (в том числе построенные с использованием AWS Elastic Beanstalk).

Таким образом, среда приложений Elastic Beanstalk – это один из типов ресурсов AWS, поддерживаемых сервисом AWS CloudFormation. Это, в частности, позволяет создать и использовать приложение в среде AWS Elastic Beanstalk и хранить данные приложения в базе данных RDS. К этой группе можно добавить любые другие поддерживаемые ресурсы AWS.

Сервис CloudFormation вводит четыре понятия. Шаблон – это декларативный файл кода JSON или YAML, который описывает надлежащее состояние ресурсов, необходимых для развертывания приложения. Стек реализует группу ресурсов, перечисленных в шаблоне, и управляет ей, а также позволяет управлять состоянием и зависимостями этих ресурсов совместно. Набор изменений – это ознакомительная версия изменений, которые будут выполнены операциями со стеком для создания, обновления или удаления ресурсов. Набор стеков – это группа стеков с совместным управлением, которые можно реплицировать как группу.

Полный перечень поддерживаемых ресурсов AWS и их возможностей приведен на странице «Поддерживаемые сервисы AWS» в разделе документации «История выпуска».

Пользовательские ресурсы AWS CloudFormation Registry и AWS CloudFormation дают возможность управлять дополнительными ресурсами AWS и сторонних поставщиков.

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

Шаблоны CloudFormation представляют собой текстовые файлы в формате JSON или YAML, состоящие из пяти типов элементов:

1. необязательный список параметров шаблона (входные значения, передаваемые в момент создания стека);
2. необязательный список выходных значений (например, полный URL‑адрес интернет‑приложения);
3. необязательный список таблиц данных, используемый для просмотра статических значений конфигурации (например, имен AMI);
4. список ресурсов AWS и их значений конфигурации;
5. номер версии формата файла шаблона.

Для настройки различных аспектов шаблона во время исполнения, когда стек уже будет создан, можно использовать параметры. Например, при создании стека сервису AWS CloudFormation можно передать значение размера базы данных Amazon RDS, данные о типах инстансов Amazon EC2 и номера портов сервера баз данных и веб‑сервера. Каждый из параметров может иметь значение по умолчанию и описание, а метка NoEcho позволяет скрыть введенное фактическое значение на экране и в журналах событий AWS CloudFormation. При создании стека AWS CloudFormation Консоль управления AWS автоматически генерирует и отображает всплывающее диалоговое окно, в котором можно редактировать значения параметров.

Выходные значения – это удобный способ отображения для пользователя основных ресурсов стека (таких как адрес балансировщика нагрузки Elastic Load Balancing или базы данных Amazon RDS) посредством Консоли управления AWS или инструментов командной строки. С помощью простых функций можно объединять строковые литералы и значения атрибутов, связанные с конкретными ресурсами AWS. Дополнительно шаблон может использовать типы ресурсов реестра, настраиваемые частные типы, ваши собственные макросы, а также извлекать параметры конфигурации из AWS Secrets Manager и хранилища параметров AWS System Manager.

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

Сервис AWS CloudFormation позволяет пользователю присваивать имена некоторым ресурсам (например, корзинам Amazon S3), но не всем. Присвоение ресурсам имен ограничивает возможность повторного использования шаблонов и приводит к возникновению конфликтов имен, если при обновлении ресурс необходимо заменить. Во избежание подобных проблем CloudFormation в ряде случаев не поддерживает именование ресурсов пользователем.

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

Сервис CloudFormation также можно интегрировать с Systems Manager для выполнения и обслуживания установки ПО с документами автоматизации Systems Manager.

Да. Сервис AWS CloudFormation можно использовать для установки ПО Chef Server и Chef Client на инстансы EC2. Дополнительные сведения и инструкции см. на странице Интеграция AWS CloudFormation с Chef.

Да. Сервис AWS CloudFormation можно использовать для установки ПО Puppet Master и Puppet Client на инстансы EC2. Дополнительные сведения и инструкции см. на странице «Интеграция AWS CloudFormation с Puppet».

Да. Сервис CloudFormation может установить программное ядро Terraform на инстансах EC2. Вы можете использовать поставщики ресурсов Terraform для создания ресурсов в стеках с использованием управления состоянием стека, зависимостей, стабилизации и отката.

Да. Ресурсам Amazon EC2, поддерживающим такую возможность, в шаблоне AWS можно присваивать теги. Значения тегов могут ссылаться на параметры шаблонов, имена других ресурсов, значения атрибутов ресурсов, таких как адреса, или значения, вычисляемые с помощью простых функций (например, объединенный список строк). CloudFormation автоматически присваивает томам Amazon EBS и инстансам Amazon EC2 теги по имени стека CloudFormation, к которому они принадлежат.

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

По умолчанию в сервисе включена функция автоматического отката при ошибке. CloudFormation создает или обновляет все ресурсы в стеке только при успешном выполнении всех отдельных операций. В противном случае CloudFormation возвращает стек в последнюю известную стабильную конфигурацию. Это полезно в тех случаях, когда вы, к примеру, случайно превысили свой лимит эластичных IP‑адресов по умолчанию или у вас нет доступа к AMI EC2, который требуется запустить. Данная функция гарантирует, что стек будет либо создан полностью, либо не будет создан вообще. Это упрощает администрирование системы и реализацию многоуровневых решений на базе сервиса CloudFormation.

Да. Один из вариантов, которые предоставляет сервис CloudFormation, – это ресурс WaitCondition, который блокирует создание других ресурсов до тех пор, пока от внешнего источника (от приложения или управляющей системы) не будет получен сигнал завершения. К другим вариантам относится создание собственного программного кода с помощью функций AWS Lambda.

Да. CloudFormation позволяет задавать политики удаления для ресурсов шаблона. Вы можете настроить создание снимков состояния томов Amazon EBS или инстансов баз данных Amazon RDS перед их удалением, а также задать сохранение определенных ресурсов при удалении стека. Например, таким образом можно предотвратить удаление корзин Amazon S3 при удалении стека.

Да. Сервис CloudFormation поддерживает создание облаков VPC, подсетей, шлюзов, таблиц маршрутизации и списков контроля доступа к сети, а также создание таких ресурсов, как эластичные IP‑адреса, инстансы Amazon EC2, группы безопасности EC2, группы Auto Scaling, балансировщики нагрузки Elastic Load Balancer, инстансы баз данных Amazon RDS и группы безопасности Amazon RDS в облаке VPC.

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

Присоединитесь к сообществу AWS CloudFormation в GitHub.

Конечно. С помощью функции импорта ресурсов можно перенести все существующие ресурсы в управление AWS CloudFormation.

Начало работы

Чтобы зарегистрироваться в сервисе CloudFormation, нажмите Создать бесплатный аккаунт на странице сведений о продукте CloudFormation. После регистрации обратитесь к разделу документации сервиса CloudFormation, куда входит Руководство по началу работы.

Для регистрации в сервисе CloudFormation необходимо указать действительный номер телефона и адрес электронной почты на случай, если нам потребуется связаться с вами. Процедура подтверждения номера телефона занимает всего несколько минут, в ходе нее на ваш номер поступит звонок, и вы будете должны ввести PIN-код с помощью кнопок своего телефона.

Начать работу с CloudFormation проще всего с помощью «Руководства по началу работы», которое входит в техническую документацию. Уже через несколько минут вы сможете выполнить развертывание и начать использовать один из наших образцов шаблонов, на примере которого увидите, как создать инфраструктуру для работы таких приложений, как WordPress. Для обучения работе с сервисом CloudFormation можно использовать различные источники: от учебных планов сторонних поставщиков до учебных пособий и статей в Интернете. Дополнительные сведения см. на странице Ресурсы по CloudFormation.

Да. В CloudFormation есть образцы шаблонов, с помощью которых можно испытать работу сервиса и исследовать его возможности. На их примере вы увидите, как обеспечить взаимосвязь и работу различных ресурсов AWS в комплексе, в соответствии с рекомендациями по использованию избыточности во множестве зон доступности, масштабирования и настройки предупреждений. Чтобы приступить к работе, достаточно перейти в Консоль управления AWS, нажать «Создать стек» и выполнить последовательность действий по выбору и запуску одного из наших образцов. Когда стек будет создан, выберите его в консоли и просмотрите вкладки «Шаблон» и «Параметры», чтобы ознакомиться с элементами файла шаблона, который используется при создании этого стека. Образцы шаблонов также доступны в GitHub.

Реестр AWS CloudFormation

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

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

Разница между поставщиками ресурсов AWS и сторонними поставщиками заключается в их происхождении. Поставщики AWS предназначены для управления ресурсами и сервисами AWS. Их создают и обслуживают компания Amazon и подразделение AWS. Например, три поставщика AWS помогают управлять ресурсами Amazon DynamoDB, AWS Lambda и Amazon EC2. Эти поставщики содержат такие типы ресурсов, как AWS::DynamoDB::Table, AWS::Lambda::Function и AWS::EC2::Instance. Подробнее см. в документации.

Сторонние поставщики ресурсов созданы другой компанией, организацией или сообществом разработчиков. Они помогают управлять как ресурсами AWS, так и другими, например ресурсами приложений AWS и программными сервисами SaaS других поставщиков, такими как инструменты мониторинга, повышения производительности коллектива, управления инцидентами или контроля версий.

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

Для разработки поставщиков ресурсов воспользуйтесь интерфейсом командной строки AWS CloudFormation. Сначала определите простую декларативную схему ресурсов, в которой указаны необходимые разрешения и связи с другими ресурсами. Затем с помощью интерфейса командной строки CloudFormation сгенерируйте код для обработчиков жизненного цикла ресурсов (операции Create, Read, Update, Delete и List) и заготовки тестов для блочного тестирования и тестирования интеграции.

Можно воспользоваться интерфейсом командной строки AWS CloudFormation с открытым исходным кодом или напрямую вызвать RegisterType и связанные API реестра, доступные через AWS SDK и интерфейс командной строки AWS. Подробные сведения см. на странице Использование реестра AWS CloudFormation нашей документации. Поставщики ресурсов AWS готовы к использованию и не требуют никакой дополнительной регистрации.

Публичный реестр AWS CloudFormation

Реестр CloudFormation предоставляется с ноября 2019 года для размещения частных предложений о продаже, которые позволяли клиентам применять CloudFormation для частных целей. Публичный реестр является дополнением к обычному реестру CloudFormation, который предоставляет публичное централизованное расположение с поддержкой поиска для размещения, поиска, использования и администрирования разных модулей и типов ресурсов<>. Он упрощает процессы настройки приложений и инфраструктуры и управления ими, предоставляя единый интерфейс для продуктов AWS и сторонних поставщиков.

Да. Подробнее см. страницу цен на CloudFormation.

Да. В публичном реестре CloudFormation вы получаете гарантированно надежное содержимое, предоставленное проверенными издателями. Прежде всего, мы проверяем личность каждого издателя через AWS Marketplace или сторонние платформы, например GitHub и Bitbucket.

Публичный реестр CloudFormation представляет собой управляемый каталог с поддержкой поиска, в котором размещаются расширения с типами ресурсов (логикой предоставления) и модули, опубликованные Партнерской сетью AWS (APN) и широким сообществом разработчиков. В публичном реестре CloudFormation любой желающий может публиковать модули и типы ресурсов. Клиенты могут легко найти и применить эти опубликованные модули и типы ресурсов, избавляясь от необходимости самостоятельно их создавать и поддерживать.

Тип ресурса представляет собой пакет кода с логикой распределения, который позволяет управлять жизненным циклом таких ресурсов, как инстансы Amazon EC2 и таблицы Amazon DynamoDB, от создания до удаления, через уровень абстракции над сложными взаимодействиями с API. Типы ресурсов содержат схему, которая определяет форму и свойства ресурсов, всю необходимую логику для распределения, обновления и удаления, а также описание ресурса. В качестве примеров типов ресурсов, размещенных в публичном реестре CloudFormation, можно вспомнить «Datadog monitor», «MongoDB Atlas Project» или «Atlassian Opsgenie User».

Модули являются строительными блоками, которые можно многократно использовать в нескольких шаблонах CloudFormation точно так же, как и встроенные ресурсы CloudFormation. Эти строительные блоки могут относиться к одному ресурсу, что, например, рекомендовано для определения инстансов Amazon Elastic Compute Cloud (Amazon EC2), или объединять несколько ресурсов для организации общей структуры и архитектуры приложения.

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

Оплата

За использование AWS CloudFormation с поставщиками ресурсов в следующих пространствах имен дополнительная плата не взимается: AWS::*, Alexa::*, Custom::*. В этом случае вы оплачиваете ресурсы AWS (например, инстансы Amazon EC2, балансировщики нагрузки Elastic Load Balancing и т. д.), созданные с использованием AWS CloudFormation, так же, как и созданные вручную аналогичные ресурсы. Вы платите только за то, чем пользуетесь, без минимальной оплаты или долгосрочных обязательств.

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

Да. Плата за ресурсы AWS, созданные при инстанциации шаблона, начисляется независимо от того, был ли процесс создания стека завершен успешно.

Лимиты и ограничения

Более подробную информацию о максимальном количестве создаваемых стеков AWS CloudFormation см. в разделе «Стеки» в секции Квоты AWS CloudFormation. Для повышения этого лимита заполните заявку, и мы ответим на нее в течение двух рабочих дней.

Более подробную информацию см. в разделах «Описание шаблона» в секциях Квоты AWS CloudFormation и Параметры, а также Ресурсы и Итоговые потоки в документации AWS.

Более подробную информацию о количестве параметров и итоговых потоков, которое можно указать в шаблоне, см. в разделах «Параметры» и «Итоговые потоки» в секции Квоты AWS CloudFormation.

Более подробную информацию о количестве ресурсов, которые можно обозначить в шаблоне, см. в разделе «Ресурсы» в секции Квоты AWS CloudFormation. Рекомендуется создавать более мелкие шаблоны и стеки, а также разбивать приложение на модули по нескольким стекам, чтобы сократить зоны влияния сбоев для изменений ресурсов и быстрее устранять неполадки с зависимостями нескольких ресурсов: более мелкие группы ресурсов будут обладать менее сложными зависимостями, чем более крупные группы.

Регионы и адреса серверов

Информацию об адресах для каждого из регионов см. на странице Адреса AWS CloudFormation в технической документации.

Дополнительные сведения о доступности сервиса CloudFormation по регионам см. на странице продуктов и сервисов по регионам.

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

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