Application Modernization/DevOps

Github대신 AWS의 CodeCommit을 사용해 보자 - SSH 인증 방식

Cloud Applicaiton Architect 2022. 4. 12. 22:54
반응형

개요

중앙 집중화된 소스 관리툴은 에전에도 많았지만 최근 몇년사이 이 부분 defacto는 git으로 통일되고 있는 듯 하다. 요즘은 이러한 git 원격 저장소 역할을 하는 무료/유료의 서비스들이 다양하게 있고 여기서는 AWS의 유료서비스인 CodeCommit에 대해 다루어 보고자 한다.

 

간단히 github(무상)과 AWS의 CodeCommit에 대해 비교해 보자

구분 GitHub(무상) AWS CodeCommit(유상)
비용 무상 서비스 월 접속 계정 5개, 계정당 요청수 2k까지 무료
그외 유료
편리성 - 상대적 유리
- AWS 서비스와 통합성이 상대적으로 약함
- 상대적 불리
- AWS Code 시리즈와 통합성 강함
보안 암호화 지원 없음 암호화 지원

사실 고객들을 만나 미팅을 하다보면 오픈소스에 대한 막연한 두려움이나 관리적 어려움을 가진 고객의 경우 유료 서비스를 원하게 되는데 AWS를 이미 사용하고 있고 오픈소스에 대한 관리적 어려움이 있다면 AWS의 CodeCommit은 대안이 될 수 있을 것 같다. 

그외 AWS의 Code 시리즈(Build, Commit, Deploy, Pipeline)나 AWS의 기타 서비스들과의 강한 통합성을 원할 경우에도 CodeCommit에 대한 도입을 검토할 수 있을 것 같다. 

 

이번 포스팅에서는 이러한 AWS의 CodeCommit에 대한 사용법에 대해 알아보도록 한다.

 

 

사용환경

macOS - Monterey 

gradle

intelliJ

 

 

적용 수순

1. IAM 사용자 생성 및 CodeCommit 사용권한 추가

2. CodeCommit Repository 생성

3. 사용자 SSH Key를 이용한 접속 

4. git 사용

 

 

IAM 사용자 생성 및 CodeCommit 사용권한 추가

CodeCommit을 사용할 수 있는 권한을 가진 사용자 생성하기

IAM > 사용자 > "사용자 추가"

 

아래의 예에서는 poc-admin으로 생성했다(일반적으로 개발자, DevOps 관리자 프리픽스를 생성해 사용하는 것 권장)

사용자 생성과 함께 생성된 엑세스 키 ID와 비밀 엑세스 키를 잘 복사해 관리하도록 한다.(.csv 파일을 다운로드 하면 해당 키 ID와 키 값이 저장되어 있다)

 

 

CodeCommit Repository 생성

AWS Console 상에서 개발자 도구 > CodeCommit > 리포지토리 > 리포지토리를 클릭해서 새로운 리포지토리를 생성하도록 한다.

(이때 생성되는 리전을 반드시 체크하자. 이 예제에선 서울 리전을 사용하고 있다.)

 

 

사용자 SSH Key  추가 

이제 원격의 PC 사용자가 CodeCommit에 접속 할 수 있도록 설정해야 한다. 

로컬 컴퓨터의 터미널을 열고 ssh-keygen 명령어를 실행하고 아래와 같이 .ssh(cd ~/.ssh ) 디렉토리에 저장하도록 한다.

 

  • Enter file in which to save the key: Key를 어디에 생성할지 지정하고 사용할 파일명을 지정한ㄷ.
    e.g.  /Users/euideok/.ssh/codecommit_rsa
  • Enter passphrase / Enter passphrase agin : 사용할 패스워드를 입력합니다./확인을 위해 재 입력한다.

정상적으로 완료되었으면 ~/.ssh 디렉토리에 아래와 같이 새로운 파일 2개가 생성된 것을 볼 수 있다.

  • codecommit_rsa 파일: 프라이빗 키 파일
  • codecommit_rsa.pub 파일: 퍼블릭 키 파일

cat ~/.ssh/codecommit_rsa.pub 를 실행해서 아래와 같은 공개키 값을 복사해둔다.

ssh-rsa EXAMPLE-AfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJB
gNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb2
5zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhc
NMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAw
DgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDAS=EXAMPLE user-name@ip-192-0-2-137

위에서 생성한 계정을 선택한다.(여기서는 poc-admin을 예로 들겠다) 

'보안 자격 증명' 탭을 찾아 들아가 아래와 같이 SSH 퍼블릭 키 업로드 버튼을 클릭해 아까 복사한 공개키 값을 등록한다.

정상적인 업로드가 완료되면 아래와 같이 상태 값이 '활성' 상태로 변경된다.

다음으로 위 이미지에서 보이는 액세스키 ID 값을 복사해 둔다.

 

로컬 PC의 사용자 계정 디렉토리 아래의 .ssh 폴더안에 config라는 이름의 파일을 하나 만들고 아래와 같이 입력한다.

Host git-codecommit.*.amazonaws.com
  User APKA************SXYYMGF
  IdentityFile ~/.ssh/codecommit_rsa

위에서 만든 config 파일의 억세스 권한을 600으로 변경한다.

chmod 600 config

 

마지막으로 아래의 명령어를 수행해 정상적인 접속이 되는지 확인한다. (이때 패스워드는 위에서 rsa파일 만들때 사용했던 패스워드 사용)

ssh git-codecommit.ap-northeast-2.amazonaws.com

참고) 본 예제에서는 ap-northeast-2 즉 서울리전에 codecommit을 생성했다. 다른 리전에 codecommit을 생성했다면 해당 리전명을 입력해야 한다.

 

HTTPS를 이용한 Credential은 아래의 링크를 참조한다.

https://sharplee7.tistory.com/138

 

 

명령어 입력 방법 예시

이렇게 생성한 git은 기존의 접속 URL을 알아보자. AWS 콘솔상에서 개발자 도구> CodeCommit > 리포지토리로 접속하면 아래와 같이 생성한 레파지토리를 볼 수 있다.

우리는 SSH를 이용해 콘솔에서 접속할 예정이기 때문에 위 캡쳐화면에서 SSH를 클릭하면 방금생성한 레파지토리의 접속 URL이 클립보드에 복사된다.

 

local git과 remote git 연결

git remote add origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

 

git clone 명령어

git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

 

git push 명령어

git push origin master

 

이번 포스팅에서는 AWS의 소스 레파지토리인 CodeCommit을 SSH를 이용해 사용하는 방법에 대해 알아 보았다.

보안적으로 아주 민감하지 않다면 다음 포스팅에서 언급할 HTTPS를 이용한 인증방식이 훨씬 사용하기 쉽다.

 

그럼 다음 포스팅에서는 SSH 방식이 아닌 HTTPS를 이용해 소스레파지토리를 사용하는 방법에 대해 알아 보도록 하겠다.

 

Github대신 AWS의 CodeCommit을 사용해 보자 - HTTPS 인증 방식

개요 이번 포스팅은 앞서 포스팅했었던 동일 제목의 포스팅과 동일한 내용이다. 다만, 레포지토리 사용을 위한 인증방식만 차이가 있다. 따라서 기본 시나리오나 내용는 이전 포스팅을 참조해

sharplee7.tistory.com

 

이번 포스팅은 여기까지~

반응형