Общие вопросы
Что такое AWS CloudFormation?
Сервис AWS CloudFormation позволяет разработчикам и компаниям без труда создавать наборы связанных ресурсов AWS и сторонних поставщиков, обеспечивать их упорядоченное и предсказуемое выделение, а также управление ими.
В чем AWS CloudFormation может помочь разработчикам?
Разработчики могут развертывать и обновлять вычислительные ресурсы, ресурсы баз данных и многие другие ресурсы простым декларативным способом, который позволяет абстрагироваться от сложностей использования API конкретных ресурсов. Сервис AWS CloudFormation предназначен для воспроизводимого, предсказуемого и безопасного управления жизненными циклами ресурсов; он также делает возможным автоматический возврат к предыдущей конфигурации, автоматизацию управления состоянием и управление ресурсами по всем аккаунтам и регионам. Недавние улучшения и добавленные варианты позволяют создавать ресурсы различными способами, в том числе с использованием AWS CDK для написания кода на более высокоуровневых языках, импорта существующих ресурсов и обнаружения отклонений конфигурации, а также нового реестра, который упрощает создание настраиваемых типов, наследующих многие основные преимущества CloudFormation.
Чем сервис CloudFormation отличается от сервиса AWS Elastic Beanstalk?
Эти сервисы являются взаимодополняющими. 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.
Какие новые понятия введены сервисом AWS CloudFormation?
Сервис CloudFormation вводит четыре понятия. Шаблон – это декларативный файл кода JSON или YAML, который описывает надлежащее состояние ресурсов, необходимых для развертывания приложения. Стек реализует группу ресурсов, перечисленных в шаблоне, и управляет ей, а также позволяет управлять состоянием и зависимостями этих ресурсов совместно. Набор изменений – это ознакомительная версия изменений, которые будут выполнены операциями со стеком для создания, обновления или удаления ресурсов. Набор стеков – это группа стеков с совместным управлением, которые можно реплицировать как группу.
Какие ресурсы поддерживает AWS CloudFormation?
Полный перечень поддерживаемых ресурсов AWS и их возможностей приведен на странице «Поддерживаемые сервисы AWS» в разделе документации «История выпуска».
Пользовательские ресурсы AWS CloudFormation Registry и AWS CloudFormation дают возможность управлять дополнительными ресурсами AWS и сторонних поставщиков.
Можно ли управлять отдельными ресурсами AWS, которые относятся к стеку AWS CloudFormation?
Да, можно. CloudFormation не препятствует этому; вы можете полностью контролировать все элементы своей инфраструктуры, а также использовать для управления своими ресурсами AWS все существующие инструменты AWS и сторонних поставщиков. При этом, поскольку CloudFormation может разрешать использование дополнительных правил, рекомендаций и параметров соответствия требованиям, рекомендуется разрешить CloudFormation управлять изменениями в ресурсах. Этот предсказуемый контролируемый подход помогает управлять сотнями или тысячами ресурсов в портфеле приложения.
Из каких элементов состоит шаблон AWS 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 CloudFormation выбирает имена для ресурсов?
В шаблоне можно присвоить ресурсам AWS логические имена. После создания стека AWS CloudFormation связывает логическое имя с именем соответствующего ресурса AWS. Имена реальных ресурсов образуются из имени стека и логического имени ресурса. Это позволяет создавать множество стеков на основе одного шаблона, не опасаясь возникновения конфликтов имен ресурсов AWS.
Почему присваивать имена разрешено не всем ресурсам?
Сервис AWS CloudFormation позволяет пользователю присваивать имена некоторым ресурсам (например, корзинам Amazon S3), но не всем. Присвоение ресурсам имен ограничивает возможность повторного использования шаблонов и приводит к возникновению конфликтов имен, если при обновлении ресурс необходимо заменить. Во избежание подобных проблем CloudFormation в ряде случаев не поддерживает именование ресурсов пользователем.
Можно ли с помощью AWS CloudFormation устанавливать ПО при создании стека?
Да. Сервис AWS CloudFormation предоставляет набор установочных скриптов приложений, которые позволяют устанавливать на инстансы EC2 пакеты, файлы и сервисы путем описания их в шаблоне CloudFormation. Дополнительные сведения и инструкции см. на странице Начальная загрузка приложений с помощью AWS CloudFormation.
Сервис CloudFormation также можно интегрировать с Systems Manager для выполнения и обслуживания установки ПО с документами автоматизации Systems Manager.
Можно ли использовать AWS CloudFormation для установки Chef?
Да. Сервис AWS CloudFormation можно использовать для установки ПО Chef Server и Chef Client на инстансы EC2. Дополнительные сведения и инструкции см. на странице Интеграция AWS CloudFormation с Chef.
Можно ли использовать сервис AWS CloudFormation для установки Puppet?
Да. Сервис AWS CloudFormation можно использовать для установки ПО Puppet Master и Puppet Client на инстансы EC2. Дополнительные сведения и инструкции см. на странице «Интеграция AWS CloudFormation с Puppet».
Можно ли использовать сервис AWS CloudFormation для установки Terraform?
Да. Сервис CloudFormation может установить программное ядро Terraform на инстансах EC2. Вы можете использовать поставщики ресурсов Terraform для создания ресурсов в стеках с использованием управления состоянием стека, зависимостей, стабилизации и отката.
Поддерживает ли AWS CloudFormation назначение тегов для ресурсов Amazon EC2?
Да. Ресурсам Amazon EC2, поддерживающим такую возможность, в шаблоне AWS можно присваивать теги. Значения тегов могут ссылаться на параметры шаблонов, имена других ресурсов, значения атрибутов ресурсов, таких как адреса, или значения, вычисляемые с помощью простых функций (например, объединенный список строк). CloudFormation автоматически присваивает томам Amazon EBS и инстансам Amazon EC2 теги по имени стека CloudFormation, к которому они принадлежат.
Будет ли у разработчика доступ к инстансам Amazon EC2 или к полям пользовательских данных конфигурации запуска автомасштабирования?
Да. С помощью несложных функций вы можете объединить строковые литералы и значения атрибутов ресурсов AWS и передавать их полям пользовательских данных в вашем шаблоне. Для получения подробных сведений об этих функциях ознакомьтесь с нашими образцами шаблонов.
Что произойдет, если не удастся создать один из ресурсов стека?
По умолчанию в сервисе включена функция автоматического отката при ошибке. CloudFormation создает или обновляет все ресурсы в стеке только при успешном выполнении всех отдельных операций. В противном случае CloudFormation возвращает стек в последнюю известную стабильную конфигурацию. Это полезно в тех случаях, когда вы, к примеру, случайно превысили свой лимит эластичных IP‑адресов по умолчанию или у вас нет доступа к AMI EC2, который требуется запустить. Данная функция гарантирует, что стек будет либо создан полностью, либо не будет создан вообще. Это упрощает администрирование системы и реализацию многоуровневых решений на базе сервиса CloudFormation.
Можно ли отсрочить создание стека до момента запуска нужного приложения?
Да. Один из вариантов, которые предоставляет сервис CloudFormation, – это ресурс WaitCondition, который блокирует создание других ресурсов до тех пор, пока от внешнего источника (от приложения или управляющей системы) не будет получен сигнал завершения. К другим вариантам относится создание собственного программного кода с помощью функций AWS Lambda.
Можно ли при удалении стека сохранить данные?
Да. CloudFormation позволяет задавать политики удаления для ресурсов шаблона. Вы можете настроить создание снимков состояния томов Amazon EBS или инстансов баз данных Amazon RDS перед их удалением, а также задать сохранение определенных ресурсов при удалении стека. Например, таким образом можно предотвратить удаление корзин Amazon S3 при удалении стека.
Можно ли создавать стеки в виртуальном частном облаке (VPC)?
Да. Сервис CloudFormation поддерживает создание облаков VPC, подсетей, шлюзов, таблиц маршрутизации и списков контроля доступа к сети, а также создание таких ресурсов, как эластичные IP‑адреса, инстансы Amazon EC2, группы безопасности EC2, группы Auto Scaling, балансировщики нагрузки Elastic Load Balancer, инстансы баз данных Amazon RDS и группы безопасности Amazon RDS в облаке VPC.
Можно ли обновить стек после его создания?
Да. С помощью сервиса CloudFormation можно вносить изменения в ресурсы существующих стеков и обновлять их контролируемым и предсказуемым образом. Внося в стек изменения с помощью шаблонов, вы можете управлять версиями инфраструктуры AWS точно так же, как и версиями работающего в этой инфраструктуре ПО.
Каким образом можно стать участником сообщества CloudFormation?
Присоединитесь к сообществу AWS CloudFormation в GitHub.
Можно ли управлять ресурсами, созданными за пределами сервиса CloudFormation?
Конечно. С помощью функции импорта ресурсов можно перенести все существующие ресурсы в управление AWS CloudFormation.
Начало работы
Как зарегистрироваться в сервисе AWS CloudFormation?
Чтобы зарегистрироваться в сервисе CloudFormation, нажмите Создать бесплатный аккаунт на странице сведений о продукте CloudFormation. После регистрации обратитесь к разделу документации сервиса CloudFormation, куда входит Руководство по началу работы.
Почему при регистрации в сервисе AWS CloudFormation меня просят подтвердить номер телефона?
Для регистрации в сервисе CloudFormation необходимо указать действительный номер телефона и адрес электронной почты на случай, если нам потребуется связаться с вами. Процедура подтверждения номера телефона занимает всего несколько минут, в ходе нее на ваш номер поступит звонок, и вы будете должны ввести PIN-код с помощью кнопок своего телефона.
Как после регистрации приступить к работе?
Начать работу с CloudFormation проще всего с помощью «Руководства по началу работы», которое входит в техническую документацию. Уже через несколько минут вы сможете выполнить развертывание и начать использовать один из наших образцов шаблонов, на примере которого увидите, как создать инфраструктуру для работы таких приложений, как WordPress. Для обучения работе с сервисом CloudFormation можно использовать различные источники: от учебных планов сторонних поставщиков до учебных пособий и статей в Интернете. Дополнительные сведения см. на странице Ресурсы по CloudFormation.
Имеются ли образцы шаблонов, с помощью которых можно попробовать сервис AWS CloudFormation в работе?
Да. В CloudFormation есть образцы шаблонов, с помощью которых можно испытать работу сервиса и исследовать его возможности. На их примере вы увидите, как обеспечить взаимосвязь и работу различных ресурсов AWS в комплексе, в соответствии с рекомендациями по использованию избыточности во множестве зон доступности, масштабирования и настройки предупреждений. Чтобы приступить к работе, достаточно перейти в Консоль управления AWS, нажать «Создать стек» и выполнить последовательность действий по выбору и запуску одного из наших образцов. Когда стек будет создан, выберите его в консоли и просмотрите вкладки «Шаблон» и «Параметры», чтобы ознакомиться с элементами файла шаблона, который используется при создании этого стека. Образцы шаблонов также доступны в GitHub.
Реестр AWS CloudFormation
Что такое реестр AWS CloudFormation?
Реестр AWS CloudFormation – это управляемый сервис, с помощью которого можно регистрировать, использовать и обнаруживать типы ресурсов AWS и сторонних поставщиков. Сторонние типы ресурсов необходимо регистрировать, прежде чем использовать их для предоставления ресурсов с шаблонами AWS CloudFormation. Подробные сведения см. на странице Использование реестра AWS CloudFormation нашей документации.
Что такое типы ресурсов в AWS CloudFormation?
Поставщик ресурсов – это набор типов ресурсов со спецификациями и обработчиками, которые контролируют жизненный цикл базовых ресурсов с помощью операций создания, чтения, обновления, удаления и получения списка. Поставщики ресурсов можно использовать для моделирования и предоставления ресурсов с помощью CloudFormation. Например, AWS::EC2::Instance – это тип ресурса из поставщика Amazon EC2. Этот тип можно использовать для моделирования и выделения инстанса Amazon EC2 с помощью CloudFormation. Используя реестр CloudFormation, можно создавать и применять поставщики для моделирования и выделения сторонних ресурсов, таких как инструменты мониторинга SaaS, повышения производительности коллектива или управления исходным кодом.
Какова разница между поставщиками ресурсов AWS и сторонними поставщиками?
Разница между поставщиками ресурсов 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 связан с реестром CloudFormation?
Реестр CloudFormation предоставляется с ноября 2019 года для размещения частных предложений о продаже, которые позволяли клиентам применять CloudFormation для частных целей. Публичный реестр является дополнением к обычному реестру CloudFormation, который предоставляет публичное централизованное расположение с поддержкой поиска для размещения, поиска, использования и администрирования разных модулей и типов ресурсов<>. Он упрощает процессы настройки приложений и инфраструктуры и управления ими, предоставляя единый интерфейс для продуктов AWS и сторонних поставщиков.
Взимается ли плата за использование типов ресурсов сторонних поставщиков, которые предоставляются в публичном реестре CloudFormation?
Да. Подробнее см. страницу цен на CloudFormation.
Проверяет ли AWS издателей сторонних расширений, опубликованных в публичном реестре CloudFormation?
Да. В публичном реестре CloudFormation вы получаете гарантированно надежное содержимое, предоставленное проверенными издателями. Прежде всего, мы проверяем личность каждого издателя через AWS Marketplace или сторонние платформы, например GitHub и Bitbucket.
Что собой представляет публичный реестр AWS CloudFormation?
Публичный реестр 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 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 используются в каждом из регионов?
Информацию об адресах для каждого из регионов см. на странице Адреса AWS CloudFormation в технической документации.
В каких регионах AWS в настоящее время доступен сервис AWS CloudFormation?
Дополнительные сведения о доступности сервиса CloudFormation по регионам см. на странице продуктов и сервисов по регионам.