В этой статье мы говорим о том, как мы можем развернуть документ Docker с репозитория ECR на службе AWS Applignner с использованием террафора.
AWS App Runner Runner — это полностью управляемая служба, которая позволяет разработчикам быстро развернуть контейнерные веб-приложения и API, в масштабе и без необходимого опыта инфраструктуры.
Начните с исходного кода или изображения контейнера. Runner App Punner автоматически создает и развертывает веб-приложение и загрузки уравновешивания трафика с шифрованием.
Runner App Runner также автоматически включается вверх или вниз, чтобы соответствовать потребностям вашего трафика. С приложенным бегуном, вместо того, чтобы думать о серверах или масштабирования, у вас есть больше времени, чтобы сосредоточиться на ваших приложениях.
Функции бегуна приложения
AWS приложил много усилий, чтобы сделать все возможное для разработчиков, особенно для мелких проектов, которые не нуждаются в бегинской инфраструктуре. Она имеет:
- Простое автоматическое масштабирование : Информации начинаются и остановлены в качестве изменений спроса, между настраиваемыми мин и максимальными пределами.
- Балансировка нагрузки : Услуга включает в себя прозрачный, не настраиваемый балансировщик нагрузки.
- SSL включен : Вы получаете конечные точки HTTPS для всех ваших приложений с AWS-управляемыми сертификатами. Вам не нужно выдавать или возобновлять сертификаты.
- Создание сервиса : Вы можете протолкнуть свои собственные изображения или позволить AWS построить их для вас из кода.
- Постоянные URL-адреса : Услуга назначает случайно генерируемые URL для каждой среды. Вы можете необязательно сопоставить их до областей своих собственных доменов.
Приложение бегун может работать в двух режимах.
В режиме сборки AWS вытягивает код из GitHub и создает приложение на каждом изменении.
В режиме контейнеров он развертывает докеренные совместимые изображения от публичных или частных реестров ECR AWS.
В этой статье мы будем использовать публику ECR, а также частное хранилище с развертыванием бегуна приложения, которое означает, что мы используем Режим контейнера Отказ
Предварительные условия
- Мы требуем ключа AWS IAM API (ключ доступа и секретный ключ) для создания и удаления разрешений для всех ресурсов AWS.
- ЭКР репозиторий и докерный образ толкал на нем.
- Террафом должен быть установлен на машине. Если Terraform не существует, вы можете загрузить и установить его отсюда.
версия
Чтобы построить AWS App Runner, вам нужно соответствовать следующим версиям:
- Terraform V0.12 или выше * последняя версия AWS поставщика (3.42.0) Настройка приложения Runner в поставщике Terraform AWS
На этот раз я построил его со следующей версией.
$ terraform version Terraform v1.0.0 on linux_amd64
Ресурсы Amazon созданы с использованием террафора
Модуль Terraform — это набор файлов конфигурации террафора в одном каталоге. Даже простая конфигурация, состоящая из одного каталога с одним или несколькими .tf Файлы — это модуль. Когда вы запускаете команды Terraporm непосредственно из такого каталога, он считается корневым модулем
- IAM модуль
- IAM роль и политика
- Утверждающий модуль
- Конфигурация автоматического масштабирования
- AWS Applunner Service
Создайте роль IAM, чтобы предоставить app runner
Настройте роль IAM, чтобы построить AWS App Runner. Ключ build.approunner.amazonaws.com это tasks. combinunner.amazonaws.com указать и для службы, на которую присваивается предположение. После этого AWS подготовил политику для Runner App Runner, поэтому прикрепите его к роли IAM.
resource "aws_iam_role" "role" {
name = "test-role"
assume_role_policy = <Создайте приложение Runner
Наконец, создайте ресурс бегуна приложения в террафоре. Есть некоторые ресурсы, связанные с бегуном приложения, но они являются основными ресурсами для фактического создания приложения Runner AWS_ABRUNNER_SERVICE, Source_Configuration
У нас есть 2 способа развертывания приложения Runner с репозиторий ECR.
- Разверните приложение Runner с ECR Частный репозиторий
- Развернуть приложение Runner с публичным хранилищем ECR
Разверните приложение Runner с ECR Частный репозиторий
resource "aws_apprunner_auto_scaling_configuration_version" "ngnix-apprunner-autoscaling" {
auto_scaling_configuration_name = "demo_auto_scalling"
max_concurrency = 100
max_size = 5
min_size = 1
tags = {
Name = "demo_auto_scalling"
}
}
resource "aws_apprunner_service" "ngnix-apprunner-service-ecr" {
service_name = "demo_apprunner"
source_configuration {
image_repository {
image_configuration {
port = "80"
}
image_identifier = "XXXXX.dkr.ecr.us-east-2.amazonaws.com/nginx-web:latest"
image_repository_type = "ECR"
}
authentication_configuration{
access_role_arn = aws_iam_role.role.arn
}
auto_deployments_enabled = true
}
auto_scaling_configuration_arn = aws_apprunner_auto_scaling_configuration_version.ngnix-apprunner-autoscaling.arn
health_check_configuration {
healthy_threshold = 1
interval = 10
path = "/"
protocol = "TCP"
timeout = 5
unhealthy_threshold = 5
}
tags = {
Name = "demo_apprunner"
}
}
Развернуть приложение Runner с публичным хранилищем ECR
Примечание: В таком подходе нам не нужна роль IAM.
resource "aws_apprunner_auto_scaling_configuration_version" "ngnix-apprunner-autoscaling" {
auto_scaling_configuration_name = "demo_auto_scalling"
max_concurrency = 100
max_size = 5
min_size = 1
tags = {
Name = "demo_auto_scalling"
}
}
resource "aws_apprunner_service" "ngnix-apprunner-service-ecr-public" {
service_name = "demo_apprunner"
source_configuration {
image_repository {
image_configuration {
port = var.port
}
image_identifier = "public.ecr.aws/nginx/nginx:latest"
image_repository_type = "ECR_PUBLIC"
}
auto_deployments_enabled = false
}
auto_scaling_configuration_arn = aws_apprunner_auto_scaling_configuration_version.ngnix-apprunner-autoscaling.arn
health_check_configuration {
healthy_threshold = 1
interval = 10
path = "/"
protocol = "TCP"
timeout = 5
unhealthy_threshold = 5
}
tags = {
Name = "demo_apprunner"
}
}
Проверьте URL App Runner, созданный путем подачи заявки
Я хочу проверить URL созданного Runner App Runner в качестве результата выполнения команды Apply, поэтому вывод набор.
output "app_runner_url" {
value = aws_apprunner_service.example.service_url
}
После этого просто запустите следующие команды.
Terraform init Terraform Plan Terraform применять
Для завершения выполнения потребуется от 2 до 3 минут. Когда выполнение завершено, URL будет отображаться, как показано ниже, поэтому давайте доступен на него.
app_runner_url = "xxxxx.us-east-2.awsapprunner.com/"
Спасибо за чтение, если у вас есть что добавить, пожалуйста, отправьте ответ или добавьте записку!
Оригинал: «https://dev.to/prashant_b/terraform-deploy-docker-image-on-aws-apprunner-from-ecr-repository-164c»