군침이 싹 도는 코딩
도커 이미지로 배포하는 법 본문
1. VS code 에서 Dockerfile을 만든다.
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"]
2. VS code 에서 .dockerignore 파일을 만든다.
__pycache__/
.git/
.serverless/
.gitignore
.dockerignore
serverless.yml
두 파일을 만들때 대소문자 구별해서 똑같이 만든다
3. VS code 에서 serverless.yml로 가서 코드를 수정한다
service: aws-two-api
frameworkVersion: '3'
custom:
wsgi:
app: app.app
provider:
name: aws
region: ap-northeast-2
ecr:
images:
appimage:
path: ./
functions:
app:
image:
name: appimage
events:
- httpApi: '*'
이렇게 수정
4. VS code 에서 requirements.txt 파일로 가서 코드 수정
serverless-wsgi 추가하기
그 외 사용한 라이브러리 추가
5. VS code 에서 app.py 가서 코드 추가
import serverless_wsgi
import os
os.environ['JOBLIB_MULTIPROCESSING'] = '0'
os.environ['HOME'] = '/tmp'
def handler(event, context):
return serverless_wsgi.handle_request(app, event, context)
맨 밑에 이 부분 위에 추가
if __name__ == '__main__' :
app.run()
/////////////
AWS IAM 사용자로 가서 권한을 추가한다
AmazonEC2ContainerRegistryFullAccess
Elastic Container Registry 로 이동해서 리전을 서울로 바꾼다
레파지토리를 생성한다
프라이빗 , 레파지토리 이름을 vsc serverless.yml의 서비스를 복붙한다 예) aws-two-api-app-dev
레파지토리를 체크하고 작업 > 권한 > 편집 > IAM 개체 배포하는 개체 선택 > 작업을 전부다 체크 > 저장
Repositories 로 간다 > 작업 > 권한 > 정책 JSON 편집 "ecr:GetAuthorizationToken", 넣기
배포
요약
1. docker 다운로드 후 실행
2. VS Code 파일 5개 수정
3. AWS에서 IAM 및 ECR 권한 설정
4. 터미널에서 $ sls deploy
'AWS > Lambda' 카테고리의 다른 글
자동 배포 시 오류 상황 ( /github/home/.cache/serverless-python-requirements/downloadCacheslspyc` Exited with code 1 ) (0) | 2023.03.30 |
---|---|
AWS dev prod 바꾸는 법 (0) | 2023.01.17 |
AWS lambda 지연시간에 따른 상태코드 500 해결법 (0) | 2023.01.17 |
lambda layer 만들기 (2) (0) | 2023.01.11 |
Lambda layer 만들기 (1) numpy, pandas 라이브러리를 만드는 법 (1) | 2023.01.11 |