회사에서 MWAA를 도입하고 부랴부랴 ETL 개발하고 운영하느라 CI/CD 프로세스를 구축하지 못한 채로 n개월 가까이 지내왔다.
코드 수저사항이 생길때마다 직접 S3폴더에 업로드를 해주는 수고로움을 덜어주고자 aws 공식문서를 참고해 git action으로 간단하게 CI/CD를 도입했다. 이번 작업을 통해 CI/CD에 대해 공부하고 간단하게 구현해보고 실무에 적용할 수 있었다.
이제 코드 수정 후 git에 push만 잘 해주면 s3에 변경사항이 잘 동기화된다!! 편하다! 진작 할껄..ㅎ
MWAA는 S3의 버킷 위치만 지정해주면 30초 마다 변경사항을 자동 감지하고 동기화해주고 있기 때문에 CI만 간단하게 구축해주었다.
수정된 코드를 repo에 푸시하면 지정한 s3에 변경사항이 동기화되도록 workflow를 구성했다.
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탭에서 실행내역이 확인 가능하다.
정상적으로 실행되었다는 초록색 체크 표시!