Как запустить одноразовую задачу ECS в CodePipeline с помощью Terraform?
Я пытаюсь настроить развертывание веб-приложения Django с помощью Code Build, Code Pipeline и Terraform, но не могу понять, как запустить одноразовую задачу в конвейере для запуска миграций. Я нашел этот сниппер кода для этапа, но, похоже, TaskDefinition не является допустимым именем в конфигурации для aws_codepipeline.
stage {
name = "RunMigrations"
action {
name = "RunMigrationsAction"
category = "Deploy"
owner = "AWS"
provider = "ECS"
version = "1"
input_artifacts = ["BuildOutput"]
configuration = {
ClusterName = var.ecs_cluster_name
TaskDefinition = "django-migration-task"
}
}
}
resource "aws_ecs_task_definition" "django_migration" {
family = "django-migration-task"
network_mode = "awsvpc"
requires_compatibilities = ["FARGATE"]
execution_role_arn = aws_iam_role.ecs-task-execution-role.arn
cpu = 256
memory = 512
container_definitions = jsonencode([
{
name = "django-migration-container"
image = aws_ecr_repository.ecr_repository.repository_url
command = ["python", "manage.py", "migrate"]
logConfiguration = {
logDriver = "awslogs"
options = {
awslogs-group = "/ecs/logs"
awslogs-region = var.aws_region
awslogs-stream-prefix = "ecs"
}
}
portMappings = [
{
containerPort = 8000
}
]
}
])
}
CodePipeline не поддерживает прямой запуск задач ECS. Вам придется запустить задачу CodeBuild, а внутри задачи CodeBuild запустить задачу ECS с помощью инструмента AWS CLI.