Slide 1

Slide 1 text

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년 좀 넘은 서비스인 것을 감안했을 때, 이후에도 발전의 여지는 충분히 있을 것 같다!!

Slide 27

Slide 27 text

감사합니다!