ㅍㅍㅋㄷ

AWS CodeCommit 어렵지 않아요 본문

IT/AWS

AWS CodeCommit 어렵지 않아요

물과같이 2016.05.13 13:34

AWS CodeCommit





  AWS에서 출시한 서비스 중 하나이며, 개발자를 위한 코드 관리 서비스이다. 간단히 이야기 하면, Private git repository 서비스이다. 동작 방식은 git과 동일하다. 

특별할 건 없다. 따로 git 서버를 구축하고 관리할 수고를 AWS 에게 맡기는 것 뿐이다.


  codecommit은 사용자가 올린 소스를 s3에 암호화 해서 저장하기 때문에 안정성이 매우 높고 용량 걱정도 필요 없다. 또한 s3에 저장할때도 AWS의 KMS를 통해 암호화해서 저장하며, AWS의 IAM 인증을 통해 push/pull 에 대한 권한 관리가 가능하다. 

 

 가격 정책도 매우 좋은편.

 IAM에서 codecommit을 이용하는 user를 기준으로 5명 이하는 무료. 5명 이상일 경우 추가 1명당 매달 1 USD 만 내면 된다. user 당 10GB 용량과 git 요청 2,000 회까지 가능하다. (해당 쿼터가 넘어가면 추가 요금) 

 참고로 github 의 private repository는 월 7달러 정도.


 단점으로는 아직 codecommit 을 지원하는 region이 US EAST(Virginia) 밖에 없다는 점이다. 느리지만, 못쓰겠다 정돈 아니다. 

 

 아직 나온지 얼마 안되서 그런지 같은 카테고리에 있는 CodeDeploy와 연동이 되지 않는다. -_-.. (얼른해줘)





Codecommit을 사용하기 위한 User 생성



먼저 codecommit 을 사용하기 위해서는 IAM 에서 codecommit용 user를 생성해야한다. 

user를 생성 후 codecommit을 위한 권한을 부여한다. 


 

 1. security Credential 메뉴로 go. 

    



 2. 사이드 메뉴 Users -> create user 뙇.     



3. git_user 라는 이름으로 생성 후, access key와 secret key를 어딘가에 잘 복사해놓자. 




4. git_user 가 생긴걸 볼 수 있다. ㅎ git_user를 클릭해서 codecommit을 할 수 있는 권한을 설정해 보자. 



 

5. permission 탭 선택후, attach policy 뙇.




6. filter 에 codecommit 으로 검색 후 "AWSCodeCommitFullAccess" 선택!






git repository 생성



현재 codecommit은 us-east-1 리젼에서만 서비스 된다. 

us-east-1 으로 이동 후 code commit 을 시작한다. 


1.  Management console 에서 codecommit 으로.


   


 2. create new repository 뙇.

 

    repository 명과 description을 작성해 준다. 




  생성하면 Dashboard 에서 생성된 repository를 볼 수 있다. 

  






소스 Pull/Push 를 위한 인증 설정 



 codecommit을 통해 소스를 pull/push 할 서버에도 설정이 필요하다. 

위에서 생성한 user git_user 의 access key와 secret key를 이용해 인증을 받아야만 가능하다. 




* Ubuntu를 기준으로 설명한다. 



1. 먼저 aws cli를 설치한다. 

   

   apt-get install 로 awscli 가 설치 가능하지만, 버전이 낮아 codecommit 관련 명령어는 사용이 안된다. 

   ( codecommit 을 이용하려면 aws cli 버전 1.7.38 이상이어야 된다. )


   하지만 pip를 통해 설치 하면 됨ㅋ


   그러하므로 pip 를 먼저 설치하자. 


  root@~~# apt-get install python-pip


  pip를 통해 awscli 설치.


root@~~# pip install awscli

....(중략)


root@~~# aws --version

aws-cli/1.10.28 Python/2.7.6 Linux/3.13.0-74-generic botocore/1.4.19


 버전 1.10.28이 된거 보니 사용가능하겠다. 

 (aws codecommit help 라고 쳤을때 man 페이지가 뜨면 사용 가능)



2. aws cli 설정


  cli가 동작하기 위해서는 먼저 인증 정보를 설정해야한다. 위에서 만든 git_user의 access key와 secret key를 설정한다. 


 root@~~# aws configure

AWS Access Key ID [None]: YOURACCESSKEY

AWS Secret Access Key [None]: YOURSECRETKEY

Default region name [None]: us-east-1

Default output format [None]: json



3. git 설치 


codecommit 의 git repository 에 접근하려면 동일하게 git을 이용한다. 


root@~~# apt-get install git



4. git HTTPS 통신을 위한 credential 설정


codecommit은 HTTPS와 SSH 방식의 통신을 지원한다. 

여기서는 HTTPS 방식으로 설정해보겠다. HTTPS 통신을 하려면 credential 설정을 해야 한다. 


root@~~# git config --global credential.helper '!aws codecommit credential-helper $@'

root@~~# git config --global credential.Usehttppath true







git clone!



이제 소스를 repository에 올린 후 git clone 해보자. 

repository URL 주소는 repository 클릭 후 clone URL 버튼을 누르면 확인 가능하다. 




root@~~# git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/MYREPO

Cloning into 'MYREPO'...

remote: Counting objects: 428, done.

remote: g objects:  57% (244/428)   

Receiving objects: 100% (428/428), 99.10 KiB | 0 bytes/s, done.

Resolving deltas: 100% (291/291), done.

Checking connectivity... done.



* git clone 이 제대로 동작 안할 수 있다. (필자는 그랬다 ㅠ)


git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/MYREPO

Cloning into 'MYREPO'...

fatal: unable to access 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/MYREOI/': gnutls_handshake() failed: Illegal parameter


 위와 같이 gnutls_handshake() 에러가 난다면, git을 다시 compile 해서 설치하길 권한다. 

 방법은 아래 링크로

  : git gnutls_handshake() 에러 발생시 해결 방법


* 기존에 사용하던 git 서버에서 codecommit 으로 마이그레이션 하고 싶다면 아래 링크로

  :  Github 에서 AWS CodeCommit 으로 마이그레이션 - 어렵지 않아요



[참고]


 






 


3 Comments
  • 프로필사진 zeeeeen 2016.05.23 17:25 신고 안녕하세요. 궁금한 점이 있어서 댓글 남깁니다.
    혹시 git clone 을 할 경우에
    fatal: unable to access 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/MyDemoRepo/': The requested URL returned error: 403
    에러가 난 적은 없으세요? git push를 해도 저 에러가 똑같이 나네요... 혹시 해결 방법 아시나요..?
  • 프로필사진 물과같이 2016.05.23 17:47 신고 안녕하세요- 저 같은 경우는 위에 언급한 gnutls_handshake fail 에러가 나서 고생했던 기억이 있습니다. 403 에러같으면 IAM쪽 권한 설정일 가능성이 높을것 같습니다. IAM permission 확인 한번 해보시고 aws cli access key설정과 git credential 설정 한번 더 확인해 보시면 좋을것 같습니다.
  • 프로필사진 물과같이 2016.05.23 18:00 신고 참고가 될지 모르겠지만 aws docs 의 codecommit troubleshooting URL을 공유해 드립니다.
    http://docs.aws.amazon.com/codecommit/latest/userguide/troubleshooting.html
댓글쓰기 폼