跨帳戶儲存庫存取:AccountB 中儲存庫使用者的動作 - AWS CodeCommit

AWS CodeCommit 不再提供給新客戶。的現有客戶 AWS CodeCommit 可以繼續正常使用服務。進一步了解」

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

跨帳戶儲存庫存取:AccountB 中儲存庫使用者的動作

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

步驟 1:為 AccountB 使用者設定 AWS CLI 和 Git,以存取 AccountA 中的儲存庫

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

請按照下列步驟使用 git-remote-codecommit 設定存取權。如果您尚未安裝 git-remote-codecommitgit-remote-codecommit請從 Python 套件索引網站下載。

設定 AWS CLI 和 Git 進行跨帳戶存取
  1. 在本機 AWS CLI 電腦上安裝 。請參閱安裝 AWS CLI 中適用於您作業系統的指示。

  2. 在本機電腦上安裝 Git。若要安裝 Git,建議可使用 Git DownloadsGit for Windows 等網站。

    注意

    CodeCommit 支援 Git 1.7.9 版和更新版本。Git 2.28 版支援為初始遞交設定分支名稱。我們建議您使用最新版本的 Git。Git 是一個不斷發展且定期更新的平台。有時,功能變更可能會影響其使用 CodeCommit 的方式。如果您遇到特定版本的 Git 和 CodeCommit 問題,請檢閱 中的資訊疑難排解

  3. 從終端機或命令列,在您要複製儲存庫的目錄位置執行 git config --local user.namegit config --local user.email 命令,以針對您要對儲存庫所做的遞交,設定使用者名稱和電子郵件。例如:

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

    這些命令不會傳回任何訊息,但您指定的電子郵件和使用者名稱,將會與您對 AccountA 中的儲存庫所做的遞交相關聯。

  4. 執行 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
  5. 再次執行 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
  6. 在純文字編輯器中,開啟 config 檔案,也稱為 AWS CLI 組態檔案。根據您的作業系統,此檔案可能位於 Linux、macOS 或 Unix ~/.aws/config上的 ,或位於 Windows 上的 drive:\Users\USERNAME\.aws\config。

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

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

    account 新增到描述檔組態。提供 AWS AccountB 的帳戶 ID。例如:

    [default] account = 888888888888 region = us-east-2 output = json
  8. 在檔案中,依照您剛才建立的 MyCrossAccountAccessProfile 描述檔,找出相對應的項目。其看起來與下列類似:

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

    accountrole_arnsource_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 儲存庫

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

注意

根據 IAM 角色的設定方式,您可能可以在 CodeCommit 的預設頁面上檢視儲存庫。如果您無法檢視儲存庫,請要求儲存庫管理員將 Code CodeCommit主控台中共用儲存庫的程式碼頁面的 URL 連結透過電子郵件傳送給您。URL 類似如下:

https://console.aws.amazon.com/codecommit/home?region=us-east-2#/repository/MySharedDemoRepo/browse/HEAD/--/
將跨帳戶儲存庫複製到本機電腦
  1. 在命令列或終端機,在您要複製儲存庫的目錄中執行 git clone 命令,並指定 HTTPS (GRC) 複製 URL。例如:

    git clone codecommit://MyCrossAccountAccessProfile@MySharedDemoRepo

    除非您另外指定,否則儲存庫會複製到與儲存庫同名的子目錄。

  2. 切換到複製的儲存庫所在的目錄,然後新增檔案或變更檔案。例如,您可以新增名為 NewFile.txt 的檔案。

  3. 將檔案新增至本機儲存庫的追蹤變更、遞交變更,然後將檔案推送至 CodeCommit 儲存庫。例如:

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

    如需詳細資訊,請參閱Git 和 入門 AWS CodeCommit

現在您已新增檔案,請前往 CodeCommit 主控台檢視您的遞交、檢閱其他使用者對儲存庫的變更、參與提取請求等。

在 CodeCommit 主控台中存取跨帳戶儲存庫
  1. 以已獲授予 AccountA AWS Management Console 中儲存庫跨帳戶存取權的 IAM 使用者身分,登入 AccountB (888888888888) 中的 。 AccountA

  2. 在導覽列選擇您的使用者名稱,然後從下拉式清單中選擇 Switch Role (切換角色)​。

    注意

    如果您是第一次選取此選項,請檢閱頁面上的資訊,然後再次選擇 Switch Role (切換角色)

  3. Switch Role (切換角色) 頁面上,執行下列動作:

    • 帳戶中,輸入 AccountA 的帳戶 ID (例如 111122223333)。

    • Role (角色) 中,輸入角色的名稱,以擔任該角色來存取 AccountA 中的儲存庫 (例如,MyCrossAccountRepositoryContributorRole)。

    • Display Name (顯示名稱) 中,輸入此角色的易記名稱。當您擔任此角色時,此名稱會出現在主控台。您下次在主控台想要切換角色時,此名稱也會出現在擔任的角色清單中。

    • (選用) 在 Color (顏色) 中,選擇顯示名稱的標籤。

    • 選擇 Switch Role (切換角色)。

    如需詳細資訊,請參閱切換到角色 (AWS Management Console)

  4. 在 https://https://console.aws.amazon.com/codesuite/codecommit/home 開啟 CodeCommit 主控台。

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

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

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

    如需詳細資訊,請參閱入門 AWS CodeCommit