서버/AWS (Amazon Web Services)

여러 회사 AWS CodeCommit 계정을 하나의 맥에서 사용하기

날개 2019. 2. 9. 01:46

테스트 환경


OS: MacOS X Mohave

Git 원격 저장소 : AWS CodeCommit

접속 방법 : SSH



개발하는 PC 한대에서 여러 업체 또는 개인 프로젝트를 하는 경우가 많습니다.


그러다보면, Git 원격 저장소도 여러 곳이 되는 경우가 생기는데요, 원격 저장소 주소가 모두 다르다면 큰 문제가 없겠지만, 여러 필드가 한곳의 원격 저장소 서비스를 사용할 수도 있습니다.


저의 경우는 AWS CodeCommit 을 사용하여 Git 리포지토리를 보관하는데, 문제는 여러 도메인이 AWS CodeCommit을 사용합니다. 즉, 현재 상황만 해도 제 사업장의 개인 프로젝트, 협업 프로젝트, 외부 프로젝트 3곳이 모두 AWS CodeCommit을 사용해야 하는 상황입니다.


AWS CodeCommit의 공식 문서에서 설명하는 방법으로는 하나의 CodeCommit 도메인으로 밖에 접속이 되지 않습니다. (이 블로그에는 AWS CodeCommit에 접속하는 기본 방법이 설명 되어 있습니다. [바로가기] )



맥의 사용자의 경우 SSH의 config 수정으로 여러 필드에 대응할 수 있는 트릭이 있습니다. (따라서 HTTPS 접속 방식은 이 방법을 사용할 수 없습니다.)


그럼 어떻게 하는지 잠시 살펴보겠습니다.




[1] SSH config 수정


맥에서 터미널을 실행하고 ~/.ssh 로 이동합니다.


> cd ~/.ssh


.shh 폴더에 있는 config 파일을 열어 편집을 준비 합니다. (정상적으로 CodeCommit을 SSH 로 연결하여 사용하고 있다면 이미 config 파일이 존재 할 것입니다.)


> open config


아마도 AWS 의 공식 도큐먼트에 따라 CodeCommit을 위한 설정을 하였다면 config 에 해당되는 내용은 아래와 같을 것입니다.






이제 위 config 파일을 아래와 같은 방법으로 수정해 봅니다.

(여기에서는 Company A 와 Company B 두개의 필드가 있다고 가정합니다.)


# AWS CodeCommit for Company A

Host codecommit-company-a

HostName git-codecommit.ap-northeast-2.amazonaws.com                           <- 실제 AWS CodeCommit 의 주소 공통 부분

User <Company A의 AWS CodeCommit을 위한 계정의 SSH 키 ID>

IdentityFile ~/.ssh/<Company A를 위한 개인키 (pem) 파일이름>


# AWS CodeCommit for Company B

Host codecommit-company-b

HostName git-codecommit.ap-northeast-2.amazonaws.com                            <- 실제 AWS CodeCommit 의 주소 공통 부분

User <Company B의 AWS CodeCommit을 위한 계정의 SSH 키 ID>

IdentityFile ~/.ssh/<Company B를 위한 개인키 (pem) 파일이름>




위 내용 요소는 아래와 같이 개인에 맞게 바꾸어야 합니다.


Host : git 의 remote 주소를 적을때 대체하게 될 임의의 이름입니다.

HostName : 실제 AWS CodeCommit의 리포지토리 주소의 공통되는 부분입니다. 

예를들어 리포지토리 주소가 ssh://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/mi.testPrj.android 이라면, 뒤에는 리포지토리 이름이기 때문에 리포지토리에 따라 바뀔 것이고, git-codecommit.ap-northeast-2.amazonaws.com 부분은 바뀌지 않겠죠. 이 바뀌지 않을 부분을 입력합니다. (임의로 자른 것입니다.)

User : 해당 계정의 SSH 키 ID 입니다. 

(참고로 CodeCommit을 위한 계정의 SSH 키 ID 는 AWS IAM 에서 확인할 수 있습니다. [링크]의 내용을 참고해 볼 수 있습니다.)

IdentityFile : CodeCommit에 접속하기 위해 사용하는 개인키 파일 이름입니다.



아래 사진은 제가 실제로 사용하는 예로, 보안상 일부 모자이크 처리한 것에 대해 양해바랍니다.





이제 설정을 잘 저장하고, 할 일은 각 로컬 리포지토리의 .git 폴더내의 config 설정을 수정하는 것입니다. 





[2] 로컬 리포지토리의 Git Config 내 원격 저장소 주소 수정


조금 귀찮기는 하지만, 이제 이미 만들어진 로컬 리포지토리들의 원격 저장소 주소를 수정해야 합니다.


새로 생성한 Git 로컬 저장소라면 처음에 원격 저장소 주소를 지정할때 같은 규칙을 적용하면 되겠습니다.


Company A 와 Company B 의 로컬 저장소들이 있다고 가정 하겠습니다.


먼저 터미널을 열고 Company A의 로컬 저장소 중 하나의 루트로 이동합니다.


.git 디렉터리로 들어갑니다.


컴퍼니 A 로컬 저장소 루트> cd .git


config 파일을 엽니다.


> open config





remote 부분을 찾아서 위 [1]에서 설정한 Host 로 해당 부분을 교체해 줍니다.


(수정 전)


???? = ssh://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/



(수정 후)


???? = ssh://codecommit-company-a/v1/repos/


(???? 로 표시한 이유는 상황에 따라 "remote = ssh://....." 형식으로 되어 있기도 하고, [remote "origin"] 항목 아래 "url = ssh:// ..." 형태로 되어 있기도 하기 때문엡니다. 적절히 위와 같은 요령으로 수정하면 되겠습니다.)


저장합니다.


아래는 실제 수정의 예 입니다.


(수정전)


(수정후)


(주의: 위의 구성과 다를 수 있으므로 실제 주소가 있는 부분을 찾아서 수정 해야 함)




이와 같은 방법으로 Company A 의 모든 로컬 저장소들과, Company B 의 모든 로컬 저장소들의 Git Config 파일들의 원격지 주소를 수정해 줍니다.


이제 각 로컬 저장소에서 커밋 후 푸쉬를 해 보면 각각 해당되는 필드의 AWS CodeCommit 계정에 푸쉬가 되는 것을 확인 할 수 있습니다.



(푸쉬가 잘 되는지 확인해 보았다.)




저 처럼 여러 필드의 작업을 하는 사람들에게 도움이 되었으면 좋겠습니다.





(C) 2019 WingsNote.com (무단 복제 및 게시 금지, 링크 허용)