

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 크로스 계정 리포지토리 액세스: AccountB의 리포지토리 사용자를 위한 작업
<a name="cross-account-user-b"></a>

AccountA의 리포지토리에 액세스하려면 AccountB 그룹의 사용자가 리포지토리 액세스가 가능하도록 로컬 컴퓨터를 구성해야 합니다. 다음 단원에는 절차와 예제가 나와 있습니다.

**Topics**
+ [1단계: AccountB 사용자가 AccountA의 리포지토리에 액세스하도록 AWS CLI 및 Git 구성](#cross-account-configure-credentials)
+ [2단계: AccountA의 CodeCommit 리포지토리 복제 및 액세스](#cross-account-clone-and-use)

## 1단계: AccountB 사용자가 AccountA의 리포지토리에 액세스하도록 AWS CLI 및 Git 구성
<a name="cross-account-configure-credentials"></a>

또 다른 Amazon Web Services 계정에서 리포지토리에 액세스하기 위해 SSH 키나 Git 보안 인증 정보를 사용할 수 없습니다. AccountB 사용자는 **git-remote-codecommit**(권장) 또는 보안 인증 도우미를 사용하여 AccountA의 공유 CodeCommit 리포지토리에 액세스하도록 컴퓨터를 구성해야 합니다. 그러나 AccountB에서 리포지토리에 액세스할 때 SSH 키나 Git 자격 증명을 계속 사용할 수 있습니다.

**git-remote-codecommit**를 사용하여 액세스를 구성하려면 다음 단계를 수행합니다. **git-remote-codecommit**를 아직 설치하지 않은 경우 Python 패키지 인덱스 웹사이트의 [https://pypi.org/project/git-remote-codecommit/](https://pypi.org/project/git-remote-codecommit/)에서 다운로드하세요.<a name="cross-account-configure-cli-git"></a>

**교차 계정 액세스를 위해 AWS CLI 및 Git를 구성하려면**

1. 로컬 AWS CLI 컴퓨터에를 설치합니다. [AWS CLI설치](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 단원의 운영 체제 지침을 참조하세요.

1. 로컬 컴퓨터에 Git를 설치합니다. Git를 설치하려면 [Git 다운로드](http://git-scm.com/downloads) 또는 [Windows용 Git](http://msysgit.github.io/) 같은 웹 사이트를 이용하세요.

   
**참고**  
CodeCommit은 Git 버전 1.7.9 이상을 지원합니다. Git 버전 2.28에서는 초기 커밋을 위한 브랜드 이름을 구성할 수 있습니다. 최신 버전의 Git를 사용하는 것이 좋습니다. Git은 계속 개선되며 정기적으로 업데이트되는 플랫폼입니다. 기능 변경에 따라 CodeCommit 사용 방식이 달라지는 경우가 있습니다. Git과 CodeCommit의 특정 버전에서 문제가 발생할 경우 [문제 해결](troubleshooting.md)의 내용을 검토하세요.

1. 리포지토리를 복제할 디렉터리 위치의 터미널이나 명령줄에서 **git config --local user.name** 및 **git config --local user.email** 명령을 실행하여 리포지토리에 수행할 커밋의 사용자 이름과 이메일을 설정합니다. 예제:

   ```
   git config --local user.name "Saanvi Sarkar"
   git config --local user.email saanvi_sarkar@example.com
   ```

   이 명령은 어떤 결과도 반환하지 않지만, 지정한 이메일 및 사용자 이름은 AccountA의 리포지토리에서 수행하는 커밋에 연결됩니다.

1. **aws configure --profile** 명령을 실행하여 AccountB의 리소스에 연결할 때 사용할 기본 프로필을 구성합니다. 메시지가 표시되면 IAM 사용자의 액세스 키와 비밀 키를 입력합니다.
**참고**  
를 이미 설치하고 프로파일을 AWS CLI 구성한 경우이 단계를 건너뛸 수 있습니다.

    예를 들어 다음 명령을 실행하여 미국 동부(오하이오)(us-east-2)의 AccountB에서 AWS 리소스에 액세스하는 데 사용하는 기본 AWS CLI 프로필을 생성합니다.

   ```
   aws configure
   ```

   요청 메시지가 나타나면 다음 정보를 입력합니다.

   ```
   AWS Access Key ID [None]: {{Your-IAM-User-Access-Key}}
   AWS Secret Access Key ID [None]: {{Your-IAM-User-Secret-Access-Key}}
   Default region name ID [None]: {{us-east-2}}
   Default output format [None]: json
   ```

1. **aws configure --profile** 명령을 다시 실행하여 AccountA의 리포지토리에 연결할 때 사용할 명명된 프로필을 구성합니다. 메시지가 표시되면 IAM 사용자의 액세스 키와 비밀 키를 입력합니다. 예를 들어, 다음 명령을 실행하여 {{Account Account Profile}}이라는 AWS CLI 프로필을 생성합니다. 이 프로필은 미국 동부(오하이오)(us-east-2)의 AccountA에 있는 리포지토리에 액세스하는 데 사용합니다.

   ```
   aws configure --profile {{MyCrossAccountAccessProfile}}
   ```

   요청 메시지가 나타나면 다음 정보를 입력합니다.

   ```
   AWS Access Key ID [None]: {{Your-IAM-User-Access-Key}}
   AWS Secret Access Key ID [None]: {{Your-IAM-User-Secret-Access-Key}}
   Default region name ID [None]: {{us-east-2}}
   Default output format [None]: json
   ```

1. 일반 텍스트 편집기에서 AWS CLI 구성 파일이라고도 하는 `config` 파일을 엽니다. 운영 체제에 따라 이 파일의 위치는 다를 수 있습니다. Linux, macOS, Unix의 경우 `~/.aws/config`에, Windows의 경우 {{drive}}:\\Users\\{{USERNAME}}\\.aws\\config에 위치할 수 있습니다.

1. 파일에서 AccountB의 리포지토리에 액세스하도록 구성한 기본 프로파일에 해당하는 항목을 찾습니다. 예를 들면 다음과 같아야 합니다.

   ```
   [default]
   region = us-east-2
   output = json
   ```

   `account`를 프로파일 구성에 추가합니다. AccountB의 AWS 계정 ID를 제공합니다. 예제:

   ```
   [default]
   account = {{888888888888}}
   region = us-east-2
   output = json
   ```

1. 파일에서 방금 생성한 {{MyCrossAccountAccessProfile}} 프로필에 해당되는 항목을 찾습니다. 예를 들면 다음과 같아야 합니다.

   ```
   [profile {{MyCrossAccountAccessProfile}}]
   region = us-east-2
   output = json
   ```

   `account`, `role_arn` 및 `source_profile`을 프로파일 구성에 추가합니다. AccountA의 Amazon Web Services 계정 ID, 다른 계정의 리포지토리에 액세스하기 위해 AccountA에서 수임하는 역할 ARN, 그리고 AccountB의 기본 AWS CLI 프로파일의 이름을 입력합니다. 예제:

   ```
   [profile {{MyCrossAccountAccessProfile}}]
   region = us-east-2
   account = {{111122223333}}
   role_arn = arn:aws:iam::{{111122223333}}:role/{{MyCrossAccountRepositoryContributorRole}}
   source_profile = {{default}}
   output = json
   ```

   변경 사항을 저장하고 일반 텍스트 편집기를 닫습니다.

## 2단계: AccountA의 CodeCommit 리포지토리 복제 및 액세스
<a name="cross-account-clone-and-use"></a>

크로스 계정 CodeCommit 리포지토리를 복제하거나 그 리포지토리에 푸시하거나 그 리포지토리에서 가져오려면 **git clone**, **git push**, **git pull** 명령을 실행합니다. AWS 관리 콘솔에 로그인하고, 역할을 전환하고, CodeCommit 콘솔을 사용하여 다른 계정의 리포지토리와 상호 작용할 수도 있습니다.

**참고**  
IAM 역할이 어떻게 구성되었는지에 따라 CodeCommit의 기본 페이지에서 리포지토리를 확인할 수 있습니다. 리포지토리를 볼 수 없는 경우에는 리포지토리 관리자에게 CodeCommit 콘솔에 있는 공유 리포지토리의 **코드** 페이지로 연결되는 URL 링크를 이메일로 보내달라고 요청하세요. URL은 다음과 비슷합니다.  

```
https://console.aws.amazon.com/codecommit/home?region={{us-east-2}}#/repository/{{MySharedDemoRepo}}/browse/HEAD/--/
```<a name="cross-account-clone-cross-account-repo"></a>

**교차 계정 리포지토리를 로컬 컴퓨터에 복제하려면**

1. 리포지토리를 복제할 디렉터리의 명령줄 또는 터미널에서 HTTPS (GRC) 복제 URL을 사용하여 **git clone** 명령을 실행합니다. 예제:

   ```
   git clone codecommit://{{MyCrossAccountAccessProfile}}@{{MySharedDemoRepo}}
   ```

   달리 지정하지 않는 한, 리포지토리는 리포지토리와 같은 이름으로 하위 디렉터리에 복제됩니다.

1. 복제된 리포지토리로 디렉터리를 변경한 다음, 파일을 추가하거나 변경합니다. 예를 들어 {{NewFile.txt}}라는 이름의 파일을 추가할 수 있습니다.

1. 로컬 리포지토리에서 추적한 변경 사항에 파일을 추가하고 변경 내용을 커밋한 다음 CodeCommit 리포지토리로 파일을 푸시합니다. 예제:

   ```
   git add {{NewFile.txt}}
   git commit -m "Added a file to test cross-account access to this repository"
   git push
   ```

   자세한 내용은 [Git 및 시작하기 AWS CodeCommit](getting-started.md) 단원을 참조하십시오.

파일을 추가했다면 CodeCommit 콘솔로 이동하여 커밋을 확인하고 리포지토리에 대한 다른 사용자의 변경 사항을 검토하며 pull 요청에 참여합니다.<a name="cross-account-console"></a>

**CodeCommit 콘솔에서 크로스 계정 리포지토리에 액세스하려면**

1. AccountA의 리포지토리 AWS Management Console 에 대한 교차 계정 액세스 권한이 부여된 IAM 사용자로 AccountA({{888888888888}})의에 로그인합니다. AccountB 

1. 탐색 표시줄에서 사용자 이름을 선택하고 드롭다운 메뉴로 가서 **역할 전환**을 선택합니다.
**참고**  
이 옵션을 선택한 것이 처음인 경우에는 해당 페이지에서 정보를 검토하고 다시 **역할 전환**을 선택합니다.

1. **역할 전환** 페이지에서 다음을 수행합니다.
   + **계정**에서 AccountA의 계정 ID(예: {{111122223333}}))를 입력합니다.
   + **역할**에서 AccountA의 리포지토리에 액세스하기 위해 수임하려는 역할의 이름(예: {{MyCrossAccountRepositoryContributorRole}})을 입력합니다.
   + **표시 이름**에 이 역할의 표시 이름을 입력합니다. 이 이름은 역할을 수임할 때 콘솔에 표시됩니다. 또한 나중에 콘솔에서 역할을 전환할 때 수임된 역할 목록에 나타납니다.
   + (선택 사항) **색상**에서 디스플레이 이름의 컬러 레이블을 선택합니다.
   + **역할 전환**을 선택합니다.

   자세한 내용은 [역할 전환(AWS Management Console) 단원을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html).

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home)에서 CodeCommit 콘솔을 엽니다.

   수임된 역할이 AccountA의 리포지토리 이름을 볼 수 있는 권한을 가지고 있는 경우에는 리포지토리 목록과 상태 보기 권한이 없음을 알리는 오류 메시지가 표시됩니다. 이는 예상된 동작입니다. 목록에서 공유 리포지토리의 이름을 선택합니다.

   수임된 역할이 AccountA의 리포지토리 이름을 볼 수 있는 권한이 없는 경우에는 오류 메시지와 리포지토리가 없이 빈 목록이 표시됩니다. 리포지토리에 대한 URL 링크를 붙여 넣거나 콘솔 링크를 수정한 다음, `/list`를 공유 리포지토리 이름(예: `/{{{{MySharedDemoRepo}}}}`)으로 변경합니다.

1. **코드**에서 로컬 컴퓨터에서 추가한 파일 이름을 찾습니다. 파일에서 코드를 검색한 다음, 리포지토리의 나머지 부분을 검색하고 기능을 사용하기 시작하려면 이를 선택합니다.

   자세한 내용은 [시작하기 AWS CodeCommit](getting-started-cc.md) 단원을 참조하십시오.