Как запустить одноразовую задачу 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.

Вернуться на верх