AWS CodeCommit으로 AWS에서 Git 리포지토리를 관리해 보기
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 AWS CodeCommit으로 AWS에서 Git 리포지토리를 관리해 보는 과정을 정리해 봤습니다.
AWS CodeCommit이란?
AWS CodeCommit는 클라우드에서 자산 (예: 문서, 소스 코드, 바이너리 파일) 을 비공개로 저장하여 관리하는 데 사용할 수 있도록 Amazon Web Services Services에서 호스팅되는 버전 관리 서비스입니다.
공식문서에 따르면 다음과 같습니다.
프라이빗 Git 리포지토리를 호스팅하는 안전하고 확장 가능한 소스 관리형 서비스이며, Git의 표준 기능을 지원하므로 기존 Git 기반 도구와도 원활하게 연동됩니다.
CodeCommit 사용해 보기
먼저 CodeCommit을 사용하는 흐름은 다음과 같습니다.
- IAM User 생성
- CodeCommit 리포지토리 생성
- 리포지토리에 Push
IAM User 생성
IAM 콘솔 화면으로 들어온 다음
- 「사용자」를 클릭합니다.
- 「사용자 추가」를 클릭합니다.
「사용자 이름」에 사용 할 IAM User 이름을 적습니다.
액세스 유형 선택의 경우 CLI, 콘솔로 접근하는 방법이 있습니다만, 필요에 따라 체크를 합니다.
「기본 정책 직접 연결」을 선택하고「AWSCodeCommitPowerUser」정책을 선택합니다.
AWSCodeCommitPowerUser의 경우 Push, Pull 이외의 여러 권한을 가지고 있기 때문에, 권한 범위를 줄이고 싶다면 별도로 정책을 생성할 필요가 있습니다.
별도의 정책 생성에 관해서는 아래 블로그를 참고해 주세요.
아이디와, 비밀번호를 취득하기 위해「.csv 다운로드」를 클릭합니다.
이제 생성한 IAM User로 들어와서「보안 자격 증명」을 클릭합니다.
로컬 시스템에서 Push와 같은 기능을 사용하기 위해서는 HTTPS 또는 SSH 접속을 위한 자격 증명이 필요합니다. 현재 블로그는 HTTPS 자격 증명을 사용합니다.
「자격 증명 다운로드」를 클릭합니다.
CodeCommit 리포지토리 생성
이제 리포지토리를 생성하기 위해 CodeCommit 콘솔화면에서「리포지토리」->「리포지토리 생성」을 클릭합니다.
「리포지토리 이름」에 tset-repo를 입력하고 리포지토리 생성을 끝마칩니다.
리포지토리에 Push
IAM User를 생성하고 자격 증명을 가져와야 한다는 것 외에는 일반적으로 Git을 사용하는 방법과 동일합니다.
mkdir test-CodeCommit cd test-CodeCommit git init git remote add origin [CodeCommit URL]
테스트를 위해서 로컬 환경에서「test-CodeCommit」라는 폴더를 생성합니다.
그리고 해당 폴더로 이동한 다음, git init 명령어를 통해 초기화를 하고, 로컬 환경과 CodeCommit 리포지토리를 연결합니다.
[CodeCommit URL]은 리포지토리에서「URL 복제」에서 확인 가능합니다.
페더레이션된 액세스 또는 임시 자격 증명을 사용하여 로그인했습니다. 이런 로그인 유형에 대해 유일하게 지원되는 연결 방법은 아래 설명된 것처럼 AWS CLI에 포함된 자격 증명 관리자를 사용하는 것입니다. HTTPS를 통해 SSH 또는 Git 자격 증명을 사용하여 연결을 구성하려면 IAM 사용자로 로그인하십시오.
참고로 임시 자격 증명을 사용하여 로그인 하거나, 롤 체인지로 로그인을 했을 경우 다음과 같은 경고 메시지가 발생합니다. 해당 사용자로 HTTPS 자격 증명을 생성하고 Push를 실행할 경우 에러가 발생하기 때문에 방금 전 생성한 IAM User의 자격 증명으로 Push를 실시해야합니다.
vi test.txt git add . git commit -m "first commit" git push -u origin master
그 다음 push 과정까지는 git과 동일합니다.
push를 하면 username, password를 요구합니다.
username, password는 조금 전 IAM User에서 다운로드 받은 HTTPS 자격 증명을 입력하면 정상적으로 push가 됩니다.
리포지토리에 들어가서 확인해 보면 정상적으로 push된 것을 확인할 수 있습니다.
본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 [email protected]로 보내주시면 감사하겠습니다.