모노 리포지토리에서 AWS Lambda 함수 배포

내 워크플로우



Github Action를 사용하여 단일 리포지토리에서 변경된 파일을 기반으로 AWS Lambda 함수를 배포합니다.

많은 분들이 유용한(CI/CD 포함) 훌륭한serverless 프레임워크를 사용하고 있다는 것을 알고 있습니다. 그러나 더 작은 사용 사례(예: 개인 Lambda 함수)의 경우 사용하지 않는 것이 더 쉽다는 것을 알았습니다.
하지만 사용하지 않으면 비용이 발생하므로 이 비용을 없애고 싶어서 이 액션을 만들었습니다.

제출 카테고리:



이것은 DIY 배포 항목입니다.

Yaml 파일 또는 코드 링크




블롬바드 / 람다-모노레포


모노 리포지토리에 AWS Lambda 함수를 배포하기 위한 GitHub 작업






AWS 람다 모노 리포지토리


Github Action를 사용하여 모노 리포지토리에서 변경된 파일을 기반으로 AWS Lambda 함수를 배포합니다.

전제 조건


리포지토리의 secrets에서 AWS 자격 증명을 설정합니다.
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_지역
  • filters.yml 파일을 생성하고 .github/worklows에 넣습니다: .github/worklows/filters.yml파일의 구조는 다음과 같아야 합니다.
    LambdaFunction1
      - 'LambdaFunction1/**/*'
    LambdaFunction2
      - 'LambdaFunction2/**/*'
    

    예시


    on
      push
        branches:
          - master
    
    jobs:
      deploy:
        name: Deploy to AWS Lambda 
        runs-on: ubuntu-latest
    
        steps:
        - name: Checkout
          uses: actions/checkout@v2
    
        - name: Configure 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 }}
    
        - uses: dorny/[email protected]
          id: filter
          with:
            filters: .github/filters.yml
    
        - uses: blombard/lambda-monorepo@master
          with:
            lambda-functions: '${{ toJson(steps.filter.outputs) }}'
            zip-params: '*.js *.json src/ node_modules/

    If you want to use this action in your workflow here is an example :

    Set your AWS credentials in the secrets of your repo:

    • AWS_ACCESS_KEY_ID
    • AWS_SECRET_ACCESS_KEY
    • AWS_REGION

    Create a filters.yml file and put it in .github/worklows : .github/worklows/filters.yml

    The structure of the file should be :

    LambdaFunction1:
      - 'LambdaFunction1/**/*'
    LambdaFunction2:
      - 'LambdaFunction2/**/*'
    
    main.yml
    on:
      push:
        branches:
          - master
    
    jobs:
      deploy:
        name: Deploy to AWS Lambda 
        runs-on: ubuntu-latest
    
        steps:
        - name: Checkout
          uses: actions/checkout@v2
    
        - name: Configure 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 }}
    
        - uses: dorny/[email protected]
          id: filter
          with:
            filters: .github/filters.yml
    
        - uses: blombard/lambda-monorepo@master
          with:
            lambda-functions: '${{ toJson(steps.filter.outputs) }}'
            zip-params: '*.js *.json src/ node_modules/'
            alias-name: 'production'
            layer-name: 'MyLayer'
    

    추가 리소스



    이 작업은 Github 작업을 기반으로 합니다.
  • configure-aws-credentials
  • paths-filter

  • 정보



    이것은 GH 작업을 구축하려는 첫 번째 시도이자 첫 번째 Dev 게시물입니다. 당신이 그것을 좋아하기를 바랍니다! 그리고 당신에게 유용하다면 주저하지 말고 행동을 개선하십시오.

    좋은 웹페이지 즐겨찾기