Elastic Container Service
프리티어 기준
클러스터 생성

EC2 인스턴스로 생성. (fargate -> 프리티어 벗어남)
EC2 인스턴스는 왠만해서는 t2.micro or t3.micro 가 프리티어

용량은 안전하게 인스턴스 1개만 생성

용도가 api서버라 public 서브넷만 연결
태스크 정의

EC2 인스턴스로 생성
네트워크는 bridge모드로 설정
awsvpc : Fargate에서만 필요
bridge : 동일한 브리지 네트워크에 연결된 각 컨테이너가 서로 통신할 수 있게함
태스크 크기도 내가 설정한 인스턴스에 맞게 알아서 설정

이미지 URI는 ECR가면 내가 올린 리포지토리 옆에 URI 복사해서 사용
퍼블릭 IP:8080 → EC2의 8080 → 컨테이너 8080
이런식으로 접근하게 할거라서 호스트 포트를 8080으로 설정 (위 그림은 0이라 써있는데 잘못올림)
그리고 컨테이너 포트도 8080으로 설정
서비스 생성 및 태스크 실행
클러스터로 들어가서 서비스 탭에서 생성
서비스에서 원하는 태스크 : 1 로 생성
태스크에서는 내가 생성한 테스크를 매핑해주면 끝
서버 실행

CloudWatch 태스크 로그

api 테스트 성공.
💥 오류
ECS 서비스 생성 후 빌드 오류가 남.
CloudWatch log ->
exec /usr/java/openjdk-17/bin/java: exec format error
docker 빌드시, 인텔맥이 아니면 amd64로 빌드됨. x86_64 기반 빌드하려면 아래 코드를 docker 파일에 추가
# docker-compose.yml
services:
...
platform: linux/amd64
...
...
# dockerfile
docker buildx build --platform linux/amd64 -t [image_name] .