먼저, https://www.docker.com/get-started/ 에서 설치하고 실행 후 로그인한다.
-> Docker 로그인 할 때 이런 문제가 발생하면 터미널에 wsl.exe --install 실행
ECR(Elastic Container Registry)에 도커 이미지 업로드 가능하게 AWS 설정
-> AWS의 IAM의 유저에 위 권한 추가 후 ECR로 이동(region 확인)
-> 리포지토리 생성 클릭 - 프라이빗 체크 - 빈칸엔 AWS lambda의 서비스명-dev로 작성 후 생성
-> 만든 리포지토리 체크 후 작업 탭에 권한 클릭 - 권한 편집에서 명령 추가 - IAM 개체텝에서 IAM 사용자명 검색 후 체크
-> 20개 모두 체크 후 저장한다
-> 다시 정책 JSON 편집 클릭 - ecr:GetAuthorizationToken 권한도 추가로 설정해준다.
Serverless Flask 서버를 Docker Image로
FROM public.ecr.aws/lambda/python:3.9
COPY . ${LAMBDA_TASK_ROOT}
COPY requirements.txt .
RUN yum -y install gcc
RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
CMD ["app.handler"]
-> vscode로 배포 할 폴더를 열고 Dockerfile이라는 파일 생성, 위 코드를 그대로 적는다. (파이썬 버전 확인)
#.dockerignore
__pycache__/
.git/
.serverless/
.gitignore
.dockerignore
serverless.yml
-> .dockerignore 파일 생성 후 위 코드 적는다.
service: 서비스명
frameworkVersion: '3'
custom:
wsgi:
app: app.app
provider:
name: aws
runtime: python3.10
region: ap-northeast-2
ecr:
images:
appimage:
path: ./
functions:
app:
image:
name: appimage
timeout: 30
events:
- httpApi: '*'
-> serverless.yml 파일 위 코드로 수정
serverless-wsgi
-> requirements.txt 파일에 위 라이브러리 추가(추가 전에 이미 필요한 라이브러리들 있는 상태여야 한다.)
import serverless_wsgi
def handler(event, context):
return serverless_wsgi.handle_request(app, event, context)
-> app.py 파일에 위 코드 추가하고 터미널에 sls deploy 실행, endpoint에 나온 주소로 테스트한다.
-> 정상 작동한 모습
-> AWS의 lambda 함수를 확인해보면 Docker로 배포한 경우엔 Image, 일반 서버리스로 배포하면 Zip으로 나온다.
'AWS' 카테고리의 다른 글
[AWS] React 웹 AWS S3로 배포하기 (0) | 2023.12.24 |
---|---|
[AWS] Git Actions를 이용한 Docker Image 배포 자동화(CI/CD) 하는 방법 (0) | 2023.12.19 |
[AWS] AWS의 S3 생성하는 법 (0) | 2023.12.14 |
[AWS] Git Actions를 이용한 Lambda에 배포 자동화(CI/CD) 하는 방법 (0) | 2023.12.12 |
[AWS] Lambda에 수작업 배포 하는 방법 (0) | 2023.12.12 |