GIT 코드를 S3 에 연동하기

HYEONG HWAN, MUN/ 11월 24, 2019/ 미분류/ 0 comments

이 글은 S3로 정적 웹사이트 호스팅하기(https://blog.lael.be/post/9648)에 이어 작성하는 글이다.

 

git 을 통해 S3 에 업로드하는 방법에 대해 알아 보도록 하겠다.

 

1. Github 를 사용해서 Git repository 생성.

Github : https://github.com/

계정이 없다면 하나 만들도록 하자. github 계정은 당신이 IT 관련 일을 한다면 반드시 있어야 하는 것이다.

Private (비공개)로 만드는 것이 좋습니다.

Organization 에 속한 계정이라면 Organization 에 만들어도 좋으나, AWS 연동시 최초 1회, 자신 및 Organization Admin , 총 2명에게 승인을 받아야 합니다.
즉, 먼저 본인 개인 계정에서 실습해보고 확신이 든다면 Organization Project 에 적용해주세요.

 

만약 당신의 회사가 Gitlab 이나 Bitbucket 을 사용 중이라면, Gitlab/Bitbucket 에도 저장소를 만들고, Github 에도 저장소를 만들어야 합니다.

그 다음 저장소 미러링 구성을 하면 됩니다. Password 는 token key 를 발급해서 사용하세요.

 

2. AWS Code Pipeline 생성

AWS 서비스들은 파일의 교환을 S3 를 통해서 합니다. 거의 대부분의 서비스가 S3 에 연결되어 있죠.

Git 소스를 S3 에 업로드 할 수 있는 것은, 정적 웹사이트 호스팅을 위해 있는 것이 아니라, CI/CD (코드 통합 및 배포) 기능을 위해 있는 것입니다.

우리는 Code 를 S3 에 단순히 복사하는 Pipeline 을 만들어보겠습니다.

 

웹 콘솔에서 Code Pipeline 이동 후 Create Pipeline 을 클릭합니다.

1) Pipeline settings

파이프라인 이름만 설정하세요. 아무거나 이해하기 쉬운 이름을 입력하세요.

 

2) Add source stage

Source ProviderGithub 로 선택한 다음, 적절히 입력해주세요. Github push webhook 에 AWS Pipeline API 호출이 등록됩니다.

Organization 에 있는 Repository 가 보이지 않을 경우, Github setting 페이지의 Organization request 부분을 확인해보세요.

 

3) Build stage

빌드를 하지 않게 때문에 Skip 하면 됩니다.

(추후 sass 를 build 해서 css 를 만드는 예제를 추가할 수도 있음)

 

4) Deploy

Deploy provider 로 Amazon S3 를 선택합니다.

적절히 입력합니다. 이 때 Extract file before deploy 에 체크하세요.

Extract 를 하지 않으면 압축한 파일이 배포됩니다.

 

 

끝~ 이제 git 의 master branch 에 push 하면, 여러 단계를 통해서 S3 에 반영됩니다.

 

 

사용할 때 주의해야 할 점.

몇가지 제한 사항이 있습니다.

- Master branch에 푸쉬될 때마다 S3의 모든 코드가 overwrite 됩니다. 즉 1개의 파일을 수정해도 전체 파일이 다시 쓰기가 됩니다.
트래픽이 걱정된다면, HTML, JS, CSS 등의 파일만 git 프로젝트로 관리하세요. 그외 리소스는 S3 에 직접 업로드하세요.
그러나 대체적으로 정적 사이트는 파일 크기가 작기 때문에, 그냥 이대로 사용해도 좋습니다.
많은 수정이 필요하다면, S3 에 먼저 직접 수정테스트를 하고, 확정되면 git 에 올리면 됩니다.

- Overwrite 에 해당하지 않는 작업은 반영이 되지 않습니다. 즉, Modify 작업은 잘 반영이 되는데, Delete 는 반영되지 않습니다. Move 는 Old data 가 남은 상태로 New data 가 생깁니다. Delete 작업은 수동으로 해 주어야 합니다.

- 웹사이트가 30초 정도 다운되어도 크리티컬한 상황이 발생하지 않는다면 S3 에서 파일을 모두 삭제 후 AWS CodePipeline 에서 다시 배포(Release chagne)를 사용해보세요.
비어있는 상태에서 필요한 파일들이 Deploy 되어 채워지기 때문에 working copy clean 상태가 됩니다.

 

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*