Создание репозитория AWS ECR с помощью Cloudformation

Cloudformation — это инструмент инфраструктуры как кода (iac), который дает нам суперспособность легко реплицировать инфраструктуру на платформе AWS, а также дает пользователям возможность легко контролировать и отслеживать изменения в инфраструктуре.

Cloudformation помогает настраивать ресурсы AWS с помощью шаблонов, написанных в формате json или yaml, что сокращает время, затрачиваемое на управление ресурсами, и дает нам больше времени, чтобы сосредоточиться на приложении, работающем в AWS. Чтобы узнать больше о супервозможностях cloudformation, пожалуйста, найдите документацию здесь.

Эта статья рассказывает о том, как использовать cloudformation для создания ecr repo на AWS. Если вас интересует, как использовать terraform для создания ecr repo, пожалуйста, найдите мою статью об этом здесь.


Предварительные условия:

  • Скачайте и установите AWS CLI, чтобы вы могли взаимодействовать с сервисами AWS из интерфейса командной строки.

  • Настройте учетные данные AWS через cli с помощью команды AWS configure. Для этого вам нужно создать пользователя с помощью IAM на AWS.

Структура проекта

Для этого проекта нам понадобятся три файла, как показано и объяснено ниже:
ecr.yml: Это шаблон cloudformation, используемый при создании ресурса ecr repo на AWS.

ecr.json: Это параметры cloudformation, которые позволяют нам динамически вводить значения при создании или обновлении стека. Параметры облачной трансформации записываются в формате json.

create.sh: В основном это файл, содержащий команду, которая создает стек cloudformation вместо того, чтобы набирать команду многократно.

Ecr_cloudformation

  • ecr.yml
  • ecr.json
  • create.sh


Конфигурация проекта

Шаг 1: Откройте файл ecr.json, вставьте в него следующий код и сохраните. Это наш шаблон параметров.

[
   {
       "ParameterKey": "repoName",
       "ParameterValue": "ecr"
   }
]
Войти в полноэкранный режим Выйти из полноэкранного режима


Шаг 2: Откройте файл ecr.yml, вставьте в него следующие строки кода и сохраните. Это наш шаблон ресурсов, написанный в формате yaml, отступы очень важны.

AWSTemplateFormatVersion: 2010-09-09
Description: Elastic Container Registory Repository using Cloudformation

#------------------------
#   PARAMETERS
#------------------------
Parameters:
  repoName: 
    Description: Name for ecr repo 
    Type: String

#------------------------
#   RESOURCES
#------------------------ 
Resources:
  ecrRepo:
    Type: AWS::ECR::Repository
    Properties: 
      RepositoryName: !Sub ${repoName}-repo
      ImageScanningConfiguration: 
        ScanOnPush: true
Войти в полноэкранный режим Выйти из полноэкранного режима

строка 1: Здесь указываются возможности шаблона, и единственное допустимое значение версии — 2010-09-09. Значение должно быть литеральной строкой, и этот раздел является необязательным.

строка 2: Этот раздел позволяет добавить комментарий о шаблоне и является необязательным.

строки 7 — 10: Это раздел параметров, и параметр, объявленный здесь, — это repoName со значением по умолчанию, объявленным в файле ecr.json.

строки 15 — 21: Это раздел ресурсов, в котором объявляются ресурсы AWS, которые вы хотите включить в стек. Ресурсом, объявленным здесь, является ecrRepo. В свойствах параметр repositoryName был использован путем замены его на дополнительное расширение -repo.


Шаг 3: Для раскрутки ресурсов мы будем использовать команду cloudformation create-stack, но включим ее в созданный нами файл create.sh, чтобы к ней можно было легко получить доступ и использовать.
Откройте файл create.sh и добавьте в него следующую команду:

aws cloudformation create-stack --stack-name $1 --template-body file://$2 --parameter file://$3 --region=us-east-1
Войти в полноэкранный режим Выйти из полноэкранного режима

Прежде чем выполнить эту команду, необходимо перейти в каталог проекта и предоставить файлу create.sh доступ к выполнению с помощью следующей команды:

chmod +x create.sh
Войти в полноэкранный режим Выйти из полноэкранного режима

После того, как файлу будет предоставлен доступ к выполнению, вы можете безопасно создать стек cloudformation, который запустит репозиторий ecr, используя команду ниже:

./create.sh ecr-repo ecr.yml ecr.json
Войти в полноэкранный режим Выйти из полноэкранного режима

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

Обратите внимание на следующее в файле create.sh:
$1 = ecr-repo
$2 = ecr.yml
$3 = ecr.json


Полностью созданный стек облачной трансформации


Успешно созданное репо ecr

Вы успешно создали эластичный репозиторий реестра контейнеров с помощью cloudformation и можете безопасно публиковать в нем образы контейнеров.


Спасибо, что дочитали до конца. Пожалуйста, свяжитесь со мной в разделе комментариев, если у вас есть вопросы, или в LinkedIn и Twitter, чтобы узнать, как улучшить работу или поздороваться.

До следующего раза, будьте здоровы.

Оцените статью
devanswers.ru
Добавить комментарий