AWS

[AWS] CodeCommit이란

박만자 2021. 11. 16. 19:32

CodeCommit

AWS CodeCommit은 안전한 GIt 기반의 레포지토리를 클라우드 기반으로 제공하는 완전 관리형 소스 제어 서비스입니다. 일반적으로 어플리케이션 개발을 진행하면서 개발된 소스를 저장하고 제어할 수 있는 기능을 제공합니다. CodeCommit은 관리형 클라우드 서비스이므로 소스코드를 저장하기 위한 레포지토리를 생성만 하면 되며, 프로비저닝 및 확장할 하드웨어나 설치, 구성, 운영할 소프트웨어가 없습니다. 또한 AWS CodeCommit의 가져오기 요청, 분기 및 병합 기능을 활용하여 보다 효율적으로 소스코드를 관리할 수 있습니다.

 

AWS CodeCommit은 HTTPS, SSH를 활용하여, 파일을 송수신할 수 있으며, 소스 저장에 사용되는 레포지토리는 Key Management Service(KMS) 를 통해 저장 중 자동으로 데이터를 암호화합니다. AWS IAM과 CloudTrail, CloudWatch와 연동을 통해 누가 데이터에 엑세스할 수 있는지, 엑세스 방법, 시기 및 위치까지 제어하고 모니터링 할 수 있어서 데이터에 대한 보안과 접근을 제어할 수 있습니다.

 

AWS CLoudCommit은 AWS 계정이 있다면 누구나 손쉽게 시작할 수 있으며, 매달 프리티어를 통해 최대 5개의 계정까지 무료로 사용할 수 있습니다. 이후 추가되는 계정에 대해선 1명당 1달러의 비용을 지불하면 무제한으로 저장 가능한 레포지토리를 통해 소스코드 관리 서비스를 사용할 수 있습니다.

 

CodeCommit 장점

  • 관리형 서비스 - 하드웨어, 소프트웨어 관리 부담 없이 하드웨어 프로비저닝 및 확장하고 서버 소프트웨어 설치, 구성, 업데이트 필요없음
  • 높은 보안 - CodeCommit 레포지토리는 유휴 상태에서도 데이터를 암호화하며, IAM과 통합되어 레포지토리에 사용자별 권한 할당 가능
  • 공동 작업 - 브런치 병합 전 코드 변경 사항 검토 및 설명 추가 가능, 입력돈 설명 내용을 이메일로 전송하는 알림 기능 사용 가능
  • 손쉬운 확장 - 저장 가능한 레포지토리의 크기 및 파일 형식 제한 없음, 대용량 파일 또는 브런치 및 장기간의 변경 사항을 포함하여 처리 가능
  • 타서비스 통합 - 타 AWS 서비스와 다른 레포지토리와 함께 사용 가능
  • 손쉬운 이전 - 타 Git 기반 레포지토리에서 CodeCommit으로 마이그레이션 가능

AWS CodeCommit 은 S3 및 DynamoDB에 데이터를 저장하여 레포지토리의 고가용성, 확장성 및 내구성을 제공합니다


그럼 몇 가지 실습을 통해 CodeCommit을 어떻게 사용하는지에 대해 알아보도록 하겠습니다.

 

CodeCommit을 위한 IAM User 생성

일단 AWS Console에 접속 후 IAM -> 사용자 -> 사용자 추가 버튼을 클릭합니다.

 

그 다음 사용자 이름을 입력한후 자격 증명 유형을 액세스 키 방식을 선택한후 다음으로 넘어가 줍니다.

 

그 다음 기존 정책 직접 연결에 들어간 후 "AWSCodeCommitFullAccess" 를 선택하고 다음으로 넘어가 줍니다.

 

태그 추가는 건너뛰신 후 사용자 추가로 넘어가 사용자 만들기 버튼을 클릭해 줍니다.

 

그 다음 .csv 다운로드 버튼을 클릭하여 준 후 닫기 버튼을 클릭해 줍니다. .csv 파일은 나중에 터미널에서 CodeCommit에 접근할 때 필요하니 잘 보관하셔야 합니다.

 

 

 

CodeCommit을 활용한 Code 버전 관리

AWS Console로 접속 후 CodeCommit -> 레포지토리 생성 버튼을 클릭해 줍니다.

 

레포지토리 이름을 지어준 후 생성 버튼을 클릭합니다.

 

그 다음 CodeCommit 작업을 위한 Tool을 선택해 주셔야 하는데 저는 JetBrain사의 WebStorm을 사용하도록 하겠습니다. 작업을 위해서는 AWS CLI와 Git이 설치되어있어야 합니다. 설치 여부는 아래의 명령어를 통해 확인하실 수 있습니다.

$ aws --version
$ git --version

 

그 다음 AWS 자격 증명 파일을 설정해 줘야 합니다.

$ aws configure
AWS Access Key ID [None]: <본인 Access Key ID>
AWS Secret Access Key [None]: <본인 Secret Access Key>
Default region name [None]: <본인 리전 정보>
Default output format [None]:

 

그 다음 Git으로 AWS 자격 증명 프로필로 자격 증명 헬퍼 사용을 지정하고 자격 증명 헬퍼가 경로를 레포지토리로 전송할 수 있도록 합니다.

$ git config --global credential.helper '!aws codecommit credential-helper $@'
$ git config --global credential.UseHttpPath true

 

그 다음 다시 AWS 콘솔 화면으로 돌아와 아까 만든 레포지토리에서 URL 복제 -> HTTPS 복제 버튼을 클릭해 줍니다.

 

그 다음 git clone 명령어로 CodeCommit의 레포지토리를 clone 합니다.

$ git clone https://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/MyRepo

 

이때 저처럼 Git Credential Manager 가 뜨시는 분들은 아까 다운 받았던 .csv 파일로 들어가 UserName과 Password를 복붙해 주시면 됩니다.

 

그 다음 clone한 폴더 안에 index.html 파일 하나를 만들어 줍니다. 내용은 상관 없습니다. 저는 본문에 Hello World를 출력하는 html 파일을 만들어 주도록 하겠습니다.

 

그 다음 해당 폴더로 들어가 index.html 파일을 git add, status를 통해 상태 정보가 'New file'임을 확인 합니다.

$ cd MyRepo
$ git add .
$ git status

 

그 다음 git commit 명령어로 변경된 사항을 Repo로 commit하고, 전체 내용을 CodeCommit으로 push 합니다.

$ git commit -m "Uploading New File to CodeCommit"
$ git push

 

그 다음 AWS 콘솔 화면으로 돌아가 레포지토리에 커밋으로 들어가보시면 커밋 내역이 찍혀있는 것을 보실 수 있습니다.

 

코드에 들어가보셔도 아까 만든 index.html 파일이 레포지토리에 잘 등록된것을 보실 수 있습니다.

 

Github 소스를 CodeCommit으로 Migration하는 법

임시로 소스를 다운로드 할 폴더를 생성하기 위해 git-migration 이라는 폴더를 생성해주고, git clone --mirror 명령어를 수행하여 소스를 git-migration 폴더로 동기화 해줍니다.

$ mkdir git-migration
$ git clone --mirror https://github.com/awsdocs/aws-codecommit-user-guide.git git-migration

 

그 다음 동기화된 폴더로 이동하여 git push를 수행하면서 저장할 레포지토리를 이전에 CodeCommit에 생성한 레포지토리 URL로 원격 push를 수행합니다.

$ cd git-migration
$ git push https://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/MyRepo

 

그 다음 확인을 위해 AWS 콘솔 화면으로 돌아가 레포지토리의 브랜치로 들어가서 마이그래이션된 브랜치를 선택하면 잘 된것을 보실 수 있습니다.