ECS에 대해서는 ECS에 대하여 페이지에서 설명했으니 바로 실습으로 넘어간다.

현재 ECS 블루-그린 배포는 클래식 콘솔로만 작업이 가능하다. 2023년 12월 4일부터 클래식 콘솔을 못 쓴다고 하니 아래 자습서를 참고해서 CLI로 생성하는 방법도 찾아봐야겠다. 🤔 (AWS에 의견 보내기를 통해 알리긴 했지만, 일정 내로 고쳐줄 것 같지 않은 느낌…)

자습서: 블루/그린 배포를 사용하여 서비스 생성 - Amazon Elastic Container Service


[클러스터 생성] 을 눌러서 진행하자.

Untitled


클러스터 생성

[클러스터 이름]dev-nestjs-guide 를 넣어주었다.

[VPC]dev-vpc 를 사용한다.

[서브넷] 은 Private Subnet만 남겨준다.

[인프라][AWS Fargate] 가 기본 설정되어 있으니 놔두자.

[생성] 을 눌러서 클러스터 생성을 마무리 한다.

Untitled


태스크 정의 작성

task-definition.json 은 ECS에서 실행될 Task의 설정을 담고 있는 json 형식 파일이다.

NestJS 프로젝트에서 다음 경로에 파일을 생성하자.

ecs/develop/task-definition.json

{
  "executionRoleArn": "arn:aws:iam::000000000000:role/ecsTaskExecutionRole",
  "taskRoleArn": "arn:aws:iam::000000000000:role/ecsTaskRole",
  "containerDefinitions": [
    {
      "name": "nestjs-guide-api",
      "essential": true,
      "image": "dummy",
      "cpu": 0,
      "portMappings": [
        {
          "hostPort": 3000,
          "containerPort": 3000,
          "protocol": "tcp"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/develop/nestjs-guide-api",
          "awslogs-region": "ap-northeast-2",
          "awslogs-stream-prefix": "ecs"
        }
      },
      "ulimits": [
        {
          "name": "nofile",
          "softLimit": 65535,
          "hardLimit": 65535
        }
      ]
    }
  ],
  "requiresCompatibilities": ["FARGATE"],
  "networkMode": "awsvpc",
  "cpu": "256",
  "memory": "512",
  "family": "develop-nestjs-guide-api"
}

Untitled


태스크 정의 생성

ECS 페이지에서 [태스크 정의] 를 누르고, [새 태스크 정의 생성] 을 눌러준다.

[JSON을 사용하여 새 태스크 정의 생성] 을 눌러준다.

Untitled

기존에 있던 내용은 지우고 위에서 생성한 task-definition.json 의 내용을 붙여넣는다.

또한 “image”: “dummy” 를 아래 처럼 바꾸어주자.

"image": "000000000000.dkr.ecr.ap-northeast-2.amazonaws.com/dev-nestjs-guide-api"

노파심에 덧붙이자면 000000000000 는 전부 자신의 [Account ID] 로 바꿔서 넣자.

[생성] 을 눌러서 태스크 정의를 마무리한다.

Untitled


로드 밸런서 설정 변경

블루-그린 배포로 인해서 이 부분이 조금 복잡하니 잘 따라해보자.

[로드 밸런서] 페이지로 이동한다.

Load Balancer 에서 생성한 로드 밸런서를 누르고 상세에서 **[리스너]**를 누른다.

HTTPS:443 리스너에서 [규칙 보기/편집] 을 눌러준다.

Untitled

상단 네비게이션의 연필 모양 [편집] 버튼을 누르면 규칙을 편집할 수 있는 연필 모양이 또 나타난다.

[전달 대상…]dev-nestjs-guide-api-green 으로 수정해주자.

이렇게 하는 이유는 ECS 생성시 콘솔에서 대상 그룹을 인식하게 하기 위해서이다.

(이걸 안해주면 새로 생성해야하는데, 포트 매핑 설정이 안되서 더 귀찮아진다.)

[업데이트] 를 눌러서 마무리 한다.

Untitled