AWS CodeCommit으로 소스코드 관리하기(Git & SSH)
이번 글에서는 AWS CodeCommit과 Git을 활용하여 소스코드를 관리하는 방법에 대해서 알아볼 것이다.
이 글의 순서는 다음과 같다.
- AWS CodeCommit이란?
- 실습 전 준비사항
- IAM 계정 및 그룹 생성
- AWS와 로컬 PC간 SSH 연결
- AWS CodeCommit 저장소 생성 및 소스 업로드
1. AWS CodeCommit이란?
프로젝트 진행 시 Git Respository를 활용하여 소스코드를 관리한다. 오픈소스 프로젝트인 경우는 Github나 Gitlab 등을 많이 사용하며 실제 대형 프로젝트에서는 Atlassian의 Bitbucket을 주로 사용한다.
이와 동일한 기능을 가진 저장소를 AWS에서도 제공하는데 이를 AWS CodeCommit이라 한다.
AWS CodeCommit의 특징으로는 Github와는 다르게 저장소가 암호화되기 때문에 보안적인 측면에서 우수하다.
또한 AWS CodeCommit은 정해진 조건 내에서는 무료 서비스를 제공한다. CodeCommit을 활용하는 월 활성 접속계정(한달 내에 CodeCommit에 접속한 사용자 수)이 5개 이하이고, 계정 당 요청 수가 2000개 이하인 경우는 무료로 서비스 이용이 가능하다. 월 활성 접속계정이 6개 이상이 되면 계정 당 한달에 1.0 USD를 지불해야 한다.
2. 실습 전 준비사항
로컬 PC에 Git-bash가 설치되어 있어야 한다.
3. IAM 그룹 및 계정 생성
CodeCommit을 사용하기 위해서는 CodeCommit 권한을 가진 IAM 계정이 필요하다(루트 계정으로 HTTPS통한 접속은 보안상 위험하다고 하니 지양하자).
IAM 그룹 및 계정을 생성해보자.
AWS 홈페이지에서 [콘솔에 로그인] -> [IAM] -> [그룹] -> [새로운 그룹 생성]을 선택한다.
[그룹 이름]을 임의로 작성하고 [정책 연결]에 CodeCommit 관련 정책 중 [AWSCodeCommitFullAccess] 를 선택한 후 그룹을 생성한다.
다음으로 CodeCommit을 사용할 IAM 사용자(계정)를 생성한다. [사용자 추가] 버튼을 클릭한다.
[사용자 이름]을 임의로 입력하고 [엑세스 유형]은 두 개 체크박스 모두 선택한다. [콘솔 비밀번호]도 [사용자 지정 비밀 번호]를 선택하고 비밀번호를 임의로 입력한다(비밀번호는 잘 기억해두자).
[사용자 추가] 화면에서 [그룹에 사용자 추가]를 선택하고 이전에 생성한 그룹(AWSCodeCommitFullAccess 권한이 있는 그룹)에 사용자를 추가한다.
사용자 추가가 성공하면 [엑세스 키 ID]와 [비밀 엑세스 키]가 생성된다. 해당 키 값을 기억해두도록 하자.
4. AWS와 로컬 PC간 SSH 연결
IAM 계정을 생성했으니 이제 AWS와 로컬PC를 SSH로 연결해보도록 하자.
AWS는 기본적으로 SSH를 통해서 연결할 때 아이디/패스워드를 받지 않고 암호화 키 파일을 통해 로그인한다. 그러므로 로컬PC에서 RSA 개인키/공개키 쌍을 만든 후 공개키를 AWS에 등록하는 방식으로 로그인 할 것이다.
우선 로컬PC에서 git-bash를 실행해보자.
실행 후 /user/사용자명/.ssh 디렉토리로 이동해보자.
# cd ~/.ssh
다음에 ssh-keygen을 활용하여 CodeCommit 사용권한을 가진 계정과 연결할 RSA키페어(개인키/공개키)를 생성한다.
# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/08314/.ssh/id_rsa): codecommit.pem <=[RSA 키페어 파일명]
Enter passphrase (empty for no passphrase):[RSA 키페어 비밀번호(임의로 입력)]
Enter same passphrase again:[RSA 키페어 비밀번호(임의로 입력)]
Your identification has been saved in codecommit.pem.
Your public key has been saved in codecommit.pem.pub.
The key fingerprint is:
SHA256:IqxH1BOEQhL0Azwrs2zG6PwrEDaFp2iPpikFohQOCsQ 08314@SKCC18N00167
The key's randomart image is:
+---[RSA 3072]----+
|B*o oo |
|oE+o.. . |
|* B+. o |
|OO o. . |
|@=+ + . S |
|=B.+ . . |
|Oo. . |
|++ . |
|. oo. |
+----[SHA256]-----+
그러면 위에서 입력한 파일명(이 글에서는 codecommit.pem)으로 비밀키가 생기고, 파일명.pub(이 글에서는 codecommit.pem.pub)으로 공개키가 생긴다. AWS에 등록할 공개키 확인 후 복사한다.
# cat codecommit.pem.pub
ssh-rsa BBBBBBBBBBBBBBBBBBBBBBBB/xA4jrMvQhx7oYsqmP1LK2nLudb7LnFH4b/pNcMIbbDchG7do4oBJ0xqc4yuvYVb80rxzhRU95bBC5xEkWog2lUwi4JuUGMaLUN6MMsOBc+xligfQznr7pY18qGjSUWXsY/etj+HeU1ud5nlYdLvdhaWhCb3ElQA6o4GY7Eo0ju0X0E24t5hZfNGqCzxJkSTPhk49xG9LNE4X6y7+W8yO2o5WQFr6vtZHVnlC6SpvqbswkcuLKLNDWJlvilkeXbOGTa4S0lPuAtTJC/lK6QQBeHQCtdAza6SsoTINvmOfQFhsGoLXRpqmFLbtAxNOrB0ZbJdGC06OQ1YiXKWT8lPwtYioGj+XrfeEiOzxLr771yvNN8nQCP3fxiPF89iQBGe5PZdh3r59MdgTK0FFHzD8szAQBu+d1fGBsfrno7b1C98vMtRcdRvaOtYGXDPWRCHWohA0Yd02MvTvhP3xq/cB/NpxD21znkSZarLu4Sp/rDDTcwc6ryhYlfLNc+iwk= 08314@SKCC18N00167
다시 AWS 홈페이지에서 [콘솔로 로그인] -> [IAM] -> [사용자]를 선택한 후 CodeCommit 권한이 존재하는 사용자를 클릭한다.
[보안자격증명]을 선택한 후 [SSH 퍼블릭 키 업로드]를 클릭한다.
그리고 조금 전 복사한 RSA 공개키를 붙여넣는다.
그러면 SSH 퍼블릭 키가 정상적으로 등록된다. 등록된 [SSH 키 ID]를 복사하자(다음에 로컬PC에서 SSH 접속 호스트 config 설정 시 사용할 것이다).
다음으로 로컬PC에서 SSH 접속 호스트 config 설정을 해보도록 하자. 우선 ~/.ssh 디렉토리로 이동한 후 config 파일에 아래 코드를 삽입하자. config 파일이 없으면 신규로 생성하면 된다.
파일명 : config
Host git-codecommit.*.amazonaws.com
User [위에서 복사한 SSH 키 ID]
IdentityFile ~/.ssh/[위에서 생성한 개인키 pem 파일 이름(이 글에선 codecommit.pem)]
AWS로 SSH 접속 테스트를 해보자. 아래 명령어를 입력 한 후 RSA 키페어 생성 시 생성했던 비밀번호를 입력하면 된다.
아래와 같이 메시지가 나오면 성공이다.
# ssh git-codecommit.ap-northeast-2.amazonaws.com
5. AWS CodeCommit 저장소 생성 및 소스 업로드
AWS와 로컬PC와의 SSH 연결이 완료되었으므로 이제 CodeCommit 저장소를 생성해보자.
AWS 홈페이지에서 [콘솔에 로그인] -> [CodeCommit] -> [리포지토리] -> [리포지토리 생성]을 선택한다.
[리포지토리 이름]을 작성한 후 생성한다.
[리포지토리] 목록에서 SSH버튼을 클릭해서 SSH 주소를 복사한다.
로컬PC로 와서 git-bash를 실행시킨 후 아래 명령어를 입력하여 AWS CodeCommit과 로컬PC를 연결시킨다.
# git clone [복사한 CodeCommit SSH URL]
Cloning into 'gajoa-test-repository'...
Enter passphrase for key '/c/Users/08314/.ssh/codecommit.pem':[조금 전 생성한 RSA 키페어 비밀번호]
warning: You appear to have cloned an empty repository.
그러면 해당 디렉토리에 AWS CodeCommit 저장소와 연결된 디렉토리가 생성된다.
해당 디렉토리로 이동한 후 파일 한개를 생성한 후 아래 명령어를 수행하여 파일을 AWS CodeCommit으로 업로드해보자.
# git add .
# git commit -m "[주석]"
# git push origin master
명령어가 정상적으로 수행되면 AWS CodeCommit 저장소에 파일이 업로드 된 것을 확인할 수 있다. 성공!!
참고
https://gracefullight.dev/2017/08/18/AWS-CodeCommit-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/