1+ name : Deploy to Lambda (ECR)
2+
3+ on :
4+ push :
5+ branches : [ "develop", "main" ]
6+
7+ # OIDC 인증을 위한 권한 설정
8+ permissions :
9+ id-token : write
10+ contents : read
11+
12+ jobs :
13+ deploy :
14+ name : Build, Push to ECR, and Deploy to Lambda
15+ runs-on : ubuntu-latest
16+
17+ # 브랜치에 따라 사용할 환경 선택
18+ environment : ${{ github.ref == 'refs/heads/main' && 'PROD' || 'DEV' }}
19+
20+ steps :
21+ - name : Checkout code
22+ uses : actions/checkout@v4
23+
24+ # AWS 자격 증명 설정
25+ - name : Configure AWS credentials
26+ uses : aws-actions/configure-aws-credentials@v4
27+ with :
28+ role-to-assume : ${{ vars.AWS_ROLE_ARN }}
29+ aws-region : ${{ vars.AWS_REGION }}
30+
31+ # Amazon ECR 로그인
32+ - name : Login to Amazon ECR
33+ id : login-ecr
34+ uses : aws-actions/amazon-ecr-login@v2
35+
36+ # Docker 이미지 빌드 및 푸시
37+ - name : Build, tag, and push image to Amazon ECR
38+ id : build-image
39+ env :
40+ ECR_REGISTRY : ${{ steps.login-ecr.outputs.registry }}
41+ ECR_REPOSITORY : ${{ vars.ECR_REPOSITORY_NAME }}
42+ IMAGE_TAG : ${{ github.sha }}
43+ run : |
44+ docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG -t $ECR_REGISTRY/$ECR_REPOSITORY:latest -f Dockerfile .
45+
46+ docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
47+ docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest
48+
49+ echo "image_uri=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT
50+
51+ # Lambda 함수 업데이트
52+ - name : Deploy new image to AWS Lambda
53+ run : |
54+ aws lambda update-function-code \
55+ --function-name ${{ vars.LAMBDA_FUNCTION_NAME }} \
56+ --image-uri ${{ steps.build-image.outputs.image_uri }}
57+
58+ # 코드 업데이트가 완료될 때까지 대기
59+ - name : Wait for Lambda function update to complete
60+ run : |
61+ aws lambda wait function-updated \
62+ --function-name ${{ vars.LAMBDA_FUNCTION_NAME }}
63+
64+ # Lambda 환경 변수 설정
65+ - name : Update Lambda Environment Variables
66+ run : |
67+ aws lambda update-function-configuration \
68+ --function-name ${{ vars.LAMBDA_FUNCTION_NAME }} \
69+ --environment "Variables={ \
70+ REGION_NAME=${{ vars.AWS_REGION }}, \
71+ LAMBDA_FUNCTION_NAME=${{ vars.LAMBDA_FUNCTION_NAME }}, \
72+ ECR_REPOSITORY_NAME=${{ vars.ECR_REPOSITORY_NAME }}, \
73+ BUCKET_NAME=${{ vars.BUCKET_NAME }}, \
74+ THUMBNAIL_BUCKET=${{ vars.THUMBNAIL_BUCKET }} \
75+ }"
0 commit comments