BLOG

여러 AWS 계정에 대한 AWS CodeCommit과 함께 Git 사용하기
작성일: 2019년 3월 14일

AWS CodeCommit을 사용하여 모든 개인 Git 저장소를 호스팅합니다. 제 리포지토리는 개인 프로젝트, 회사 내부 프로젝트, 고객 프로젝트 등 다양한 목적을 위해 여러 AWS 계정으로 분할됩니다.

 

CodeCommit 문서에서는 한 위치에서 리포지토리를 구성하고 복제하는 방법을 보여 주지만 이 글에서는 여러 AWS 계정에서 Git 구성을 관리하는 방법을 공유하고자 합니다.

 

배경

 

먼저 각 AWS 환경에 대해 프로필을 구성합니다. IAM 사용자 자격 증명을 사용하여 일부에 연결하고 교차 계정 역할을 사용하여 다른 일부에 연결합니다.

의도적으로 기본 프로필과 관련된 자격 증명을 가지고 있지 않습니다. 그러면 AWS CLI 명령을 실행하기 전에 항상 프로필을 선택했는지 확인해야 합니다.

다음은 제 ~/.aws/config 파일의 익명 카피입니다.

 

[profile personal]

region = eu-west-1

aws_access_key_id = ABCDEFGHIJKLMNOPQRST

aws_secret_access_key = uvwxyz0123456789abcdefghijklmnopqrstuvwx

 

[profile work]

region = us-east-1

aws_access_key_id = ABCDEFGHIJKLMNOPQRST

aws_secret_access_key = uvwxyz0123456789abcdefghijklmnopqrstuvwx

 

[profile customer]

region = eu-west-2

source_profile = work

role_arn = arn:aws:iam::123456789012:role/CrossAccountPowerUser

 

이러한 계정 중 하나에서 작업을 수행하는 경우 export AWS_PROFILE=work를 실행하고 AWS CLI를 정상적으로 사용합니다.

 

문제

 

Git 자격 증명 헬퍼를 사용하여 Git 클라이언트가 CodeCommit과 원활하게 작동하도록 합니다. 그러나 다른 리포지토리에 서로 다른 프로필을 사용하기 때문에 사용 사례가 평균보다 약간 더 복잡합니다.

 

일반적으로 인증 정보 도우미를 사용하려면 다음과 같은 옵션을 ~/.gitconfig 파일에 배치하기만 하면 됩니다.

 

[credential]    helper = !aws codecommit credential-helper $@

    UserHttpPath = true

 

리포지토리에서 Git를 사용하기 전에 AWS_PROFILE에 대한 적절한 값을 설정하여 계정 간에 이 작업을 수행할 수 있지만 조건부를 포함한 Git 버전 2.13에 릴리스된 기능을  사용하여 이 상황을 처리하는 훨씬 더 나은 방법이 있습니다.

 

해결책

 

먼저, 저는 제 작업을 다른 폴더로 나눕니다. ~/code/ 디렉토리는 다음과 같습니다.

 

code

    personal

        repo1

        repo2

    work

        repo3

        repo4

    customer

        repo5

        repo6

 

이 레이아웃을 사용하면 코드 폴더 바로 아래에 있는 각 폴더는 CodeCommit과 함께 사용하기 위한 구성 측면에서 서로 다른 요구 사항을 가집니다.

 

이 문제를 해결하려면 두 가지 부분이 있습니다. 먼저 세 개의 폴더 위치에 각각 .gitconfig 파일을 만듭니다. .gitconfig 파일에는 해당 폴더에서 프로젝트를 수행하는 동안 사용할 사용자 지정(특히 자격 증명 도우미 구성)이 포함되어 있습니다.

 

예:

[user]
# Use a custom email address
email = sengledo@amazon.co.uk

[credential]
# Note the use of the –profile switch
helper = !aws –profile work codecommit credential-helper $@
UseHttpPath = true

 

또한 .gitconfig 파일에서 사용할 AWS CLI 프로필을 지정해야 합니다. 즉, 폴더에서 작업할 때 git push 등을 실행하기 전에AWS_PROFILE을 설정할 필요가 없습니다.

 

두 번째로 이러한 폴더 수준 .gitconfig 파일을 사용하려면 ~/.gitconfig의 글로벌 Git 구성에서 해당 파일을 참조해야 합니다.

 

이 작업은 includeIf 섹션을 통해 수행됩니다. 예:

 

[includeIf “gitdir:~/code/personal/”]

path = ~/code/personal/.gitconfig

 

이 예에서는 ~/code/personal/“, 에 있는 Git 리포지토리와 함께 작업하는 경우 Git에서 ~/code/personal/.gitconfig에서 추가 구성을 로드해야 한다고 지정합니다. 이 추가 파일은 앞서 자세히 설명한 것처럼 선택한 해당 AWS CLI 프로필을 사용하여 적절한 자격 증명 도우미 호출을 지정합니다.

 

새 파일의 내용은 includeIf 섹션의 위치에 있는 기본 .gitconfig 파일에 삽입된 것처럼 처리됩니다. 즉, 포함된 구성이 이전 구성에 지정된 구성만 재정의합니다.

 

원문 URL : https://aws.amazon.com/ko/blogs/devops/using-git-with-aws-codecommit-across-multiple-aws-accounts/

** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.