

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 跨帳戶儲存庫存取：AccountB 中儲存庫使用者的動作
<a name="cross-account-user-b"></a>

為了存取 AccountA 中的儲存庫，AccountB 群組的使用者必須設定其本機電腦來存取儲存庫。以下章節提供步驟和範例。

**Topics**
+ [步驟 1：為 AccountB 使用者設定 AWS CLI 和 Git，以存取 AccountA 中的儲存庫](#cross-account-configure-credentials)
+ [步驟 2：複製並存取 AccountA 中的 CodeCommit 儲存庫](#cross-account-clone-and-use)

## 步驟 1：為 AccountB 使用者設定 AWS CLI 和 Git，以存取 AccountA 中的儲存庫
<a name="cross-account-configure-credentials"></a>

您無法使用 SSH 金鑰或 Git 登入資料來存取另一個 Amazon Web Services 帳戶中的儲存庫。AccountB 使用者必須將其電腦設定為使用 **git-remote-codecommit**（建議） 或登入資料協助程式來存取 AccountA 中的共用 CodeCommit 儲存庫。不過，在存取 AccountB 中的儲存庫時，您可以繼續使用 SSH 金鑰或 Git 登入資料。

請按照下列步驟使用 **git-remote-codecommit** 設定存取權。如果您尚未安裝 **git-remote-codecommit**，[https://pypi.org/project/git-remote-codecommit/](https://pypi.org/project/git-remote-codecommit/)請從 Python 套件索引網站下載。<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 Downloads](http://git-scm.com/downloads) 或 [Git for Windows](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 並設定設定檔，您可以略過此步驟。

    例如，執行下列命令來建立預設 AWS CLI 設定檔，讓您用來存取美國東部 （俄亥俄） (us-east-2) 中 AccountB AWS 的資源：

   ```
   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 使用者的存取金鑰和私密金鑰。例如，執行下列命令來建立 AWS CLI 名為 {{MyCrossAccountAccessProfile}} 的設定檔，用來存取美國東部 （俄亥俄） (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. 在純文字編輯器中，開啟 `config` 檔案，也稱為 AWS CLI 組態檔案。根據您的作業系統，此檔案可能位於 Linux、macOS 或 Unix `~/.aws/config`上的 ，或位於 Windows 上的 {{drive}}：\\Users\\{{USERNAME}}\\.aws\\config。

1. 在檔案中，找出您已針對存取 AccountB 中的儲存庫所設定之對應預設描述檔的項目。其看起來與下列類似：

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

   將 `account` 新增到描述檔組態。提供 AWS AccountB 的帳戶 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>

執行 **git push**、 **git clone**和 **git pull** 來複製、推送和提取跨帳戶 CodeCommit 儲存庫。您也可以登入 AWS 管理主控台、切換角色，並使用 CodeCommit 主控台與其他帳戶中的儲存庫互動。

**注意**  
根據 IAM 角色的設定方式，您可能可以在 CodeCommit 的預設頁面上檢視儲存庫。如果您無法檢視儲存庫，請要求儲存庫管理員將 CodeCommit 主控台中共用儲存庫的 Code ****頁面 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. 在命令列或終端機，在您要複製儲存庫的目錄中執行 **git clone** 命令，並指定 HTTPS (GRC) 複製 URL。例如：

   ```
   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 主控台檢視您的遞交、檢閱其他使用者對儲存庫所做的變更、參與提取請求等。<a name="cross-account-console"></a>

**在 CodeCommit 主控台中存取跨帳戶儲存庫**

1. 以已獲授予 AccountA AWS 管理主控台 中儲存庫跨帳戶存取權的 IAM 使用者身分，登入 AccountB ({{888888888888}}) 中的 。 AccountA

1. 在導覽列選擇您的使用者名稱，然後從下拉式清單中選擇 **Switch Role (切換角色)**​。
**注意**  
如果您是第一次選取此選項，請檢閱頁面上的資訊，然後再次選擇 **Switch Role (切換角色)**。

1. 在 **Switch Role (切換角色)** 頁面上，執行下列動作：
   + 在**帳戶中**，輸入 AccountA 的帳戶 ID （例如 {{111122223333}})。
   + 在 **Role (角色)** 中，輸入角色的名稱，以擔任該角色來存取 AccountA 中的儲存庫 (例如，{{MyCrossAccountRepositoryContributorRole}})。
   + 在 **Display Name (顯示名稱)** 中，輸入此角色的易記名稱。當您擔任此角色時，此名稱會出現在主控台。您下次在主控台想要切換角色時，此名稱也會出現在擔任的角色清單中。
   + (選用) 在 **Color (顏色)** 中，選擇顯示名稱的標籤。
   + 選擇 **Switch Role** (切換角色)。

   如需詳細資訊，請參閱[切換到角色 (AWS 管理主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)。

1. 在 https：//[https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) 開啟 CodeCommit 主控台。

   如果擔任的角色有許可檢視 AccountA 中儲存庫的名稱，您會看到儲存庫清單，也會出現錯誤訊息，指出您沒有許可檢視其狀態。這是預期的行為。從清單中選擇共享儲存庫的名稱。

   如果擔任的角色沒有許可檢視 AccountA 中儲存庫的名稱，您會看到錯誤訊息和沒有儲存庫的空白清單。貼上儲存庫的 URL 連結，或修改主控台連結並將 `/list` 變更為共享儲存庫的名稱 (例如，`/{{{{MySharedDemoRepo}}}}`)。

1. 在 **Code (程式碼)** 中，找出您從本機電腦新增的檔案名稱。選擇此檔案以瀏覽檔案中的程式碼，然後瀏覽儲存庫的其餘部分，並開始使用其功能。

   如需詳細資訊，請參閱[入門 AWS CodeCommit](getting-started-cc.md)。