본문 바로가기

GitHub

Github Action 으로 AWS Lambda 자동 배포하기

반응형

회사 업무로인해 CTO님이 Node로 작성하신 AWS Lambda 함수를 수정하는 역할을 맡게 되었다.(난 java spring이긴한데....)

이후 수정내역을 CTO님께 보고 드리면서 AWS Lambda 함수를 자동으로 배포하는 작업을 추가로 할당받게 되었다.

 

처음에는 AWS CodeDeploy를 사용하려고 했지만 도저히 길이 보이지 않아 Github Action을 사용하는 방법을 사용하기로 하였다.

아래는 Github Action Workflow에 대한 yml 파일이다.

name: deploy lambda function
on:
  push:
    branches:
      - deploy
jobs:
  deploy_source:
    name: deploy lambda by push
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v3
      - name: config aws credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ${{ secrets.AWS_REGION }}
          function_name: #function_name
          memory_size: 4096
          timeout: 300
      - name: install node_modules
        run: npm install
      - name: zip Lambda Function
        run: zip -r9 #function_name.zip *
      - name: update code
        run: aws lambda update-function-code --function-name #function_name --zip-file fileb://#function_name.zip

 

Github Action은 deploy 브랜치에 푸시가 되었을 시 동작하도록 하였고 aws credentials은 Github secrets를 생성하여 민감한 정보가 노출되지 않도록 하였다.

#function_name부분은 AWS Lambda 함수의 명이 노출되길 원하지 않았기에 수정하여 작성해 놓았다.

Node Module이 필요하여 npm install 명령어가 동작하도록 추가하였다.

반응형