Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Github Actions를 활용하여 AWS Amplify Console에 앱 배포해보기

Haeun
November 18, 2020

Github Actions를 활용하여 AWS Amplify Console에 앱 배포해보기

Developers.IO Korea Online #2 발표자료

Haeun

November 18, 2020
Tweet

More Decks by Haeun

Other Decks in Technology

Transcript

  1. Jung Haeun • 클래스메소드 주식회사 신입엔지니어 8개월차 • 가장 좋아하는

    서비스는 Amplify지만 현재는 다른 서비스들에도 재미를 붙이는 중
  2. 아래 분들을 대상으로 발표 내용을 구성했습니다! • AWS CloudFormation에 대해

    들어본 적은 있지만 직접 써본 적은 없음 • AWS Management Console이나 CLI로 일일이 작업하는 게 귀찮아 대안이 필요함 • 다 치우고 일단 Github Actions가 뭔지 궁금함
  3. 하나의 단위로 관리할 수 있는 AWS 리소스 모음 “스택” •

    CloudFormation 템플릿 안에 필요한 리소스들을 모두 정의 • 리소스들을 한 번에 생성하고 삭제하는 것이 가능함
  4. 하나 이상의 Job으로 구성된 자동화 프로세스 “워크플로우” • Repository에 발생하는

    이벤트를 이용하여 소스를 빌드, 테스트, 패키징, 배포하는 과정을 자동으로 처리 • Github 마켓플레이스에 여러 워크플로우들이 공유되어 있음
  5. 직접 파헤쳐보자! 크게 5가지로 나뉨 1. CloudFormation 스택을 실행하기 위한

    Github Actions Workflow 2. React App 구성 파일들 3. Amplify에 빌드하기 위한 설정 파일 4. CloudFormation 스택 5. 사용 규칙 및 라이선스
  6. 직접 파헤쳐보자! 크게 5가지로 나뉨 1. CloudFormation 스택을 실행하기 위한

    Github Actions Workflow 2. React App 구성 파일들 3. Amplify에 빌드하기 위한 설정 파일 4. CloudFormation 스택 5. 사용 규칙 및 라이선스 deploy.yaml
  7. 직접 파헤쳐보자! 크게 5가지로 나뉨 1. CloudFormation 스택을 실행하기 위한

    Github Actions Workflow 2. React App 구성 파일들 3. Amplify에 빌드하기 위한 설정 파일 4. CloudFormation 스택 5. 사용 규칙 및 라이선스 deploy.yaml
  8. stack.yaml • Parameters, Conditions, Resources, Outputs과 같은 Cloudformation 템플릿 섹션을

    따르고 있음 • Amplify Console에 배포 하기 위한 IAM Role 정책, Amplify 앱 및 브랜치, 도메인 작성
  9. deploy.yaml • 하나의 Job 안에 여러 Step의 정의가 가능함 •

    Step 안에는 간단한 커맨드 실행 또는 Actions을 지정할 수 있음
  10. Deploy 하기 전에 주의 해야 할 사항 1. Token 생성

    • Amplify Console이 Repository에서 웹훅을 구성하기 위해 필요함 • 변경 사항이 Repository에 Push 될 때 웹훅 호출, Amplify Console에서 빌드 파이프 라인 트리거
  11. Deploy 하기 전에 주의 해야 할 사항 2. Secrets 생성

    토큰 액세스키 ID 외부 ID 시크릿 액세스 키 Role ARN
  12. Deploy 하기 전에 주의 해야 할 사항 3. IAM Role에

    배포하는 경우, deploy.yaml에 값을 추가해야 함 https://github.com/aws-actions/configure-aws-credentials ※ 타 외부 Action은 사용하지 말 것!! 반드시 aws-actions에 있는 것으로 사용 • Role-external-id는 IAM Role Policy 내에 적어둔 external id 값을 사용함 • IAM User와 Role의 Policy에 Session tagging 을 허용 해두는 것을 전제로 함
  13. 후기 • AWS Management Console에서 일일이 마우스로 클릭하며 만들고 지우던

    리소스들을 템플릿 하나로 한 방에 처리할 수 있는 게 편함
  14. 후기 • Github라는 이름만으로도 개발자에게는 친숙하게 다가오는 서비스라고 느꼈음. 기본적으로

    무료로 제공되기 때문에 금전적인 부담이 덜함 Github Actions Travis CI Circle CI • Public 리포지토리는 무료 • Private 리포지토리는 월 당 2000분(약 2500 크레 딧) 까지 무료 • 기본 무료 • 월당 10000 크레딧 • 개인 사용의 경우 무료 (주 당 2500 크레딧) • 팀 사용의 경우, 한달 최소 15달러
  15. 후기 • 하나 안타까운 점은 외부 Actions 의 보안 체크가

    약하다는 것 • Github 상에서 따로 Actions 자체를 검사 하지는 않음