ECS로 flask 웹서비스 배포

강재민·2022년 5월 13일
0

AWS실습

목록 보기
11/12
post-thumbnail

AWS CLI

iam을 테라폼사용하던 계정말고 하나 더 추가 해주는게 좋음
이미지를 registrypush 하려면 AWS CLI가 필요함

  • IAM 계정 생성(프로그래밍 방식)
  • docker vm에 aws 명령설치
  • aws 명령 인증 구성
aws configure list		# aws configure 잘 되었는지 확인

Docker 설치


Amazon ECR

Elastic Container Service/리포지토리/리포지토리 생성

항목설정값
표시여부 설정퍼블릭
리포지토리 이름유일한 이름으로 설정

/리포지토리 생성/클릭


hello.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

Dockerfile

FROM python:3.9-slim
RUN pip3 install flask
WORKDIR /root
ADD hello.py .
CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0"]

Flask 이미지 build

docker build -t pyhello:flask .
docker images
docker tag pyhello:flask public.ecr.aws/d5r9n1r7/repush:flask

이미지 push

/Amazon Elastic Container Registry/Repositories/푸시 명령어보기/클릭

aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/d5r9n1r7
docker push public.ecr.aws/d5r9n1r7/repush:flask

/서비스/Amazon ECR/리포지토리/repush/에서 이미지 확인


Amazon ECS

/서비스/ECS/클러스터 생성/클릭

항목설정값
클러스터이름mycontainer
네트워킹기본값유지
인프라기본값 유지
모니터링활성화

/생성/클릭

/서비스/ECS/테스크 정의/새 태스크 정의 생성/클릭

항목설정값
태스크 정의 패밀리flask-task
이름flaskweb
이미지 URIpublic.ecr.aws/d5r9n1r7/repush:flask
컨테이너 포트80

/다음/클릭

항목설정값
앱환경AWS Fargate
운영 체제Linux/X86_64
CPU0.25 vCPU
메모리0.5GB
모니터링기능활성화

/다음/클릭
/생성/클릭

/Amazon Elastic Container Service/클러스터/mycontainer/태스크/새 태스크 실행/클릭

항목설정값
애플리케이션 유형서비스
패밀리flask-task
서비스 이름myweb-svc
원하는 태스크2

/배포/클릭

/Amazon Elastic Container Service /클러스터 /mycontainer /태스크/컨테이너 클릭

주소창에 퍼블릭 IP 입력해보면..


오류

레포지토리에 올린 이미지를 태스크 정의에서 생성한 이미지 주소를 입력해도 나중에 생성시에 해당 이미지를 불러오지 못하는 오류가 발생했다. 이 부분을 해결해보자..

1개의 댓글

comment-user-thumbnail
2022년 10월 3일

저도 같은 오류를 발견해서 해결책을 찾고 있습니다 ㅎㅎ

답글 달기