Во мрачном прошлом физических серверов инфраструктура создавалась с помощью отверток и кабелей в сырых подвалах. Эти мрачные времена стали светлее, когда облачные решения начали заменять инфраструктуру, находящуюся на территории предприятия, как предпочтительный способ создания и управления серверами. В этой статье блога узнайте, как развертывать облачные решения с помощью AWS CLI и CloudFormation.
Это гостевая статья Карла Эрикссона, сооснователя Mocki – инструмента, который позволяет создавать имитацию API за несколько минут.
Если вы управляете одной средой для вашего приложения, то вы легко можете управлять всеми процессами через графический пользовательский интерфейс (GUI), такой как AWS Console. Но когда у вас есть несколько сред, таких как разработка, тестирование и продукция, вещи становятся сложнее. Вмешательство человека и время вступают в игру. AWS CLI и CloudFormation могут помочь.
Вам нужно управлять своей инфраструктурой в виде кода. В мире AWS это делается с помощью стеков CloudFormation.
При первом развертывании стека CloudFormation AWS создаст все с нуля. Если вы развертываете стек как обновление, он обнаружит все изменения в инфраструктуре и развернет только эти изменения.
Стеки CloudFormation гарантируют применение одних и тех же изменений во всех ваших различных средах.
CloudFormation: AWS инфраструктура в виде кода

AWS CloudFormation – это инструмент для написания и предоставления инфраструктуры в виде кода в среде AWS. Большинство услуг от AWS поддерживаются CloudFormation. Большую часть того, что можно создать с помощью консоли AWS, такие как виртуальные серверы, базы данных, балансировщики нагрузки и файловое хранилище, можно добавить в стек CloudFormation. После добавления все эти ресурсы могут быть развернуты из командной строки или другого автоматизированного процесса.
Для обновлений CloudFormation гарантирует, что операции выполняются наиболее эффективным образом и даже автоматически откатывает изменения, если что-то идет не так.
Давайте теперь узнаем, как создать инфраструктуру с помощью AWS CLI и CloudFormation.
Предварительные требования
Чтобы следовать учебнику по CloudFormation в остальной части этой статьи, убедитесь, что у вас есть следующее:
- Учетная запись AWS
- AWS CLI – Узнайте, как загрузить и настроить здесь. Вы можете подтвердить успешную настройку CLI, запустив команду
aws s3 ls
. Если команда возвращает результат успешно, значит все в порядке.
Если у вас настроено несколько профилей AWS через AWS CLI, пожалуйста, используйте тот, который подходит для разработки или тестирования в этом руководстве.
Создание вашей первой CloudFormation стека
Достаточно информации введения, давайте перейдем к делу и используем AWS CLI и CloudFormation для создания стека!
В этом примере вы создадите стек, содержащий инфраструктуру, необходимую для развертывания статического веб-сайта, размещенного на службе хостинга статических файлов AWS S3.
Чтобы начать, создайте новый файл с именем template.yaml
и заполните его следующим содержимым:
AWSTemplateFormatVersion
– определяет версию формата шаблона, чтобы AWS мог его правильно интерпретировать при его развертывании.Description
– содержит описание шаблона, которое будет отображаться в консоли AWS после его развертывания.Resources
– содержит всю инфраструктуру, которую вы добавляете в шаблон. В данном случае ресурсы создадут простое хранилище S3, на котором будет размещен статический сайт.
Свойство
BucketName
должно быть уникальным, поэтому попробуйте придумать что-то отличное от your-bucket-name.
Развертывание стека с помощью AWS CLI и CloudFormation
Теперь, когда у вас есть простой шаблон для развертывания, разверните его в AWS, используя AWS CLI и CloudFormation с помощью следующей команды:
После выполнения команды перейдите в консоль AWS, затем перейдите в Сервисы → CloudFormation. Вы должны увидеть запущенное развертывание. Через несколько минут вы должны увидеть, что оно переходит в состояние CREATE_COMPLETE
. Если это так, то развертывание завершено!
Если возникли какие-либо ошибки, вы можете увидеть их в разделе События при просмотре подробностей вашего стека.
Перейдите по адресу Сервисы → S3, и теперь вы должны увидеть новый созданный бакет S3.
Создание простого веб-сайта
После создания бакета S3 для хранения веб-сайта, создайте файл index.html, который будет служить сайтом.
Если у вас нет своей собственной концепции, вы можете использовать следующий контент в вашем файле index.html:
Сохраните файл index.html и загрузите его в свой бакет S3 через консоль AWS.
Убедитесь, что индексный файл имеет общедоступный доступ для чтения, так как он будет доступен каждому, посещающему сайт.
Обновление шаблона
Прямо сейчас, вновь созданное хранилище S3 не настроено для размещения веб-сайта. Давайте изменим это. В данный момент вы можете загрузить файл индекса через консоль AWS, но он не доступен через публичный интернет. С помощью AWS CLI и CloudFormation измените конфигурацию для включения размещения статического веб-сайта.
Измените файл template.yaml следующим образом, чтобы включить его. Ниже мы представляем несколько новых свойств нашего шаблона.
AccessControl
– устанавливает права доступа к хранилищу S3 для публичного чтения, чтобы любой пользователь, посетивший сайт, мог увидеть файлindex.html
WebsiteConfiguration
– настраивает хранилище S3 как веб-сайт, который будет обслуживать файл index.html, загруженный при посещении пользователем URL-адреса хранилищаOutputs
– могут быть разными свойствами для ресурсов, которые являются частью стека. В приведенном выше примереWebsiteURL
является выходом стека. При повторном развертывании шаблона вы должны увидеть URL веб-сайта в качестве выхода в консоли AWS CloudFormation.
Теперь разверните изменения в существующем стеке, используя ту же команду, что и на предыдущем шаге:
Чтобы подтвердить результат, перейдите в консоль CloudFormation. Через несколько минут вы должны заметить, что стек находится в состоянии UPDATE_COMPLETE
. Когда стек перейдет в это состояние, перейдите на вкладку Outputs, где вы должны увидеть WebsiteUrl
добавленный в качестве вывода в шаблоне.
Перейдите по предоставленному URL и вы увидите свой сайт в браузере.
Поздравляем! С помощью AWS CLI и CloudFormation вы развернули свой первый стек с использованием инфраструктуры в виде кода! На этом этапе продолжайте добавлять изменения в файл шаблона или создайте новый в соответствии с вашими потребностями.
Вывод
В этом руководстве вы узнали о концепции инфраструктуры в виде кода и преимуществах, которые она имеет по сравнению с ручным развертыванием инфраструктуры. Используя подход инфраструктуры в виде кода с помощью AWS CLI и CloudFormation, вы затем развернули стек для создания статического веб-сайта.
Используя принципы, изученные в этом руководстве, вы можете развернуть готовую к использованию систему полностью с помощью CloudFormation.
Дальнейшее чтение
Если вы хотите узнать больше о инфраструктуре в виде кода как феномене, ознакомьтесь с книгой Infrastructure as Code in the Real World от HashiCorp.
Если вы хотите узнать больше о том, как интегрировать CloudFormation в ваш рабочий процесс разработки и управлять всей вашей инфраструктурой с помощью CloudFormation, обязательно ознакомьтесь с:
- Создайте конвейер с помощью AWS CloudFormation от AWS
- Построение конвейера для тестовых и продукционных стеков от AWS
Удачи в вашем путешествии по развертыванию всей вашей инфраструктуры с использованием кода инфраструктуры в AWS!
Source:
https://adamtheautomator.com/aws-cli-and-cloudformation/