Github Actions를 활용하여 AWS
Amplify Console에 앱 배포해보기
정하은
Slide 2
Slide 2 text
Jung Haeun
• 클래스메소드 주식회사 신입엔지니어 8개월차
• 가장 좋아하는 서비스는 Amplify지만 현재는 다른 서비스들에도 재미를
붙이는 중
Slide 3
Slide 3 text
아래 분들을 대상으로 발표 내용을 구성했습니다!
• AWS CloudFormation에 대해 들어본 적은 있지만 직접 써본 적은
없음
• AWS Management Console이나 CLI로 일일이 작업하는 게
귀찮아 대안이 필요함
• 다 치우고 일단 Github Actions가 뭔지 궁금함
Slide 4
Slide 4 text
배포 부분이 이해가 잘 안 가…
Slide 5
Slide 5 text
“Github Actions”
Slide 6
Slide 6 text
어떤 내용이길래?
https://aws.amazon.com/ko/blogs/opensource/deploy-aws-cloudformation-stacks-with-
github-actions/
Slide 7
Slide 7 text
그런데 스택과 워크플로우가 뭐죠??
Slide 8
Slide 8 text
하나의 단위로 관리할 수 있는 AWS 리소스 모음
“스택”
• CloudFormation 템플릿 안에 필요한 리소스들을 모두 정의
• 리소스들을 한 번에 생성하고 삭제하는 것이 가능함
Slide 9
Slide 9 text
하나 이상의 Job으로 구성된 자동화 프로세스
“워크플로우”
• Repository에 발생하는 이벤트를 이용하여 소스를 빌드, 테스트, 패키징,
배포하는 과정을 자동으로 처리
• Github 마켓플레이스에 여러 워크플로우들이 공유되어 있음
Slide 10
Slide 10 text
언뜻 봤을 때는 그냥 Github 프로젝트 같은데??
https://github.com/aws-samples/aws-starter-react-for-github-actions
Slide 11
Slide 11 text
직접 파헤쳐보자!
Slide 12
Slide 12 text
직접 파헤쳐보자!
크게 5가지로 나뉨
1. CloudFormation 스택을
실행하기 위한 Github Actions
Workflow
2. React App 구성 파일들
3. Amplify에 빌드하기 위한
설정 파일
4. CloudFormation 스택
5. 사용 규칙 및 라이선스
Slide 13
Slide 13 text
직접 파헤쳐보자!
크게 5가지로 나뉨
1. CloudFormation 스택을
실행하기 위한 Github Actions
Workflow
2. React App 구성 파일들
3. Amplify에 빌드하기 위한
설정 파일
4. CloudFormation 스택
5. 사용 규칙 및 라이선스
deploy.yaml
Slide 14
Slide 14 text
직접 파헤쳐보자!
크게 5가지로 나뉨
1. CloudFormation 스택을
실행하기 위한 Github Actions
Workflow
2. React App 구성 파일들
3. Amplify에 빌드하기 위한
설정 파일
4. CloudFormation 스택
5. 사용 규칙 및 라이선스
deploy.yaml
Slide 15
Slide 15 text
stack.yaml
• Parameters, Conditions, Resources,
Outputs과 같은 Cloudformation 템플릿 섹션을
따르고 있음
• Amplify Console에 배포 하기 위한 IAM Role
정책, Amplify 앱 및 브랜치, 도메인 작성
Slide 16
Slide 16 text
deploy.yaml
• 하나의 Job 안에 여러 Step의 정의가 가능함
• Step 안에는 간단한 커맨드 실행 또는
Actions을 지정할 수 있음
Slide 17
Slide 17 text
Deploy 하기 전에 주의 해야 할 사항
1. Token 생성
• Amplify Console이 Repository에서 웹훅을 구성하기 위해 필요함
• 변경 사항이 Repository에 Push 될 때 웹훅 호출, Amplify
Console에서 빌드 파이프 라인 트리거
Slide 18
Slide 18 text
Deploy 하기 전에 주의 해야 할 사항
2. Secrets 생성
토큰
액세스키 ID
외부 ID
시크릿 액세스 키
Role ARN
Slide 19
Slide 19 text
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 을 허용 해두는 것을 전제로 함
Slide 20
Slide 20 text
드디어 배포…!!
Amplify는 빌드 파이프라인을 따로 갖고 있기 때문에 스택 내용이 변경될 때만 수동으로 실행
Slide 21
Slide 21 text
드디어 배포…!!
Slide 22
Slide 22 text
드디어 배포…!!
Slide 23
Slide 23 text
후기
• AWS Management Console에서 일일이 마우스로 클릭하며 만들고
지우던 리소스들을 템플릿 하나로 한 방에 처리할 수 있는 게 편함
Slide 24
Slide 24 text
후기
• Github라는 이름만으로도 개발자에게는 친숙하게 다가오는 서비스라고
느꼈음. 기본적으로 무료로 제공되기 때문에 금전적인 부담이 덜함
Github Actions Travis CI Circle CI
• Public 리포지토리는 무료
• Private 리포지토리는 월
당 2000분(약 2500 크레
딧) 까지 무료
• 기본 무료
• 월당 10000 크레딧
• 개인 사용의 경우 무료 (주
당 2500 크레딧)
• 팀 사용의 경우, 한달 최소
15달러
Slide 25
Slide 25 text
후기
• 하나 안타까운 점은 외부 Actions 의 보안 체크가 약하다는 것
• Github 상에서 따로 Actions 자체를 검사 하지는 않음
Slide 26
Slide 26 text
후기
아직 1년 좀 넘은 서비스인 것을 감안했을 때,
이후에도 발전의 여지는 충분히 있을 것 같다!!