git action으로 MWAA CI/CD 구축하기

Yeolsim's logs·2024년 5월 1일
0

회사에서 MWAA를 도입하고 부랴부랴 ETL 개발하고 운영하느라 CI/CD 프로세스를 구축하지 못한 채로 n개월 가까이 지내왔다.

코드 수저사항이 생길때마다 직접 S3폴더에 업로드를 해주는 수고로움을 덜어주고자 aws 공식문서를 참고해 git action으로 간단하게 CI/CD를 도입했다. 이번 작업을 통해 CI/CD에 대해 공부하고 간단하게 구현해보고 실무에 적용할 수 있었다.

이제 코드 수정 후 git에 push만 잘 해주면 s3에 변경사항이 잘 동기화된다!! 편하다! 진작 할껄..ㅎ

CI/CD란?

  • CI(지속적 통합)
    • 개발자들이 지속적으로 코드를 개별 브랜치에 pushs하고 ,push한 코드를 빌드->테스트를 한게 이상이 없을 경우 바로 메인 브랜치로 머지하는것을 말한다.
    • 검증된 코드를 빠르게 어플리케이션에 반영 가능
    • 불필요한 conflict를 해결에 대한 업무로드를 줄여줄 수 있음
    • 좋은 퀄리티의 코드 버전 유지 가능
  • CD(지속적 배포)
    • 서비스 배포 단계에서 최신 CI를 반영하여 검증 및 프로덕션 환경에 배포하는 단계를 말함

MWAA CI 구축 방법

MWAA는 S3의 버킷 위치만 지정해주면 30초 마다 변경사항을 자동 감지하고 동기화해주고 있기 때문에 CI만 간단하게 구축해주었다.

수정된 코드를 repo에 푸시하면 지정한 s3에 변경사항이 동기화되도록 workflow를 구성했다.

Git action을 사용하여 MWAA CI구축하는 방법

  • 1.깃허브 레퍼지토리 생성
  • 2.aws 사용자 권한 생성
    -github이 aws s3에 접근할 수 있도록 권한을 주고 해당 권한에 대한 정보를 workflow에 반영해야한다.
    -iam >액세스관리>사용자 에서 s3 access권한을 부여한 사용자를 하나 만들고 access 키 정보를 csv로 저장한다.
  • 3.git에 secret variable등록
    레포지토리의 settings에서 아까 저장한 access 정보를 등록한다.

  • 4.git action workflow 작성
    아래와 같이 workflow를 작성하면 끝~!
    추가적으로 필요한 동작이 있다면 step이나 job을 추가해주면 된다.

name: CI for MWAA
on: 
  push:
    branches:
      - main
  
env:
  BUCKET_NAME: 버킷정보
  AWS_REGION: 리전정보


permissions:
  id-token: write   # This is required for requesting the JWT
  contents: read    # This is required for actions/checkout

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Git clone the repository
        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: ap-northeast-2

      - name: Sync Airflow files to the MWAA S3 bucket with the AWS CLI
        run: |
          aws s3 sync . s3://${{ env.BUCKET_NAME }}/경로추가/ --follow-symlinks --exclude '.git/*' --exclude 'MongoDB/*' --exclude 'ecs/*' --exclude 'README.md' --exclude 'requirements.txt'

actions탭에서 실행내역이 확인 가능하다.
정상적으로 실행되었다는 초록색 체크 표시!

참고자료
https://aws.amazon.com/ko/blogs/opensource/deploying-to-amazon-managed-workflows-for-apache-airflow-with-ci-cd-tools/

0개의 댓글