Github Action 으로 AWS Lambda 자동 배포하기(2)
Github Action 으로 AWS Lambda function 자동 배포하기회사 업무로인해 CTO님이 Node로 작성하신 AWS Lambda 함수를 수정하는 역할을 맡게 되었다.(난 java spring이긴한데....) 이후 수정내역을 CTO님께 보고 드리
xddsr123.tistory.com
이전 작성한 Github Action을 조금더 간결하게 동작하도록 수정하였다.
다만 완벽하게 모든 프로젝트에 동일하게 적용할 수준이 아니며, 관리 포인트의 감소가 다이나믹하게 이루지지 않았다.
우선 기존의 하나의 yml 파일에서 dev, main 브랜치에 PUSH 이벤트를 감지하고 있었는데 이를 쪼개어 두개의 파일로 나누었다.
즉 .github/workflows 디렉토리 내부에 dev.yml, main.yml 파일 2개가 존재한다.
분리되고 수정된 dev.yml은 다음과 같다.
name: Deploy lambda function - DEV
on:
push:
branches:
- dev
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
DEV_FUNC_NM: ${{ secrets.DEV_FUNC_NM }}
DEV_ALIAS_NM: ${{ secrets.DEV_ALIAS_NM }}
jobs:
deploy_source:
name: Deploy lambda by github push dev branch
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Compress Code To Zip File
run: zip -r9 code.zip *
- name: Upload Code To Dev
run: aws lambda update-function-code --function-name $DEV_FUNC_NM --zip-file fileb://code.zip
publish_version:
needs: deploy_source
name: Publish version Lambda Function
runs-on: ubuntu-latest
outputs:
dnv: ${{ steps.dev_new_version.outputs.DEV_NEW_VERSION }}
steps:
- name: Publish Version At Dev
id: dev_new_version
run: |
DEV_NEW_VERSION=$(aws lambda publish-version --function-name $DEV_FUNC_NM --description V2 --query Version --output text)
echo "DEV_NEW_VERSION=$DEV_NEW_VERSION" >> "$GITHUB_OUTPUT"
update_configuration:
needs: publish_version
name: Update Environment Variables
runs-on: ubuntu-latest
steps:
- name: Update Dev Lambda Environment Variables
run: aws lambda update-function-configuration --function-name $DEV_FUNC_NM --environment "Variables={TZ=America/Los_Angeles}"
dev.yml을 기준으로 크게 변경 부분은 다음과 같다.
# 1. 불필요한 브랜치 기입부분 제거에 따른 연관된 환경변수 선언 부분 제거
on:
push:
branches: - main
- dev - 'feature/test' - 'feature/test2'
env: PROD_FUNC_NM: ${{ secrets.PROD_FUNC_NM }}
# 2. 새로운 방식에 도입으로 인한 모듈 설치 액션 제거
jobs:
~~~
steps: - name: Install Node Module if: github.ref != 'refs/heads/feature/test2' run: npm install
- 불필요한 브랜치 기입부분 제거에 따른 연관된 환경변수 선언 부분 제거
위에서 작성하였듯 브랜치별 yml 파일 분리에 따라 하나의 파일에서 모든 브랜치 PUSH 이벤트를 감지할 필요가 없으므로 제거 - 새로운 방식에 도입으로 인한 모듈 설치 액션 제거
해당 부분이 이번 글을 작성하는 주된 이유로 AWS Lambda에는 "Layer"(= 계층)이라는 기능이 존재하는데
Layer는 추가 코드 또는 데이터를 포함하는 .zip 파일 아카이브입니다. 계층에는 일반적으로 라이브러리 종속 항목, 사용자 지정 런타
임 또는 구성 파일이 포함된다.
Layer를 생성하는 법은 매우 간단하며 필자는 node_modules 디렉토리를 업로드 하였다. - 사용방법
'GitHub' 카테고리의 다른 글
GitHub Pages + Jekyll(지킬)을 이용하여 페이지 만들기 (1) | 2024.10.15 |
---|---|
Github Action 으로 AWS Lambda 자동 배포하기(2) (0) | 2023.03.13 |
Github Action 으로 AWS Lambda 자동 배포하기 (0) | 2022.12.25 |