aws codecommit - 使用者指南 · aws codecommit 使用者指南...

328
AWS CodeCommit 使用者指南 API 版本 2015-04-13

Upload: others

Post on 09-Sep-2019

24 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit使用者指南

API 版本 2015-04-13

Page 2: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

AWS CodeCommit: 使用者指南Copyright © 2019 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

Page 3: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

Table of Contents什麼是 CodeCommit? ........................................................................................................................ 1

CodeCommit 簡介 ....................................................................................................................... 1CodeCommit、Git,並選擇符合您需求的正確 AWS 服務 ................................................................... 2CodeCommit 如何運作? ............................................................................................................. 3CodeCommit 與 Amazon S3 中的檔案版本控制有何不同? ................................................................ 4如何開始使用 CodeCommit? ....................................................................................................... 4哪裡可以進一步了解 Git? ............................................................................................................ 4

設定 .................................................................................................................................................. 5檢視和管理您的登入資料 .............................................................................................................. 5使用 Git 登入資料來設定 .............................................................................................................. 6使用其他方法來設定 .................................................................................................................... 6CodeCommit、Git 和其他元件的相容性 .......................................................................................... 6適用於使用 Git 登入資料的 HTTPS 使用者 ...................................................................................... 7

步驟 1:CodeCommit 的初始組態 ......................................................................................... 7步驟 2:安裝 Git ................................................................................................................ 8步驟 3:為 CodeCommit 的 HTTPS 連線建立 Git 登入資料 ....................................................... 8步驟 4:連接到 CodeCommit 主控台和複製儲存庫 ................................................................... 9後續步驟 .......................................................................................................................... 10

從開發工具連接 ......................................................................................................................... 10將 AWS Cloud9 與 AWS CodeCommit 整合 .......................................................................... 13將 Visual Studio 與 AWS CodeCommit 整合 ......................................................................... 16Eclipse 與 AWS CodeCommit 整合 ...................................................................................... 19

適用於不使用 AWS CLI 的 SSH 使用者 ........................................................................................ 23步驟 1:將公有金鑰與 IAM 使用者相關聯 .............................................................................. 23步驟 2:將 CodeCommit 新增到 SSH 組態 ........................................................................... 24後續步驟 .......................................................................................................................... 25

適用於 Linux, macOS, or Unix 上的 SSH 連線 ............................................................................... 25步驟 1:CodeCommit 的初始組態 ........................................................................................ 25步驟 2:安裝 Git ............................................................................................................... 26步驟 3:在 Linux, macOS, or Unix 上設定登入資料 ................................................................ 26步驟 4:連接到 CodeCommit 主控台和複製儲存庫 ................................................................. 28後續步驟 .......................................................................................................................... 29

適用於 Windows 上的 SSH 連線 ................................................................................................. 29步驟 1:CodeCommit 的初始組態 ........................................................................................ 29步驟 2:安裝 Git ............................................................................................................... 30SSH 和 Windows:設定 Git 和 CodeCommit 的公有和私有金鑰 ................................................ 30步驟 4:連接到 CodeCommit 主控台和複製儲存庫 ................................................................. 32後續步驟 .......................................................................................................................... 33

適用於 Linux, macOS, or Unix 上使用 AWS CLI 登入資料協助程式來建立 HTTPS 連線 ......................... 33步驟 1:CodeCommit 的初始組態 ........................................................................................ 33步驟 2:安裝 Git ............................................................................................................... 35步驟 3:設定登入資料協助程式 ........................................................................................... 35步驟 4:連接到 CodeCommit 主控台和複製儲存庫 ................................................................. 36後續步驟 .......................................................................................................................... 37

適用於 Windows 上使用 AWS CLI 登入資料協助程式的 HTTPS 連線 ................................................. 37步驟 1:CodeCommit 的初始組態 ........................................................................................ 37步驟 2:安裝 Git ............................................................................................................... 39步驟 3:設定登入資料協助程式 ........................................................................................... 39步驟 4:連接到 CodeCommit 主控台和複製儲存庫 ................................................................. 41後續步驟 .......................................................................................................................... 41

入門 ................................................................................................................................................ 42CodeCommit 教學 ..................................................................................................................... 42

步驟 1:建立 CodeCommit 儲存庫 ....................................................................................... 44步驟 2:將檔案新增至儲存庫 .............................................................................................. 45

API 版本 2015-04-13iii

Page 4: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

步驟 3:瀏覽儲存庫的內容 ................................................................................................. 47步驟 4:建立和協作處理提取請求 ........................................................................................ 53步驟 5:後續步驟 .............................................................................................................. 58步驟 6:清除 .................................................................................................................... 58

Git 與 CodeCommit 教學 ............................................................................................................ 58步驟 1:建立 CodeCommit 儲存庫 ....................................................................................... 59步驟 2:建立本機儲存庫 ..................................................................................................... 60步驟 3:建立您的第一個遞交 .............................................................................................. 60步驟 4:推送您的第一個遞交 .............................................................................................. 61步驟 5:共用 CodeCommit 儲存庫及推送和提取另一個遞交 ..................................................... 61步驟 6:建立和分享分支 ..................................................................................................... 62步驟 7:建立和共用標籤 ..................................................................................................... 63步驟 8:設定存取許可 ........................................................................................................ 64步驟 9:清除 .................................................................................................................... 66

產品和服務整合 ................................................................................................................................. 68與其他 AWS 服務整合 ............................................................................................................... 68整合來自社群的範例 .................................................................................................................. 71

部落格文章 ....................................................................................................................... 72程式碼範例 ....................................................................................................................... 73

使用儲存庫 ....................................................................................................................................... 74建立儲存庫 ............................................................................................................................... 75

建立儲存庫 (主控台) .......................................................................................................... 75建立儲存庫 (AWS CLI) ....................................................................................................... 76

連接到儲存庫 ............................................................................................................................ 77連接到 CodeCommit 儲存庫的先決條件 ................................................................................ 77透過複製儲存庫連接到 CodeCommit 儲存庫 .......................................................................... 78將本機儲存庫連接到 CodeCommit 儲存庫 ............................................................................. 79

共用儲存庫 ............................................................................................................................... 79選擇用來與您的使用者共用的連線通訊協定 ............................................................................ 80為您的儲存庫建立 IAM 政策 ................................................................................................ 80為儲存庫使用者建立 IAM 群組 ............................................................................................. 81與您的使用者共享連線資訊 ................................................................................................. 82

設定儲存庫事件的通知 ............................................................................................................... 83使用儲存庫通知規則 .......................................................................................................... 85建立通知規則 .................................................................................................................... 85變更或停用通知 ................................................................................................................. 87刪除通知 .......................................................................................................................... 87

標記儲存庫 ............................................................................................................................... 88新增標籤至儲存庫 .............................................................................................................. 88檢視儲存庫的標籤 .............................................................................................................. 90編輯儲存庫的標籤 .............................................................................................................. 91從儲存庫移除標籤 .............................................................................................................. 92

管理儲存庫的觸發 ...................................................................................................................... 93為 CodeCommit 建立資源和新增許可 ................................................................................... 94為 Amazon SNS 主題建立觸發 ............................................................................................ 94為 Lambda 函數建立觸發 ................................................................................................... 98為現有的 Lambda 函數建立觸發 ........................................................................................ 101編輯儲存庫的觸發 ............................................................................................................ 106測試儲存庫的觸發 ............................................................................................................ 107從儲存庫刪除觸發。 ......................................................................................................... 108

檢視儲存庫詳細資訊 ................................................................................................................. 110檢視儲存庫詳細資訊 (主控台) ............................................................................................ 110檢視 CodeCommit 儲存庫詳細資訊 (Git) .............................................................................. 110檢視 CodeCommit 儲存庫詳細資訊 (AWS CLI) ..................................................................... 111

變更儲存庫設定 ....................................................................................................................... 114變更儲存庫設定 (主控台) ................................................................................................... 114變更 AWS CodeCommit 儲存庫設定 (AWS CLI) ................................................................... 115

API 版本 2015-04-13iv

Page 5: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

同步儲存庫之間的變更 .............................................................................................................. 116將遞交推送到兩個儲存庫 ........................................................................................................... 117設定儲存庫的跨帳戶存取 ........................................................................................................... 120

儲存庫的跨帳戶存取:AccountA 的管理員所執行的動作 ......................................................... 120儲存庫的跨帳戶存取:AccountB 的管理員所執行的動作 ......................................................... 123儲存庫的跨帳戶存取:AccountB 的儲存庫使用者所執行的動作 ................................................ 124

刪除儲存庫 ............................................................................................................................. 127刪除 CodeCommit 儲存庫 (主控台) ..................................................................................... 128刪除本機儲存庫 ............................................................................................................... 128刪除 CodeCommit 儲存庫 (AWS CLI) ................................................................................. 128

使用檔案 ........................................................................................................................................ 130瀏覽儲存庫中的檔案 ................................................................................................................. 131

瀏覽 CodeCommit 儲存庫 ................................................................................................. 131建立或新增檔案 ....................................................................................................................... 132

建立或上傳檔案 (主控台) ................................................................................................... 133新增檔案 (AWS CLI) ........................................................................................................ 133新增檔案 (Git) ................................................................................................................. 134

編輯檔案的內容 ....................................................................................................................... 134編輯檔案 (主控台) ............................................................................................................ 135編輯或刪除一個檔案 (AWS CLI) ......................................................................................... 136編輯檔案 (Git) ................................................................................................................. 137

使用提取請求 .................................................................................................................................. 138建立提取請求 .......................................................................................................................... 140

建立提取請求 (主控台) ...................................................................................................... 140建立提取請求 (AWS CLI) .................................................................................................. 142

檢視提取請求 .......................................................................................................................... 143檢視提取請求 (主控台) ...................................................................................................... 143檢視提取請求 (AWS CLI) .................................................................................................. 144

檢閱提取請求 .......................................................................................................................... 146檢閱提取請求 (主控台) ...................................................................................................... 146檢閱提取請求 (AWS CLI) .................................................................................................. 149

更新提取請求 .......................................................................................................................... 152更新提取請求 (Git) ........................................................................................................... 152更新提取請求 (主控台) ...................................................................................................... 153更新提取請求 (AWS CLI) .................................................................................................. 153

合併提取請求 .......................................................................................................................... 155合併提取請求 (主控台) ...................................................................................................... 155合併提取請求 (AWS CLI) .................................................................................................. 157

解決提取請求中的衝突 .............................................................................................................. 159解決提取請求中的衝突 (主控台) ......................................................................................... 160解決提取請求中的衝突 (AWS CLI) ...................................................................................... 162

關閉提取請求 .......................................................................................................................... 167關閉提取請求 (主控台) ...................................................................................................... 167關閉提取請求 (AWS CLI) .................................................................................................. 168

使用遞交 ........................................................................................................................................ 170建立遞交 ................................................................................................................................ 171

使用 Git 用戶端建立遞交 ................................................................................................... 171使用 AWS CLI 建立遞交 ................................................................................................... 173

檢視遞交詳細資訊 .................................................................................................................... 175瀏覽儲存庫中的遞交 ......................................................................................................... 175檢視遞交詳細資訊 (AWS CLI) ............................................................................................ 178檢視遞交詳細資訊 (Git) ..................................................................................................... 182

比較遞交 ................................................................................................................................ 184將遞交與其父系比較 ......................................................................................................... 184比較任兩個遞交指標 ......................................................................................................... 186

對遞交的評論 .......................................................................................................................... 188檢視儲存庫中對遞交的評論 ................................................................................................ 189

API 版本 2015-04-13v

Page 6: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

新增和回覆對儲存庫中遞交的評論 ...................................................................................... 189檢視、新增、更新和回覆評論 (AWS CLI) ............................................................................. 193

建立 Git 標籤 .......................................................................................................................... 197使用 Git 來建立標籤 ......................................................................................................... 197

檢視標籤詳細資訊 .................................................................................................................... 197檢視標籤詳細資訊 (主控台) ............................................................................................... 198檢視 Git 標籤詳細資訊 (Git) ............................................................................................... 198

刪除標籤 ................................................................................................................................ 200使用 Git 刪除 Git 標籤 ..................................................................................................... 200

使用分支 ........................................................................................................................................ 201建立分支 ................................................................................................................................ 202

建立分支 (主控台) ............................................................................................................ 202建立分支 (Git) ................................................................................................................. 203建立分支 (AWS CLI) ........................................................................................................ 204

限制對分支的推送和合併 ........................................................................................................... 205設定 IAM 政策以限制對分支的推送和合併 ............................................................................ 205將 IAM 政策套用至 IAM 群組或角色 ................................................................................... 206測試政策 ........................................................................................................................ 207

檢視分支詳細資訊 .................................................................................................................... 207檢視分支詳細資訊 (主控台) ............................................................................................... 207檢視分支詳細資訊 (Git) ..................................................................................................... 208檢視分支詳細資訊 (AWS CLI) ............................................................................................ 209

比較和合併分支 ....................................................................................................................... 210將分支與預設分支比較 ...................................................................................................... 210比較兩個特定分支 ............................................................................................................ 210合併兩個分支 (AWS CLI) .................................................................................................. 211

變更分支設定 .......................................................................................................................... 213變更預設分支 (主控台) ...................................................................................................... 213變更預設分支 (AWS CLI) .................................................................................................. 213

刪除分支 ................................................................................................................................ 214刪除分支 (主控台) ............................................................................................................ 214刪除分支 (AWS CLI) ........................................................................................................ 214刪除分支 (Git) ................................................................................................................. 215

處理使用者偏好設定 ......................................................................................................................... 216遷移至 CodeCommit ........................................................................................................................ 217

將 Git 儲存庫遷移至 AWS CodeCommit ...................................................................................... 217步驟 0:存取 CodeCommit 所需的設定 ............................................................................... 218步驟 1:建立 CodeCommit 儲存庫 ..................................................................................... 220步驟 2:複製儲存庫並推送至 CodeCommit 儲存庫 ................................................................ 222步驟 3:在 CodeCommit 中檢視檔案 .................................................................................. 222步驟 4:共享 CodeCommit 儲存庫 ..................................................................................... 223

將內容遷移到 CodeCommit ....................................................................................................... 224步驟 0:存取 CodeCommit 所需的設定 ............................................................................... 225步驟 1:建立 CodeCommit 儲存庫 ..................................................................................... 228步驟 2:將本機內容遷移到 CodeCommit 儲存庫 ................................................................... 229步驟 3:在 CodeCommit 中檢視檔案 .................................................................................. 230步驟 4:共享 CodeCommit 儲存庫 ..................................................................................... 230

以增進的方式遷移儲存庫 ........................................................................................................... 231步驟 0:決定是否漸進遷移 ................................................................................................ 232步驟 1:安裝先決條件並將 CodeCommit 儲存庫新增為遠端 ................................................... 232步驟 2:建立要用於遞增遷移的指令碼 ................................................................................. 233步驟 3:執行指令碼並遞增遷移到 CodeCommit .................................................................... 233附錄:範例指令碼 incremental-repo-migration.py ...................................................... 234

故障診斷 ........................................................................................................................................ 239對 Git 登入資料進行故障診斷 (HTTPS) ....................................................................................... 239

AWS CodeCommit 的 Git 登入資料:當我在終端機或命令列連接到我的 CodeCommit 儲存庫時,我持續看見輸入登入資料的提示 ......................................................................................... 239

API 版本 2015-04-13vi

Page 7: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

AWS CodeCommit 的 Git 登入資料:我設定 Git 登入資料,但我的系統未使用它們 ..................... 240對 SSH 連線進行故障診斷 ........................................................................................................ 240

存取錯誤:公有金鑰已成功上傳至 IAM,但 Linux, macOS, or Unix 系統上的連線失敗 ................. 240存取錯誤:公有金鑰已成功上傳至 IAM,並且 SSH 測試成功,但 Windows 上的連線失敗 ............ 241身份驗證挑戰:連接到 CodeCommit 儲存庫時無法建立主機的真偽 .......................................... 241IAM 錯誤:嘗試將公有金鑰新增至 IAM 時發生「格式無效」 ................................................... 244Windows 上的 Git:嘗試使用 SSH 連接時,Bash 模擬器或命令列凍結 ..................................... 244

對登入資料協助程式 (HTTPS) 進行故障診斷 ................................................................................ 245我在 Windows 中使用登入資料協助程式時發生找不到命令的錯誤 ............................................ 245當我連接到 CodeCommit 儲存庫時提示我輸入使用者名稱 ...................................................... 245適用於 macOS 的 Git:我成功設定登入資料協助程式,但現在拒絕我存取儲存庫 (403) ................ 246適用於 Windows 的 Git:我已安裝適用於 Windows 的 Git,但現在拒絕我存取儲存庫 (403) .......... 247

對 Git 用戶端進行故障診斷 ....................................................................................................... 248Git 錯誤:錯誤:RPC 失敗;結果=56,HTTP 代碼=200 嚴重:遠端未預期地當機 ...................... 249Git 錯誤:太多個參考更新命令 ........................................................................................... 249Git 錯誤:透過 HTTPS 推送在某些版本的 Git 中會損壞 ......................................................... 249Git 錯誤:'gnutls_handshake () 失敗' .................................................................................. 249Git 錯誤:Git 找不到 CodeCommit 儲存庫或沒有可存取儲存庫的許可 ...................................... 249Windows 上的 Git:沒有支援的身份驗證方法可供使用 (publickey) ........................................... 249

故障診斷存取錯誤 .................................................................................................................... 250存取錯誤:我從 Windows 連接到 CodeCommit 儲存庫時提示我輸入使用者名稱和密碼 ................ 250存取錯誤:連接到 CodeCommit 儲存庫時公有金鑰遭拒 ......................................................... 250存取錯誤:當連接到 CodeCommit 儲存庫時出現「超過費率」或「429」訊息 ............................ 251

故障診斷組態錯誤 .................................................................................................................... 251組態錯誤:無法在 macOS 上設定 AWS CLI 登入資料 ........................................................... 251

對主控台錯誤進行故障診斷 ........................................................................................................ 252存取錯誤:從主控台或 AWS CLI 對 CodeCommit 儲存庫的加密金鑰存取遭拒 ............................ 251主控台錯誤:無法從主控台瀏覽 CodeCommit 儲存庫中的程式碼 ............................................. 252

觸發的疑難排解 ....................................................................................................................... 252觸發錯誤:儲存庫觸發未如預期般地執行 ............................................................................. 252

開啟偵錯 ................................................................................................................................ 253身份驗證與存取控制 ......................................................................................................................... 254

身份驗證 ................................................................................................................................ 254存取控制 ................................................................................................................................ 255管理存取概觀 .......................................................................................................................... 255

資源與操作 ..................................................................................................................... 256了解資源所有權 ............................................................................................................... 256管理資源存取 .................................................................................................................. 257CodeCommit 中的資源範圍 ............................................................................................... 258指定政策元素:資源、動作、效果和委託人 .......................................................................... 258在政策中指定條件 ............................................................................................................ 258

使用以身分為基礎的政策 (IAM 政策) ........................................................................................... 259使用 CodeCommit 主控台所需的許可 .................................................................................. 259在主控台檢視資源 ............................................................................................................ 261CodeCommit 的 AWS 受管 (預先定義) 政策 ........................................................................ 262客戶受管政策範例 ............................................................................................................ 270

CodeCommit 許可參考 ............................................................................................................. 277Git 用戶端命令的必要許可 ................................................................................................. 278分支上的動作許可 ............................................................................................................ 278合併上的動作許可 ............................................................................................................ 279在提取請求上執行動作的許可 ............................................................................................. 280在個別檔案上的動作許可 ................................................................................................... 282對註解的動作許可 ............................................................................................................ 283遞交程式碼上的動作許可 ................................................................................................... 284儲存庫上的動作許可 ......................................................................................................... 285標籤上的動作許可 ............................................................................................................ 286觸發上的動作許可 ............................................................................................................ 287

API 版本 2015-04-13vii

Page 8: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

CodePipeline 整合上的動作許可 ........................................................................................ 287CodeCommit 參考 ........................................................................................................................... 289

區域和 Git 連線端點 ................................................................................................................. 289CodeCommit 支援的區域 .................................................................................................. 289Git 連線端點 ................................................................................................................... 290適用於 CodeCommit 的伺服器指紋 ..................................................................................... 293

以 VPC 端點界面使用 AWS CodeCommit ................................................................................... 295可用性 ........................................................................................................................... 295建立適用於 CodeCommit 的 VPC 端點 ............................................................................... 296建立 CodeCommit 的 VPC 端點政策 .................................................................................. 296

限制 ...................................................................................................................................... 297臨時存取 ................................................................................................................................ 299

步驟 1:完成事前準備 ...................................................................................................... 300步驟 2:取得臨時存取登入資料 .......................................................................................... 300步驟 3:以您的臨時存取登入資料來設定 AWS CLI ................................................................ 301步驟 4:存取 CodeCommit 儲存庫 ..................................................................................... 302

AWS KMS 和加密 ................................................................................................................... 302加密內容 ........................................................................................................................ 303

使用 AWS CloudTrail 記錄 AWS CodeCommit API 呼叫 ................................................................ 303CodeCommit 中的 CloudTrail 資訊 ..................................................................................... 303了解 CodeCommit 日誌檔案項目 ........................................................................................ 304

命令列參考 ............................................................................................................................. 308基本 Git 命令 .......................................................................................................................... 311

組態變數 ........................................................................................................................ 311遠端儲存庫 ..................................................................................................................... 312遞交 .............................................................................................................................. 312分支 .............................................................................................................................. 313標籤 .............................................................................................................................. 314

文件歷史記錄 .................................................................................................................................. 315舊版更新 ................................................................................................................................ 316

AWS Glossary ................................................................................................................................ 320

API 版本 2015-04-13viii

Page 9: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 簡介

什麼是 AWS CodeCommit?AWS CodeCommit 是由 Amazon Web Services 代管的版本控制服務,可讓您私下在雲端存放和管理資產(例如,文件、原始程式碼和二進位檔案)。如需 CodeCommit 定價的相關資訊,請參閱定價。

Note

CodeCommit 適用於許多合規計劃。如需 AWS 和合規性工作的詳細資訊,請參閱合規計劃的 AWS服務範圍。This is a HIPAA Eligible Service. For more information about AWS, U.S. Health InsurancePortability and Accountability Act of 1996 (HIPAA), and using AWS services to process, store, andtransmit protected health information (PHI), see HIPAA Overview.For information about this service and ISO 27001, a security management standard that specifiessecurity management best practices, see ISO 27001 Overview.如需有關此服務和支付卡產業資料安全標準 (PCI DSS) 的詳細資訊,請參閱 PCI DSS 概觀。如需此服務的詳細資訊,以及具體說明可保護敏感資訊密碼模組之安全請求的聯邦資訊處理標準(FIPS) 第 140-2 號公報美國政府標準,請參閱聯邦資訊處理標準 (FIPS) 140-2 概觀和Git 連線端點 (p. 290)。

主題• CodeCommit 簡介 (p. 1)• CodeCommit、Git,並選擇符合您需求的正確 AWS 服務 (p. 2)• CodeCommit 如何運作? (p. 3)• CodeCommit 與 Amazon S3 中的檔案版本控制有何不同? (p. 4)• 如何開始使用 CodeCommit? (p. 4)• 哪裡可以進一步了解 Git? (p. 4)

CodeCommit 簡介CodeCommit 是安全、可充分擴展、受管的原始程式碼控制服務,可託管私有的 Git 儲存庫。CodeCommit可讓您不需要管理自己的原始程式碼控制系統,也不用擔心是否要擴展其基礎設施。從程式碼到二進位檔,CodeCommit 都可以儲存。它支援 Git 的標準功能,可以完美搭配以 Git 為基礎的現有工具一起運作。

CodeCommit 可讓您:

• 享受 AWS 託管的全受管服務。CodeCommit 提供很高的服務可用性和耐用性,您不需要浪費精力來管理自己的硬體和軟體。無需佈建和擴充硬體,也無需安裝、設定和更新伺服器軟體。

• 安全地存放程式碼。靜態和傳輸中的 CodeCommit 儲存庫都會加密。• 協作處理程式碼。CodeCommit 儲存庫支援提取請求,可讓使用者檢閱彼此的程式碼變更並做註解,之後

再合併到分支;也支援通知,可自動將提取請求的相關電子郵件傳送給使用者;還有更多支援。• 輕鬆擴展版本控制專案。CodeCommit 儲存庫可以擴展以滿足您的開發需求。此服務可處理具有大量檔案

或分支、大型檔案及冗長修訂歷史記錄的儲存庫。• 隨時存放任何資料。CodeCommit 不限制儲存庫大小或您可存放的檔案類型。• 與其他 AWS 和第三方服務整合。CodeCommit 可保持儲存庫靠近您在 AWS 雲端中的其他生產資源,這

有助於增加開發生命週期的速度和頻率。它與 IAM 整合,而且可以與其他 AWS 服務一起使用,還能與其他儲存庫同時運作。如需更多詳細資訊,請參閱 與 AWS CodeCommit 的產品和服務整合 (p. 68)。

• 輕鬆從其他遠端儲存庫遷移檔案。您可以從以 Git 為基礎的任何儲存庫遷移至 CodeCommit。• 使用您已知的 Git 工具。CodeCommit 支援 Git 命令,以及其自己的 AWS CLI 命令和 API。

API 版本 2015-04-131

Page 10: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit、Git,並選擇符合您需求的正確 AWS 服務

CodeCommit、Git,並選擇符合您需求的正確 AWS服務

做為 Git 型服務,CodeCommit 非常適合大部分版本控制的需求。沒有檔案大小、檔案類型和儲存庫大小方面的任意限制。不過,Git 存在固有的侷限性,可能對某些操作種類的效能造成負面影響,特別是在經過一段時間之後。有其他 AWS 服務更適合該任務時,避免將其用於這種使用案例,可以避免 CodeCommit 儲存庫的潛在效能下降。您也可以針對複雜儲存庫來最佳化 Git 的效能。以下提供一些使用案例,在其中 Git 以及CodeCommit 可能不是最適合您的解決方案,或者您可能需要採取其他步驟來最佳化 Git。

使用案例 說明 可考慮的其他服務

經常變更的大型檔案 Git 使用 Delta 編碼來存放檔案版本之間的差異。例如,如果您變更文件中的幾個字詞,Git 只會存放這些變更過的字詞。如果您有超過 5 MB 的檔案或物件且具有許多變更,Git 可能需要重建大型的Delta 差異鏈。當這些檔案隨著時間增長,這樣會消耗本機電腦和CodeCommit 中越來越多的運算資源。

若要對大型檔案進行版本控制,請考慮使用 Amazon SimpleStorage Service (AmazonS3)。如需詳細資訊,請參閱Amazon Simple StorageService Developer Guide中的使用版本控制。

資料庫 Git 儲存庫會隨著時間增長。由於版本控制會追蹤所有變更,任何變更都會增加儲存庫的大小的。換言之,當您遞交資料,即使您刪除遞交中的資料,資料仍會新增到儲存庫。隨著時間需要處理和傳輸的資料越來越多,Git 就會變慢。這對資料庫的使用案例尤其不利。Git 並非專為資料庫而設計。

若要建立和使用不受大小影響而具有一致效能的資料庫,請考慮使用 Amazon DynamoDB。如需詳細資訊,請參閱 AmazonDynamoDB Getting StartedGuide。

稽核線索 一般而言,稽核線索會保留很長一段時間,並由系統程序以非常頻繁的頻率連續產生。Git 的設計目的是為了安全地存放開發人員群組在開發週期產生的原始程式碼。不斷存放以編寫程式方式產生之系統變更的快速變化儲存庫,在一段時間後效能會下降。

若要存放稽核線索,請考慮使用Amazon Simple Storage Service(Amazon S3)。

若要稽核 AWS 活動,視您的使用案例而定,請考慮使用 AWSCloudTrail、AWS Config 或Amazon CloudWatch。

備份 Git 的設計目的是為了對開發人員編寫的原始程式碼進行版本控制。您可以推送遞交到兩個遠端儲存庫 (p. 117) (包括CodeCommit 儲存庫) 做為備份策略。不過,Git 不是專為處理電腦檔案系統、資料庫傾印或類似備份內容的備份而設計的。這樣做可能會降低系統速度,並提高複製和推送儲存庫所需的時間。

如需有關備份到 AWS 雲端的資訊,請參閱備份和還原。

大量的分支或參考 當 Git 用戶端推送或提取儲存庫資料時,即使您只需要一個分支,

若要分析 CodeCommit 儲存庫中的參考數量,以判斷不再需要哪

API 版本 2015-04-132

Page 11: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 如何運作?

使用案例 說明 可考慮的其他服務遠端伺服器仍必須傳送所有分支和參考 (例如標籤)。如果您擁有數千個分支和參考,這可能需要一些時間來處理和傳送 (封包協議)並造成明顯緩慢的儲存庫回應。您擁有越多分支和標籤,這個處理程序就需要越長的時間。我們建議您使用 CodeCommit,但刪除不再需要的分支和標籤。

些項目,您可以使用下列其中一個命令:

• Linux, macOS, or Unix 或Windows 上的 Bash 模擬器:

git ls-remote | wc-l

• Powershell:

git ls-remote | Measure-Object -line

CodeCommit 如何運作?以 Git 為基礎的儲存庫使用者會覺得 CodeCommit 很熟悉,但即使不熟悉也會發現轉換到 CodeCommit 相當簡單。CodeCommit 提供主控台來輕鬆建立儲存庫,還提供現有儲存庫和分支的清單。只需要幾個簡單的步驟,使用者就可以找到儲存庫的相關資訊並複製到電腦,建立本機儲存庫來進行變更,然後將變更推送到CodeCommit 儲存庫。使用者可以在本機機器上從命令列工作,或使用以 GUI 為基礎的編輯器。

下圖顯示如何使用您的開發機器、AWS CLI 或 CodeCommit 主控台及 CodeCommit 服務,以建立和管理儲存庫:

1. 使用 AWS CLI 或 CodeCommit 主控台來建立 CodeCommit 儲存庫。2. 從您的開發電腦上,使用 Git 執行 git clone,並指定 CodeCommit 儲存庫的名稱。這會建立 本機儲存庫

來連接到 CodeCommit 儲存庫。

API 版本 2015-04-133

Page 12: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 與 Amazon S3 中的檔案版本控制有何不同?

3. 在開發機器上使用 本機儲存庫 來修改 (新增、編輯和刪除) 檔案,然後執行 git add,將修改過的檔案暫存在本機。執行 git commit 在本機遞交檔案,然後執行 git push,將檔案傳送到 CodeCommit 儲存庫。

4. 下載其他使用者所做的變更。執行 git pull 來同步 CodeCommit 儲存庫 中的檔案與 本機儲存庫。這可確保您使用的是最新版本的檔案。

您可以使用 AWS CLI 或 CodeCommit 主控台來追蹤和管理您的儲存庫。

CodeCommit 與 Amazon S3 中的檔案版本控制有何不同?

CodeCommit 針對團隊軟體開發而最佳化。它可管理多個檔案之間的批次變更,這些變更可能與其他開發人員所做的變更同時發生。Amazon S3 版本控制支援恢復檔案的舊版本,但並不著重於軟體開發團隊所需的協作檔案追蹤功能。

如何開始使用 CodeCommit?開始使用 CodeCommit:

1. 遵循設定 (p. 5)中的步驟來準備您的開發機器。2. 遵循入門 (p. 42)中一或多個教學課程的步驟。3. 在 CodeCommit 中建立 (p. 75)版本控制專案,或將版本控制專案遷移 (p. 217)到 CodeCommit。

哪裡可以進一步了解 Git?如果您沒聽過 Git,請了解如何使用 Git (p. 311)。以下是一些有用的資源:

• Pro Git,這是線上版本的 Pro Git 書籍。作者為 Scott Chacon。由 Apress 出版。• Git Immersion,這是自己動手做引導教學,帶您認識使用 Git 的基本知識。由 Neo Innovation, Inc. 出版。• Git 參考,這是線上快速參考,也可當做更深入的 Git 教學課程。由 GitHub 團隊發行。• Git 速查表,含 Git 命令基本語法。由 GitHub 團隊發行。• Git 隨身指南。作者為 Richard E. Silverman。由 O'Reilly Media, Inc. 出版。

API 版本 2015-04-134

Page 13: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視和管理您的登入資料

設定 AWS CodeCommit您可以登入 AWS Management Console,然後直接從 AWS CodeCommit 主控台將檔案上傳、新增 (p. 130)到儲存庫或加以編輯。這是快速進行變更的方式。不過,如果您想要處理多個檔案、跨分支的檔案等等,請考慮設定本機電腦來使用儲存庫。設定 CodeCommit 最簡單的方式就是設定 AWS CodeCommit的 HTTPS Git 登入資料。此 HTTPS 身份驗證方法:

• 使用靜態使用者名稱和密碼。• 適用於 CodeCommit 支援的所有作業系統。• 也相容於整合開發環境 (IDE) 和其他支援 Git 登入資料的開發工具。

如果您基於操作理由而不想要或無法使用 Git 登入資料,則可以使用其他方法。請仔細看一遍其他這些選項,以決定最適合您的替代方法。

• 使用 Git 登入資料來設定 (p. 6)• 使用其他方法來設定 (p. 6)• CodeCommit、Git 和其他元件的相容性 (p. 6)

如需有關使用 CodeCommit 與 Amazon Virtual Private Cloud 的資訊,請參閱以 VPC 端點界面使用 AWSCodeCommit (p. 295)。

檢視和管理您的登入資料您可以從 AWS 主控台透過 My Security Credentials (我的安全登入資料) 來檢視和管理您的 CodeCommit 登入資料。

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

2. 在右上方的導覽列中,選擇您的使用者名稱,然後選擇 My Security Credentials (我的安全登入資料)。

3. 選擇 AWS CodeCommit credentials (AWS CodeCommit 登入資料) 索引標籤。

API 版本 2015-04-135

Page 14: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南使用 Git 登入資料來設定

使用 Git 登入資料來設定HTTPS 連線和 Git 登入資料可讓您在 IAM 中產生靜態的使用者名稱和密碼。然後,您會將這些登入資料用於 Git,以及任何支援 Git 使用者名稱和密碼身份驗證的第三方工具。大部分 IDE 和開發工具都支援此方法。這是搭配 CodeCommit 一起使用的最簡單又最輕鬆的連線方法。

• 適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7):按照這些指示,使用 Git 登入資料來設定本機電腦和 CodeCommit 儲存庫之間的連線。

• 從開發工具連接 (p. 10):按照這些準則,使用 Git 登入資料來設定 IDE 或其他開發工具與 CodeCommit 儲存庫之間的連線。支援 Git 登入資料的 IDE 包括 (但不限於) VisualStudio、Eclipse、Xcode 和 IntelliJ。

使用其他方法來設定您可以使用 SSH 通訊協定 (而不是 HTTPS) 連接到您的 CodeCommit 儲存庫。使用 SSH 連接,您可以在本機電腦上建立 Git 和 CodeCommit 用於 SSH 身分驗證的公有和私有金鑰檔案。您需要將公有金鑰與 IAM 使用者相關聯。您需要將私有金鑰存放在本機電腦。由於 SSH 需要您手動建立和管理公有和私有金鑰檔案,您可能會發現 Git 登入資料和 CodeCommit 一起使用時很簡單又輕鬆。

與 Git 登入資料不同,根據本機電腦的作業系統而定,SSH 連線設定會有所不同。

• 適用於不使用 AWS CLI 的 SSH 使用者 (p. 23):如果您已具備公有私有金鑰對,且熟悉在本機電腦上使用 SSH 連線,請遵循這些簡短指示。

• 適用於 Linux, macOS, or Unix 上的 SSH 連線 (p. 25):依照這些指示,在 Linux, macOS, or Unix 作業系統上逐步建立公有私有金鑰對和設定連線。

• 適用於 Windows 上的 SSH 連線 (p. 29):依照這些指示,在 Windows 作業系統上逐步建立公有私有金鑰對和設定連線。

如果您使用聯合身分存取或臨時登入資料來連接到 CodeCommit 和 AWS,或不想設定 IAM 使用者,則可以使用 AWS CLI 包含的登入資料協助程式來設定 CodeCommit 儲存庫的連線。每當 Git 需要向 AWS 驗證才能與 CodeCommit 儲存庫互動時,登入資料協助程式可讓 Git 使用 HTTPS 和密碼編譯簽章版本的 IAM 使用者登入資料或 Amazon EC2 執行個體角色。對於不需要 IAM 使用者的 CodeCommit 儲存庫,這是唯一的連線方法,也是唯一支援聯合身分存取和臨時登入資料的方法。 有些作業系統和 Git 版本有自己的登入資料協助程式,但會與 AWS CLI 包含的登入資料協助程式發生衝突。結果導致 CodeCommit 發生連線問題。為了讓您易於使用,請考慮建立 IAM 使用者,並以 HTTPS 連線來設定 Git 登入資料,而不要使用登入資料協助程式。

• 適用於 Linux, macOS, or Unix 上使用 AWS CLI 登入資料協助程式來建立 HTTPS 連線 (p. 33):依照這些指示,在 Linux, macOS, or Unix 系統上逐步安裝和設定登入資料協助程式。

• 適用於 Windows 上使用 AWS CLI 登入資料協助程式的 HTTPS 連線 (p. 37):依照這些指示,在Windows 系統上逐步安裝和設定登入資料協助程式。

如果您要連接到另一個 CodeCommit 帳戶中託管的 AWS 儲存庫,您可以使用角色、政策及 AWS CLI 包含的登入資料協助程式來設定存取和設定連線。

• 設定 AWS CodeCommit 儲存庫的跨帳戶存取 (p. 120):依照這些逐步指示,將 AWS 帳戶中的跨帳戶存取設定給另一個 IAM 帳戶的 AWS 群組中的使用者。

CodeCommit、Git 和其他元件的相容性使用 CodeCommit 時,您會使用 Git。您也可以使用其他程式。下表提供關於版本相容性的最新指導。

API 版本 2015-04-136

Page 15: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南適用於使用 Git 登入資料的 HTTPS 使用者

適用於 AWS CodeCommit 的版本相容性資訊

元件 版本

Git CodeCommit 支援 Git 1.7.9 版和更新版本。

Curl CodeCommit 需要 curl 7.33 版和更新版本。 不過,HTTPS 和 curl 更新 7.41.0 有一個已知問題。如需更多詳細資訊,請參閱 故障診斷 (p. 239)。

使用 Git 登入資料的 HTTPS 使用者設定設定連線至 AWS CodeCommit 儲存庫最簡單的方法是在 IAM 主控台設定 CodeCommit 的 Git 登入資料,然後將這些登入資料用於 HTTPS 連線。對於支援以靜態使用者名稱和密碼進行 HTTPS 身份驗證的任何第三方工具或個人開發環境 (IDE),您也可以使用這些相同的登入資料。如需範例,請參閱「從開發工具連接 (p. 10)」。

Note

如果您之前已設定本機電腦來使用登入資料協助程式搭配 CodeCommit,則必須編輯 .gitconfig 檔案,從檔案中移除登入資料協助程式資訊,才能使用 Git 登入資料。如果本機電腦上執行 macOS,您可能需要從 Keychain Access 中清除快取的登入資料。

步驟 1:CodeCommit 的初始組態依照這些步驟來設定 AWS 帳戶、建立 IAM 使用者,以及設定對 CodeCommit 的存取。

建立和設定 IAM 使用者以存取 CodeCommit

1. 移至 http://aws.amazon.com 並選擇 Sign Up (註冊),以建立 AWS 帳戶。2. 在您的 AWS 帳戶中,建立 IAM 使用者或使用現有的使用者。請確定您具有與該 IAM 使用者相關聯的存

取金鑰 ID 和私密存取金鑰。如需詳細資訊,請參閱在 AWS 帳戶中建立 IAM 使用者。Note

CodeCommit 需要 AWS Key Management Service。如果您使用現有的 IAM 使用者,請確定連接到使用者的政策沒有明確拒絕 CodeCommit 所需的 AWS KMS 動作。如需更多詳細資訊,請參閱 AWS KMS 和加密 (p. 302)。

3. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

4. 在 IAM 主控台的導覽窗格中,選擇 Users (使用者),然後選擇您要設定用於存取 CodeCommit 的 IAM使用者。

5. 在 Permissions (許可) 標籤上,選擇 Add Permissions (新增許可)。6. 在 Grant permissions (授予許可) 中,選擇 Attach existing policies directly (直接連接現有政策)。7. 從政策清單中,選取 AWSCodeCommitFullAccess,或另一個用於存取 CodeCommit 的受管政策。如需

詳細資訊,請參閱 CodeCommit 的 AWS 受管 (預先定義) 政策 (p. 262)。

選取您要連接的政策之後,選擇 Next: Review (下一步:檢閱),以檢閱將連接到 IAM 使用者的政策清單。如果清單正確,請選擇 Add permissions (新增許可)。

如需有關 CodeCommit 受管政策及分享儲存庫存取權給其他群組和使用者的詳細資訊,請參閱共用儲存庫 (p. 79)和 AWS CodeCommit 的身份驗證與存取控制 (p. 254)。

如果您想要使用 AWS CLI 命令來搭配 CodeCommit,請安裝 AWS CLI。如需詳細資訊,請參閱 命令列參考 (p. 308)。

API 版本 2015-04-137

Page 16: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 2:安裝 Git

步驟 2:安裝 Git要使用 CodeCommit 儲存庫中的檔案、認可和其他資訊,您必須在本機電腦上安裝 Git。CodeCommit 支援Git 1.7.9 版和更新版本。

要安裝 Git,建議可使用 Git Downloads 等網站。

Note

Git 是一種持續演進且定期更新的平台。有時,一項功能的改變,可能會影響此功能與 CodeCommit運作的方式。如果您在特定版本的 Git 和 CodeCommit 遇到問題,請查看 故障診斷 (p. 239) 的資訊。

步驟 3:為 CodeCommit 的 HTTPS 連線建立 Git 登入資料安裝 Git 之後,在 IAM 中為 IAM 使用者建立 Git 登入資料。如需詳細資訊,請參閱《IAM 使用者指南》中的對 AWS CodeCommit 使用 Git 登入資料和 HTTPS。

設定 CodeCommit 的 HTTPS Git 登入資料

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

請務必以將會建立和使用 Git 登入資料來連接到 CodeCommit 的 IAM 使用者身分登入。2. 在 IAM 主控台的導覽窗格中,選擇 Users (使用者),然後從使用者清單中,選擇您的 IAM 使用者。

Note

您可以在 My Security Credentials (我的安全登入資料) 中直接檢視和管理您的 CodeCommit 登入資料。如需詳細資訊,請參閱檢視和管理您的登入資料 (p. 5)。

3. 在使用者詳細資訊頁面,選擇 Security Credentials (安全登入資料) 標籤,而在 HTTPS Git credentialsfor AWS CodeCommit (的 HTTPS Git 登入資料) 中,選擇 Generate (產生)。

Note

您無法為 Git 登入資料選擇自己的使用者名稱或密碼。如需詳細資訊,請參閱對 CodeCommit使用 Git 登入資料和 HTTPS。

API 版本 2015-04-138

Page 17: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:連接到 CodeCommit 主控台和複製儲存庫

4. 複製 IAM 為您產生的使用者名稱和密碼,做法是將此資訊顯示、複製並貼到本機電腦上的安全檔案,或是選擇 Download credentials (下載登入資料),以 .CSV 檔案的形式下載此資訊。您需要此資訊才能連接至 CodeCommit。

儲存您的登入資料之後,選擇 Close (關閉)。

Important

這是您儲存使用者名稱和密碼的唯一機會。如果不儲存,您可以從 IAM 主控台複製使用者名稱,但無法查詢密碼。您必須重設密碼,然後儲存密碼。

步驟 4:連接到 CodeCommit 主控台和複製儲存庫如果管理員已將 CodeCommit 儲存庫的名稱和連線詳細資訊傳送給您,則您可以略過此步驟,並直接複製儲存庫。

連接到 CodeCommit 儲存庫

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇已建立儲存庫的 AWS 區域。儲存庫為 AWS 區域特有的。如需更多詳細資訊,

請參閱 區域和 Git 連線端點 (p. 289)。3. 選擇您要從清單連接的儲存庫。這會開啟開儲存庫的 Code (程式碼) 頁面。

如果您看見的是 Welcome (歡迎) 頁面而不是儲存庫清單,這表示沒有與您 AWS 帳戶關聯的儲存庫。要建立儲存庫,請參閱 the section called “建立儲存庫” (p. 75) 或依照 Git 與 CodeCommit 教學 (p. 58) 教學課程中的步驟。

4. 選擇 Connect (連線)。檢閱指示並複製連接到儲存庫時所使用的 URL。5. 開啟終端機、命令列或 Git shell。使用您已複製的 HTTPS URL,執行 git clone 命令來複製儲存庫。例

如,若要將名為 MyDemoRepo 的儲存庫,複製到US East (Ohio) 區域中名為 my-demo-repo 的本機儲存庫:

git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

API 版本 2015-04-139

Page 18: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南後續步驟

第一次連接時,系統會提示您提供儲存庫的使用者名稱和密碼。根據本機電腦的組態而定,此提示可能來自於作業系統的登入資料管理系統 (例如,Keychain Access for macOS)、您的 Git 版本適用的登入資料管理員公用程式 (例如,Git for Windows 包含的 Git Credential Manager)、您的 IDE,或 Git 本身。輸入 IAM 中為 Git 登入資料所產生的使用者名稱和密碼 (即您在步驟 3:為 CodeCommit 的 HTTPS 連線建立 Git 登入資料 (p. 8)中建立的 Git 登入資料)。根據您的作業系統和其他軟體而定,此資訊可能儲存在登入資料存放區或登入資料管理公用程式中。若是如此,系統應該就不會再次提示您,除非您在IAM 中變更密碼、停用 Git 登入資料,或刪除 Git 登入資料。

如果本機電腦上沒有設定登入資料存放區或登入資料管理公用程式,您可以安裝此工具。如需 Git 和如何管理登入資料的詳細資訊,請參閱 Git 文件中的登入資料儲存。

如需更多詳細資訊,請參閱 透過複製儲存庫連接到 CodeCommit 儲存庫 (p. 78) 及 建立遞交 (p. 171)。

後續步驟您已完成事前準備。依照 CodeCommit 教學 (p. 42) 中的步驟開始使用 CodeCommit。

從開發工具使用 Git 登入資料設定連線在 IAM 主控台設定 AWS CodeCommit 的 Git 登入資料之後,您可以將這些登入資料用於任何支援 Git 登入資料的開發工具。例如,您可以設定在 AWS Cloud9、Visual Studio、Eclipse、Xcode IntelliJ 或任何已整合Git 登入資料的整合開發環境 (IDE) 中對 CodeCommit 儲存庫的存取權。在您設定存取權之後,您可以直接從 IDE 或其他開發工具中編輯程式碼、遞交變更及推送。

主題• 將 AWS Cloud9 與 AWS CodeCommit 整合 (p. 13)• 將 Visual Studio 與 AWS CodeCommit 整合 (p. 16)• Eclipse 與 AWS CodeCommit 整合 (p. 19)

當 IDE 或開發工具提示您輸入用於連接到 CodeCommit 儲存庫的使用者名稱和密碼時,請為 Git 登入資料提供您在 IAM 中建立的 User name (使用者名稱) 和 Password (密碼)。例如,如果 Eclipse 中提示您輸入使用者名稱和密碼,請如下所示提供 Git 登入資料:

如需有關 CodeCommit 的 AWS 區域和端點的詳細資訊,請參閱區域和 Git 連線端點 (p. 289)。

您的作業系統也可能提示您存放使用者名稱和密碼。例如,在 Windows 中,您需要如下所示提供 Git 登入資料:

API 版本 2015-04-1310

Page 19: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南從開發工具連接

如需有關為特定軟體程式或開發工具來設定 Git 登入資料的資訊,請參閱產品文件。

下面是不全面的 IDE 列表。提供的連結只是為了協助您進一步了解這些工具。對於任何這些主題的內容,AWS 概不負責。

• AWS Cloud9 (p. 13)

• Visual Studio

或者,安裝 AWS Toolkit for Visual Studio。如需詳細資訊,請參閱將 Visual Studio 與 AWS CodeCommit整合 (p. 16)。

API 版本 2015-04-1311

Page 20: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南從開發工具連接

• EGit with Eclipse

或者,安裝 AWS Toolkit for Eclipse。如需更多詳細資訊,請參閱 Eclipse 與 AWS CodeCommit 整合 (p. 19)。

• IntelliJ

API 版本 2015-04-1312

Page 21: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將 AWS Cloud9 與 AWS CodeCommit 整合

• XCode

將 AWS Cloud9 與 AWS CodeCommit 整合您可以使用 AWS Cloud9 在 CodeCommit 儲存庫中變更程式碼。AWS Cloud9 包含一組工具,可用來撰寫程式碼,以及建置、執行、測試、偵錯和發行軟體。您可以複製現有的儲存庫、建立儲存庫、將程式碼變更遞交並推送至儲存庫等等,一切都在 AWS Cloud9 EC2 開發環境內完成。AWS Cloud9 EC2 開發環境通常已預先設定 AWS CLI、Amazon EC2 角色和 Git,所以在大多數情況下,您只要執行幾個簡單的命令,就能開始與儲存庫互動。

若要使用 AWS Cloud9 搭配 CodeCommit,您需要下列項目:

• Amazon Linux 上執行的 AWS Cloud9 EC2 開發環境。• Web 瀏覽器中開啟的 AWS Cloud9 IDE 首頁。• 已套用其中一個 CodeCommit 受管政策和其中一個 AWS Cloud9 受管政策的 IAM 使用者。

如需詳細資訊,請參閱CodeCommit 的 AWS 受管 (預先定義) 政策 (p. 262)和了解和取得您的安全登入資料。

主題• 步驟 1:建立 AWS Cloud9 開發環境 (p. 13)• 步驟 2:在 AWS Cloud9 EC2 開發環境上設定 AWS CLI 登入資料協助程式 (p. 15)• 步驟 3:將 CodeCommit 儲存庫複製到 AWS Cloud9 EC2 開發環境 (p. 15)• 後續步驟 (p. 16)

步驟 1:建立 AWS Cloud9 開發環境AWS Cloud9 會在 Amazon EC2 執行個體上託管您的開發環境。這是最簡單的整合方式,因為您可以使用執行個體的 AWS 受管臨時登入資料來連接到 CodeCommit 儲存庫。如果您想改用自己的伺服器,請參閱AWS Cloud9 User Guide。

建立 AWS Cloud9 環境

1. 以您已設定的 IAM 使用者身分登入 AWS,並開啟 AWS Cloud9 主控台。2. 在 AWS Cloud9 主控台,選擇 Create environment (建立環境)。

API 版本 2015-04-1313

Page 22: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將 AWS Cloud9 與 AWS CodeCommit 整合

3. 在 Step 1: Name environment (步驟 1:命名環境) 中,輸入環境的名稱和選用描述,然後選擇 Nextstep (下一步驟)。

4. 在 Step 2: Configure Settings (步驟 2:進行設定) 中設定環境,如下所示:

• 在 Environment type (環境類型) 中,選擇 Create a new instance for environment (EC2) (為環境建立新的執行個體 (EC2))。

• 在 Instance type (執行個體類型) 中,為您的開發環境選擇適當的執行個體類型。例如,如果您只是探索服務,您可以選擇預設值 t2.micro。如果您想要將此環境用於開發工作,請選擇較大的執行個體類型。

• 接受其他預設設定,除非您有理由需要另外選擇 (例如,您的組織使用特定的 VPC,或您的 AWS 帳戶沒有設定任何 VPC),然後選擇 Next Step (下一步驟)。

5. 在 Step 3: Review (步驟 3:檢閱) 中,檢閱您的設定。如需進行任何變更,請選擇 Previous step (上一步)。否則,請選擇 Create environment (建立環境)。

建立環境後,首次連接此環境需要幾分鐘的時間。如果所花的時間太長,請參閱 AWS Cloud9 使用者指南中的故障診斷。

6. 連接到環境後,請在終端機視窗執行 git --version 命令,以檢查 Git 是否已安裝,而且是支援的版本。

如果 Git 未安裝或不是支援的版本,請安裝支援的版本。CodeCommit 支援 Git 1.7.9 版和更新版本。 若要安裝 Git,建議前往 Git Downloads 之類的網站。

Tip

根據環境的作業系統而定,您或許可以使用 yum 命令搭配 sudo 選項來安裝更新,包括 Git。例如,管理命令序列可能類似於下列三個命令:

sudo yum -y updatesudo yum -y install gitgit --version

7. 執行 git config 命令,以設定要與 Git 遞交相關聯的使用者名稱和電子郵件。例如:

git config --global user.name "Mary Major" git config --global user.email [email protected]

API 版本 2015-04-1314

Page 23: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將 AWS Cloud9 與 AWS CodeCommit 整合

步驟 2:在 AWS Cloud9 EC2 開發環境上設定 AWS CLI 登入資料協助程式建立 AWS Cloud9 環境之後,您可以設定 AWS CLI 登入資料協助程式,以管理 CodeCommit 儲存庫連線的登入資料。AWS Cloud9 開發環境提供與 IAM 使用者相關聯的 AWS 受管臨時登入資料。您會透過 AWS CLI登入資料協助程式來使用這些登入資料。

1. 開啟終端機視窗,並執行下列命令來驗證 AWS CLI 已安裝:

aws --version

如果成功,這個命令會傳回目前已安裝的 AWS CLI 版本。若要將舊版的 AWS CLI 升級為最新版本,請參閱安裝 AWS Command Line Interface。

2. 在終端機,執行下列命令來設定 AWS CLI 登入資料協助程式,以使用 HTTPS 連線:

git config --global credential.helper '!aws codecommit credential-helper $@'git config --global credential.UseHttpPath true

Tip

登入資料協助程式會將預設的 Amazon EC2 執行個體角色用於您的開發環境。如果您想要使用開發環境來連接的儲存庫託管位置不是在 CodeCommit 中,請對這些儲存庫設定 SSH 連線,或將本機 .gitconfig 檔案設定為在連接到其他儲存庫時使用另一種登入資料管理系統。如需詳細資訊,請參閱 Git 網站上的 Git Tools - Credential Storage。

步驟 3:將 CodeCommit 儲存庫複製到 AWS Cloud9 EC2 開發環境當您設定 AWS CLI 登入資料協助程式後,就可以將 CodeCommit 儲存庫複製到其中。然後,您就可以開始使用程式碼。

1. 在終端機,執行 git clone 命令,並針對您想要複製的儲存庫,指定其 HTTPS 複製 URL。例如,如果您想要複製在US East (Ohio) 區域中名為 MyDemoRepo 的儲存庫,請輸入:

git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo

Tip

在 CodeCommit 主控台,包括在 Repositories (儲存庫) 和在儲存庫的 Code (程式碼) 頁面上的Clone URL (複製 URL) 中,您都可以找到儲存庫的「複製 URL」。

2. 當複製完成時,在側邊導覽中展開儲存庫的資料夾,然後選擇您要開啟來編輯的檔案。或者,選擇 File(檔案),然後選擇 New File (新增檔案) 以建立檔案。

3. 完成編輯或建立檔案時,請在終端機視窗中,切換到已複製的儲存庫所在的目錄,然後遞交並推送您的變更。例如,如果您新增的檔案名為 MyFile.py:

cd MyDemoRepogit commit -a MyFile.pygit commit -m "Added a new file with some code improvements"git push

API 版本 2015-04-1315

Page 24: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將 Visual Studio 與 AWS CodeCommit 整合

後續步驟如需詳細資訊,請參閱《AWS Cloud9 使用者指南》。如需有關使用 Git 搭配 CodeCommit 的詳細資訊,請參閱 Git 與 AWS CodeCommit 教學 (p. 58)。

將 Visual Studio 與 AWS CodeCommit 整合您可以使用 Visual Studio 在 CodeCommit 儲存庫中變更程式碼。AWS Toolkit for Visual Studio 現在包含的功能可讓您在 Visual Studio Team Explorer 中工作時,更輕鬆又方便地使用 CodeCommit。Toolkit forVisual Studio 整合旨在搭配 Git 登入資料和 IAM 使用者一起使用。您可以複製現有的儲存庫、建立儲存庫、將程式碼變更遞交並推送至儲存庫等等。

Important

Toolkit for Visual Studio 只能安裝在 Windows 作業系統上。

如果您以前用過 Toolkit for Visual Studio,則可能已熟悉 AWS 登入資料描述檔的設定,其中包含存取金鑰和私密金鑰。Toolkit for Visual Studio 中使用登入資料描述檔來支援呼叫 AWS 服務 API (例如,呼叫 AmazonS3 以列出儲存貯體,或呼叫 CodeCommit 以列出儲存庫)。若要將程式碼提取和推送至 CodeCommit 儲存庫,您也需要 Git 登入資料。如果您沒有 Git 登入資料,Toolkit for Visual Studio 可以為您產生並套用這些登入資料。這可以節省許多時間。

若要使用 Visual Studio 搭配 CodeCommit,您需要下列項目:

• 已設定一組有效登入資料 (存取金鑰和私密金鑰) 的 IAM 使用者。這個 IAM 使用者也應該:

已套用其中一個 CodeCommit 受管政策和 IAMSelfManageServiceSpecificCredentials 受管政策。

或是

如果 IAM 使用者已設定 Git 登入資料,則也會有其中一個 CodeCommit 受管政策或同等的許可。

如需詳細資訊,請參閱CodeCommit 的 AWS 受管 (預先定義) 政策 (p. 262)和了解和取得您的安全登入資料。

• 在您已安裝 Visual Studio 的電腦上安裝的 AWS Toolkit for Visual Studio。如需詳細資訊,請參閱設定AWS Toolkit for Visual Studio。

主題• 步驟 1:取得 IAM 使用者的存取金鑰和私密金鑰 (p. 16)• 步驟 2:安裝 AWS Toolkit for Visual Studio 和連接到 CodeCommit (p. 17)• 從 Visual Studio 複製 CodeCommit 儲存庫 (p. 18)• 從 Visual Studio 建立 CodeCommit 儲存庫 (p. 18)• 使用 CodeCommit 儲存庫 (p. 19)

步驟 1:取得 IAM 使用者的存取金鑰和私密金鑰如果您在已安裝 Visual Studio 的電腦上還沒有設定登入資料描述檔,您可以使用 AWS CLI 和 aws configure命令來設定登入資料描述檔。或者,您可以依照此程序中的步驟來建立和下載您的登入資料。在系統提示時提供給 Toolkit for Visual Studio。

Access keys consist of an access key ID and secret access key, which are used to sign programmaticrequests that you make to AWS. If you don't have access keys, you can create them from the AWSManagement Console. As a best practice, do not use the AWS account root user access keys for any taskwhere it's not required. Instead, create a new administrator IAM user with access keys for yourself.

API 版本 2015-04-1316

Page 25: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將 Visual Studio 與 AWS CodeCommit 整合

The only time that you can view or download the secret access key is when you create the keys. Youcannot recover them later. However, you can create new access keys at any time. You must also havepermissions to perform the required IAM actions. For more information, see Permissions Required toAccess IAM Resources in the IAM User Guide.

To create access keys for an IAM user

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

2. In the navigation pane, choose Users.3. Choose the name of the user whose access keys you want to create, and then choose the Security

credentials tab.4. In the Access keys section, choose Create access key.5. To view the new access key pair, choose Show. You will not have access to the secret access key

again after this dialog box closes. Your credentials will look something like this:

• Access key ID: AKIAIOSFODNN7EXAMPLE• Secret access key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

6. To download the key pair, choose Download .csv file. Store the keys in a secure location. You will nothave access to the secret access key again after this dialog box closes.

Keep the keys confidential in order to protect your AWS account and never email them. Do not sharethem outside your organization, even if an inquiry appears to come from AWS or Amazon.com. No onewho legitimately represents Amazon will ever ask you for your secret key.

7. After you download the .csv file, choose Close. When you create an access key, the key pair is activeby default, and you can use the pair right away.

Related topics

• What Is IAM? in the IAM User Guide• AWS Security Credentials in AWS General Reference

步驟 2:安裝 AWS Toolkit for Visual Studio 和連接到CodeCommitToolkit for Visual Studio 是您可以新增至 Visual Studio 的軟體套件。安裝之後,您可以在 Visual Studio 中從Team Explorer 連接到 CodeCommit。

安裝 Toolkit for Visual Studio 及 AWS CodeCommit 模組並設定對專案儲存庫的存取權

1. 在本機電腦上安裝 Visual Studio (如果您尚未安裝支援的版本)。2. 下載並安裝 Toolkit for Visual Studio,然後將檔案儲存到本機資料夾或目錄。開啟該檔案來啟動安裝精

靈。當 Getting Started with AWS Toolkit for Visual Studio (AWS Toolkit for Visual Studio 入門) 頁面上提示您時,請輸入或匯入 AWS 登入資料 (存取金鑰和私密金鑰),然後選擇 Save and Close (儲存並關閉)。

3. 在 Visual Studio 中,開啟 Team Explorer。在託管服務提供者中,找到 AWS CodeCommit,然後選擇連線。

API 版本 2015-04-1317

Page 26: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將 Visual Studio 與 AWS CodeCommit 整合

4. 請執行下列其中一項:

• 如果您在電腦上只設定單一登入資料描述檔,Toolkit for Visual Studio 會自動套用此描述檔。無需採取任何動作。Team Explorer 中會出現 AWS CodeCommit 連線面板。

• 如果您的電腦上設定多個登入資料描述檔,則會提示您選擇想要使用的描述檔。選擇與用於連接到CodeCommit 儲存庫的 IAM 使用者相關聯的描述檔,然後選擇 OK (確定)。

• 如果您沒有設定描述檔,則會出現對話方塊,詢問您的 AWS 安全登入資料 (存取金鑰和私密金鑰)。輸入或匯入這些登入資料,然後選擇 OK (確定)。

以描述檔登入之後,AWS CodeCommit 連線面板會出現在 Team Explorer 中,並提供複製、建立或登出等選項。選擇 Clone (複製),將現有的 CodeCommit 儲存庫複製到本機電腦,讓您可以開始使用程式碼。這是最常用的選項。

如果您沒有儲存庫,或是想要建立儲存庫,請選擇 Create (建立)。如需詳細資訊,請參閱從 Visual Studio 建立 CodeCommit 儲存庫 (p. 18)。

從 Visual Studio 複製 CodeCommit 儲存庫在連接到 CodeCommit 之後,您可以將儲存庫複製到電腦上當做本機儲存庫。然後,您就可以開始使用程式碼。

1. 在 Manage Connections (管理連線) 中,選擇 Clone (複製)。在Region (區域)中,選擇 CodeCommit 中建立儲存庫的 AWS 區域。選擇專案的儲存庫,以及您要將儲存庫複製到本機電腦上的哪個資料夾,然後選擇 OK (確定)。

2. 如果提示您建立 Git 登入資料,請選擇 Yes (是)。工具組會嘗試替您建立登入資料。您的 IAM 使用者必須套用 IAMSelfManageServiceSpecificCredentials 或同等的許可。出現提示時,將登入資料檔案儲存在安全的位置。這是您必須儲存這些 Git 登入資料的唯一機會。

如果工具組無法替您建立 Git 登入資料,或您選擇 No (否),則您必須建立並提供自己的 Git 登入資料。如需詳細資訊,請參閱適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7),或依照線上指示。

3. 當您完成複製專案時,就可以開始在 Visual Studio 中編輯程式碼,並將變更遞交和推送到 CodeCommit中的專案儲存庫。

從 Visual Studio 建立 CodeCommit 儲存庫您可以從 Visual Studio 透過 Toolkit for Visual Studio 來建立 CodeCommit 儲存庫。建立儲存庫時,您也會將儲存庫複製到電腦上當做本機儲存庫,讓您立即開始使用儲存庫。

1. 在 Manage Connections (管理連線) 中,選擇 Create (建立)。2. 在 Region (區域) 中,選擇您要建立儲存庫的 AWS 區域。CodeCommit 儲存庫依 AWS 區域來組織。3. 在 Name (名稱) 中,輸入此儲存庫的名稱。儲存庫名稱在 AWS 帳戶內必須是唯一的。字元和長度有所

限制。如需詳細資訊,請參閱限制 (p. 297)。在 Description (描述) 中,輸入此儲存庫的選用描述。這有助於其他人了解儲存庫的用途,並協助與區域中的其他儲存庫有所區別。

4. 在 Clone into (複製到) 中,輸入或瀏覽到本機電腦上您要複製此儲存庫的資料夾或目錄。Visual Studio會自動複製已建立的儲存庫,並在您選擇的位置中建立本機儲存庫。

5. 對您的選擇感到滿意時,請選擇 OK (確定)。

API 版本 2015-04-1318

Page 27: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南Eclipse 與 AWS CodeCommit 整合

6. 如果收到提示,要求您建立 Git 登入資料,請選擇 Yes (是)。工具組會嘗試替您建立登入資料。您的IAM 使用者必須套用 IAMSelfManageServiceSpecificCredentials 或同等的許可。出現提示時,將登入資料檔案儲存在安全的位置。這是您必須儲存這些 Git 登入資料的唯一機會。

如果工具組無法替您建立 Git 登入資料,或您選擇 No (否),則您必須建立並提供自己的 Git 登入資料。如需詳細資訊,請參閱適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7),或依照線上指示。

使用 CodeCommit 儲存庫連接到 CodeCommit 之後,就可以看到與 AWS 帳戶相關聯的儲存庫清單。您可以在 Visual Studio 中瀏覽這些儲存庫的內容。開啟您有興趣的儲存庫的操作功能表,然後選擇 Browse in Console (在主控台瀏覽)。

Visual Studio 中適用於 CodeCommit 儲存庫的 Git 操作,完全同於其他任何以 Git 為基礎的儲存庫。您可以變更程式碼、新增檔案,以及建立本機遞交。當您準備要共用時,請使用 Team Explorer 中的 Sync (同步)選項,將遞交推送至 CodeCommit 儲存庫。由於 IAM 使用者的 Git 登入資料已存放在本機,而且與已連接的AWS 登入資料描述檔相關聯,所以當您推送至 CodeCommit 時,不會再次提示您提供登入資料。

如需有關使用 Toolkit for Visual Studio 的詳細資訊,請參閱 AWS Toolkit for Visual Studio User Guide。

Eclipse 與 AWS CodeCommit 整合您可以使用 Eclipse 在 CodeCommit 儲存庫中變更程式碼。Toolkit for Eclipse 整合旨在搭配 Git 登入資料和IAM 使用者一起使用。您可以複製現有的儲存庫、建立儲存庫、將程式碼變更遞交並推送至儲存庫等等。

若要使用 Toolkit for Eclipse 搭配 CodeCommit,您需要下列項目:

• 安裝在本機電腦的 Eclipse。• 已設定一組有效登入資料 (存取金鑰和私密金鑰) 的 IAM 使用者。這個 IAM 使用者也應該:

已套用其中一個 CodeCommit 受管政策和 IAMSelfManageServiceSpecificCredentials 受管政策。

或是

如果 IAM 使用者已設定 Git 登入資料,則也會有其中一個 CodeCommit 受管政策或同等的許可。

如需詳細資訊,請參閱CodeCommit 的 AWS 受管 (預先定義) 政策 (p. 262)和了解和取得您的安全登入資料。

• IAM 中為使用者設定的一組作用中的 Git 登入資料。如需詳細資訊,請參閱步驟 3:為 CodeCommit 的HTTPS 連線建立 Git 登入資料 (p. 8)。

主題• 步驟 1:取得 IAM 使用者的存取金鑰和私密金鑰 (p. 19)• 步驟 2:安裝 AWS Toolkit for Eclipse 和連接到 CodeCommit (p. 20)• 從 Eclipse 複製 CodeCommit 儲存庫 (p. 21)• 從 Eclipse 建立 CodeCommit 儲存庫 (p. 22)• 使用 CodeCommit 儲存庫 (p. 23)

步驟 1:取得 IAM 使用者的存取金鑰和私密金鑰如果您在已安裝 Eclipse 的電腦上尚未設定登入資料描述檔,您可以使用 AWS CLI 和 aws configure 命令來設定登入資料描述檔。或者,您可以依照此程序中的步驟來建立和下載您的登入資料。出現提示時,將登入資料提供給 Toolkit for Eclipse。

API 版本 2015-04-1319

Page 28: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南Eclipse 與 AWS CodeCommit 整合

Access keys consist of an access key ID and secret access key, which are used to sign programmaticrequests that you make to AWS. If you don't have access keys, you can create them from the AWSManagement Console. As a best practice, do not use the AWS account root user access keys for any taskwhere it's not required. Instead, create a new administrator IAM user with access keys for yourself.

The only time that you can view or download the secret access key is when you create the keys. Youcannot recover them later. However, you can create new access keys at any time. You must also havepermissions to perform the required IAM actions. For more information, see Permissions Required toAccess IAM Resources in the IAM User Guide.

To create access keys for an IAM user

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

2. In the navigation pane, choose Users.3. Choose the name of the user whose access keys you want to create, and then choose the Security

credentials tab.4. In the Access keys section, choose Create access key.5. To view the new access key pair, choose Show. You will not have access to the secret access key

again after this dialog box closes. Your credentials will look something like this:

• Access key ID: AKIAIOSFODNN7EXAMPLE• Secret access key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

6. To download the key pair, choose Download .csv file. Store the keys in a secure location. You will nothave access to the secret access key again after this dialog box closes.

Keep the keys confidential in order to protect your AWS account and never email them. Do not sharethem outside your organization, even if an inquiry appears to come from AWS or Amazon.com. No onewho legitimately represents Amazon will ever ask you for your secret key.

7. After you download the .csv file, choose Close. When you create an access key, the key pair is activeby default, and you can use the pair right away.

Related topics

• What Is IAM? in the IAM User Guide• AWS Security Credentials in AWS General Reference

步驟 2:安裝 AWS Toolkit for Eclipse 和連接到 CodeCommitToolkit for Eclipse 是您可以新增至 Eclipse 的軟體套件。安裝此工具並以 AWS 登入資料描述檔來設定之後,您就可以在 Eclipse 中從 AWS Explorer 連接到 CodeCommit。

安裝 Toolkit for Eclipse 及 AWS CodeCommit 模組並設定對專案儲存庫的存取權

1. 在本機電腦上安裝 Toolkit for Eclipse (如果您尚未安裝支援的版本)。如果您需要更新 Toolkit for Eclipse的版本,請按照設定工具組中的指示。

2. 在 Eclipse 中,請遵循首次執行體驗,或從 Eclipse 功能表系統中開啟 Preferences (偏好設定) (位置依據您的版本和作業系統而不同),然後選擇 AWS Toolkit (AWS 工具組)。

3. 請執行下列其中一項:

• 如果您是遵循首次執行體驗,在系統提示您時設定登入資料描述檔時,請提供您的 AWS 安全登入資料。

• 如果您在 Preferences (偏好設定)中設定,且電腦上已設定登入資料描述檔,請從 Default Profile (預設描述檔) 中選擇此描述檔。

API 版本 2015-04-1320

Page 29: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南Eclipse 與 AWS CodeCommit 整合

• 如果您在 Preferences (偏好設定) 中設定,但沒看到您想要使用的描述檔,或清單是空的,請選擇Add profile (新增設定檔)。在 Profile Details (設定檔詳細資訊) 中,輸入描述檔的名稱和 IAM 使用者的登入資料 (存取金鑰和私密金鑰),或者輸入登入資料檔案的位置。

• 如果您在 Preferences (偏好設定) 中設定,且您尚未設定描述檔,請使用連結來註冊帳戶或管理現有的 AWS 安全登入資料。

4. 在 Eclipse 中,展開 AWS Toolkit (AWS 工具組) 功能表,然後選擇 AWS CodeCommit (AWSCodeCommit)。選擇您的登入資料描述檔,然後輸入 Git 登入資料的使用者名稱和密碼,或從 .csv 檔案匯入 Git 登入資料。選擇 Apply (套用),然後選擇 OK (確定)。

以描述檔登入之後,AWS CodeCommit 連線面板會出現在 Team Explorer 中,並提供複製、建立或登出等選項。選擇 Clone (複製),將現有的 CodeCommit 儲存庫複製到本機電腦,讓您可以開始使用程式碼。這是最常用的選項。

如果您沒有任何儲存庫,或是想要建立儲存庫,請選擇 Create (建立)。

從 Eclipse 複製 CodeCommit 儲存庫設定您的登入資料之後,您可以在 Eclipse 中簽出儲存庫,將此儲存庫複製到電腦上當做本機儲存庫。然後,您就可以開始使用程式碼。

1. 在 Eclipse 中,開啟 AWS Explorer (AWS Explorer)。如需其位於何處的相關資訊,請參閱如何存取AWS Explorer。展開 AWS CodeCommit,然後選擇您想要使用的 CodeCommit 儲存庫。您可以檢視儲存庫的遞交歷史記錄和其他詳細資訊,以協助您判斷這是否為您要複製的儲存庫和分支。

Note

如果沒有看到您的儲存庫,請選擇旗標圖示以開啟 AWS 區域功能表,然後選擇已建立該儲存庫的 AWS 區域。

API 版本 2015-04-1321

Page 30: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南Eclipse 與 AWS CodeCommit 整合

2. 選擇 Check out (簽出),然後依照指示將儲存庫複製到本機電腦上。3. 當您完成複製專案時,就可以開始在 Eclipse 中編輯程式碼,並將變更暫存、遞交和推送到

CodeCommit 中的專案儲存庫。

從 Eclipse 建立 CodeCommit 儲存庫您可以從 Eclipse 透過 Toolkit for Eclipse 來建立 CodeCommit 儲存庫。建立儲存庫時,您也會將儲存庫複製到電腦上當做本機儲存庫,讓您立即開始使用儲存庫。

1. 在 AWS Explorer 中的 Amazon CodeCommit 上按一下右鍵,然後選擇 Create repository (建立儲存庫)。

Note

儲存庫專屬於特定區域。建立儲存庫之前,請確定您已選取正確的 AWS 區域。儲存庫建立程序開始之後,就不能選擇 AWS 區域。

API 版本 2015-04-1322

Page 31: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南適用於不使用 AWS CLI 的 SSH 使用者

2. 在 Repository Name (儲存庫名稱) 中,輸入此儲存庫的名稱。儲存庫名稱在 AWS 帳戶內必須是唯一的。字元和長度有所限制。如需詳細資訊,請參閱限制 (p. 297)。在 Repository Description (儲存庫描述) 中,輸入此儲存庫的選用描述。這有助於其他人了解此儲存庫的用途,並協助與區域中的其他儲存庫有所區別。選擇 OK (確定)。

3. 在 AWS Explorer 中,展開 AWS CodeCommit,然後選擇您剛建立的 CodeCommit 儲存庫。您會看到此儲存庫沒有遞交歷史記錄。選擇 Check out (簽出),然後依照指示將儲存庫複製到本機電腦上。

使用 CodeCommit 儲存庫連接到 CodeCommit 之後,就可以在 AWS Explorer 中,依 AWS 區域看到與帳戶相關聯的儲存庫清單。選擇旗標功能表來變更區域。

Note

在 Toolkit for Eclipse 支援的所有 AWS 區域中,不一定都可使用 CodeCommit。

在 Toolkit for Eclipse 中,您可以從 Navigation (導覽) 和 Package Explorer (套件瀏覽器) 檢視中瀏覽這些儲存庫的內容。若要開啟檔案,請從清單中選擇檔案。

Toolkit for Eclipse 中適用於 CodeCommit 儲存庫的 Git 操作,完全同於其他任何以 Git 為基礎的儲存庫。您可以變更程式碼、新增檔案,以及建立本機遞交。當您準備要共享時,請使用 Git Staging (Git 暫存) 選項,將遞交推送至 CodeCommit 儲存庫。如果您在 Git 描述檔中尚未設定作者和遞交者資訊,您可以在遞交和推送之前這樣做。由於 IAM 使用者的 Git 登入資料已存放在本機,而且與已連接的 AWS 登入資料描述檔相關聯,所以當您推送至 CodeCommit 時,不會再次提示您提供登入資料。

如需有關使用 Toolkit for Eclipse 的詳細資訊,請參閱 AWS Toolkit for Eclipse Getting Started Guide。

適用於不使用 AWS CLI 的 SSH 使用者的設定如果您想要對儲存庫使用 SSH 連線,您可以連接到 AWS CodeCommit,而無需安裝 AWS CLI。AWS CLI包含您使用和管理 CodeCommit 儲存庫時很有用的命令,但初始設定不需要使用此工具。

此主題假設:

• 您已設定 IAM 使用者且 CodeCommit 所需的政策或許可,以及上傳金鑰時所需的 IAMUserSSHKeys受管政策或同等許可。如需詳細資訊,請參閱 對 CodeCommit 使用以身分為基礎的政策 (IAM 政策) (p. 259)。

• 您已經具有 (或知道如何建立) 公有-私有金鑰對。強烈建議您對 SSH 金鑰使用安全的複雜密碼。• 您熟悉 SSH、Git 用戶端及其組態檔案。• 如果您使用 Windows,則您已安裝可模擬 bash shell 的命令列公用程式,例如 Git Bash。

如果您需要更多指導,請遵循 適用於 Linux, macOS, or Unix 上的 SSH 連線 (p. 25)或 適用於 Windows上的 SSH 連線 (p. 29)中的指示。

主題• 步驟 1:將公有金鑰與 IAM 使用者相關聯 (p. 23)• 步驟 2:將 CodeCommit 新增到 SSH 組態 (p. 24)• 後續步驟 (p. 25)

步驟 1:將公有金鑰與 IAM 使用者相關聯1. Sign in to the AWS Management Console and open the IAM console at https://

console.aws.amazon.com/iam/.

API 版本 2015-04-1323

Page 32: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 2:將 CodeCommit 新增到 SSH 組態

2. 在 IAM 主控台的導覽窗格中,選擇 Users (使用者),然後從使用者清單中,選擇您的 IAM 使用者。3. 在 Security Credentials (安全登入資料) 標籤上,選擇 Upload SSH public key (上傳 SSH 公有金鑰)。4. 將 SSH 公有金鑰的內容貼到欄位中,然後選擇 Upload SSH Key (上傳 SSH 金鑰)。

Tip

公有-私有金鑰對必須為 SSH-2 RSA、OpenSSH 格式,且包含 2048 位元。金鑰看起來如下:

ssh-rsa EXAMPLE-AfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDAS=EXAMPLE user-name@ip-192-0-2-137

IAM 只接受 OpenSSH 格式的公有金鑰。如果您提供其他格式的公有金鑰,則會看到錯誤訊息,指出金鑰格式無效。

5. 複製 SSH 金鑰 ID (例如,APKAEIBAERJR2EXAMPLE) 並關閉主控台。

步驟 2:將 CodeCommit 新增到 SSH 組態1. 在終端機 (Linux, macOS, or Unix) 或 bash 模擬器 (Windows) 中,輸入 cat>> ~/.ssh/config 來編輯 SSH

組態檔:

Host git-codecommit.*.amazonaws.comUser Your-SSH-Key-ID, such as APKAEIBAERJR2EXAMPLEIdentityFile Your-Private-Key-File, such as ~/.ssh/codecommit_rsa or ~/.ssh/id_rsa

Tip

如果您有多個 SSH 組態,請務必在內容前後包含空白行。同時按下 Ctrl 和 d 鍵來儲存檔案。

2. 執行下列命令以測試 SSH 組態:

ssh git-codecommit.us-east-2.amazonaws.com

出現提示時,為您的 SSH 金鑰檔案輸入複雜密碼。如果一切都設定正確,您應該會看到以下成功訊息:

You have successfully authenticated over SSH. You can use Git to interact with CodeCommit. Interactive shells are not supported. Connection to git-codecommit.us-east-2.amazonaws.com closed by remote host.

API 版本 2015-04-1324

Page 33: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南後續步驟

後續步驟您已完成事前準備。依照 CodeCommit 教學 (p. 42) 中的步驟開始使用 CodeCommit。

若要連接到儲存庫,請遵循連接到儲存庫 (p. 77)中的步驟。若要建立儲存庫,請遵循建立儲存庫 (p. 75)中的步驟。

在 Linux, macOS, or Unix 上對 AWS CodeCommit儲存庫建立 SSH 連線的設定步驟

第一次連接到 CodeCommit 之前,您必須先完成初始設定步驟。這個主題逐步帶領您設定電腦和 AWS 描述檔、連接到 CodeCommit 儲存庫,然後將該儲存庫複製到您的電腦 (也稱為建立本機儲存庫)。如果您是初次使用 Git,您可能還需要檢閱哪裡可以進一步了解 Git? (p. 4)中的資訊。

主題• 步驟 1:CodeCommit 的初始組態 (p. 25)• 步驟 2:安裝 Git (p. 26)• 步驟 3:在 Linux, macOS, or Unix 上設定登入資料 (p. 26)• 步驟 4:連接到 CodeCommit 主控台和複製儲存庫 (p. 28)• 後續步驟 (p. 29)

步驟 1:CodeCommit 的初始組態依照這些步驟來設定 AWS 帳戶、建立 IAM 使用者,以及設定對 CodeCommit 的存取。

建立和設定 IAM 使用者以存取 CodeCommit

1. 移至 http://aws.amazon.com 並選擇 Sign Up (註冊),以建立 AWS 帳戶。2. 在您的 AWS 帳戶中,建立 IAM 使用者或使用現有的使用者。請確定您具有與該 IAM 使用者相關聯的存

取金鑰 ID 和私密存取金鑰。如需詳細資訊,請參閱在 AWS 帳戶中建立 IAM 使用者。

Note

CodeCommit 需要 AWS Key Management Service。如果您使用現有的 IAM 使用者,請確定連接到使用者的政策沒有明確拒絕 CodeCommit 所需的 AWS KMS 動作。如需更多詳細資訊,請參閱 AWS KMS 和加密 (p. 302)。

3. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

4. 在 IAM 主控台的導覽窗格中,選擇 Users (使用者),然後選擇您要設定用於存取 CodeCommit 的 IAM使用者。

5. 在 Permissions (許可) 標籤上,選擇 Add Permissions (新增許可)。6. 在 Grant permissions (授予許可) 中,選擇 Attach existing policies directly (直接連接現有政策)。7. 從政策清單中,選取 AWSCodeCommitFullAccess,或另一個用於存取 CodeCommit 的受管政策。如需

詳細資訊,請參閱 CodeCommit 的 AWS 受管 (預先定義) 政策 (p. 262)。

選取您要連接的政策之後,選擇 Next: Review (下一步:檢閱),以檢閱將連接到 IAM 使用者的政策清單。如果清單正確,請選擇 Add permissions (新增許可)。

如需有關 CodeCommit 受管政策及分享儲存庫存取權給其他群組和使用者的詳細資訊,請參閱共用儲存庫 (p. 79)和 AWS CodeCommit 的身份驗證與存取控制 (p. 254)。

API 版本 2015-04-1325

Page 34: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 2:安裝 Git

Note

如果您想要使用 AWS CLI 命令來搭配 CodeCommit,請安裝 AWS CLI。如需詳細資訊,請參閱 命令列參考 (p. 308)。

步驟 2:安裝 Git要使用 CodeCommit 儲存庫中的檔案、認可和其他資訊,您必須在本機電腦上安裝 Git。CodeCommit 支援Git 1.7.9 版和更新版本。

要安裝 Git,建議可使用 Git Downloads 等網站。

Note

Git 是一種持續演進且定期更新的平台。有時,一項功能的改變,可能會影響此功能與 CodeCommit運作的方式。如果您在特定版本的 Git 和 CodeCommit 遇到問題,請查看 故障診斷 (p. 239) 的資訊。

步驟 3:在 Linux, macOS, or Unix 上設定登入資料SSH 和 Linux, macOS, or Unix:設定 Git 和 CodeCommit 的公有和私有金鑰1. 從本機電腦上的終端機,執行 ssh-keygen 命令,並依照指示將檔案儲存到描述檔的 .ssh 目錄。

Note

請務必向系統管理員詢問應該金鑰檔的存放位置,以及應該採用的檔案命名模式。

例如:

$ ssh-keygen

Generating public/private rsa key pair.Enter file in which to save the key (/home/user-name/.ssh/id_rsa): Type /home/your-user-name/.ssh/ and a file name here, for example /home/your-user-name/.ssh/codecommit_rsa

Enter passphrase (empty for no passphrase): <Type a passphrase, and then press Enter>Enter same passphrase again: <Type the passphrase again, and then press Enter>

Your identification has been saved in /home/user-name/.ssh/codecommit_rsa.Your public key has been saved in /home/user-name/.ssh/codecommit_rsa.pub.The key fingerprint is:45:63:d5:99:0e:99:73:50:5e:d4:b3:2d:86:4a:2c:14 user-name@client-nameThe key's randomart image is:+--[ RSA 2048]----+| E.+.o*.++|| .o .=.=o.|| . .. *. +|| ..o . +..|| So . . . || . || || || |+-----------------+

這會產生:

API 版本 2015-04-1326

Page 35: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 3:在 Linux, macOS, or Unix 上設定登入資料

• codecommit_rsa 檔案,這是私有金鑰檔案。• codecommit_rsa.pub 檔案,這是公有金鑰檔案。

2. 執行以下命令來顯示公有金鑰檔案 (codecommit_rsa.pub) 的值:

cat ~/.ssh/codecommit_rsa.pub

複製這個值。它看起來類似下列:

ssh-rsa EXAMPLE-AfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDAS=EXAMPLE user-name@ip-192-0-2-137

3. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

Note

您可以在 My Security Credentials (我的安全登入資料) 中直接檢視和管理您的 CodeCommit 登入資料。如需詳細資訊,請參閱檢視和管理您的登入資料 (p. 5)。

4. 在 IAM 主控台的導覽窗格中,選擇 Users (使用者),然後從使用者清單中,選擇您的 IAM 使用者。5. 在使用者詳細資訊頁面,選擇 Security Credentials (安全登入資料) 標籤,然後選擇 Upload SSH public

key (上傳 SSH 公有金鑰)。6. 將 SSH 公有金鑰的內容貼到欄位中,然後選擇 Upload SSH public key (上傳 SSH 公有金鑰)。7. 複製或儲存 SSH Key ID (SSH 金鑰 ID) 中的資訊 (例如,APKAEIBAERJR2EXAMPLE)。

Note

如果您已上傳一個以上的 SSH 金鑰 ID,則會依金鑰 ID 的字母順序列出金鑰,而非依上傳日期。請確定您已複製的金鑰 ID 與正確的上傳日期相關聯。

8. 在本機電腦上,使用文字編輯器在 ~/.ssh 目錄中建立組態檔,然後將下列幾行新增至檔案,其中 User的值是您稍早複製的 SSH 金鑰 ID:

Host git-codecommit.*.amazonaws.com User APKAEIBAERJR2EXAMPLE IdentityFile ~/.ssh/codecommit_rsa

Note

如果您將私有金鑰檔案命名為 codecommit_rsa 以外的名稱,請務必在此處使用該名稱。

儲存此檔案並命名為 config。9. 從終端機,執行下列命令來變更組態檔的許可:

chmod 600 config

10. 執行下列命令以測試 SSH 組態:API 版本 2015-04-1327

Page 36: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:連接到 CodeCommit 主控台和複製儲存庫

ssh git-codecommit.us-east-2.amazonaws.com

由於 git-codecommit.us-east-2.amazonaws.com 尚未包含於您的已知主機檔案中,所以系統會要求您確認連線。CodeCommit 伺服器指紋會顯示為驗證的一部分 (適用 MD5 的a9:6d:03:ed:08:42:21:be:06:e1:e0:2a:d1:75:31:5e 或適用 SHA256 的 3lBlW2g5xn/NA2Ck6dyeJIrQOWvn7n8UEs56fG6ZIzQ)。

Note

每個 AWS 區域的 CodeCommit 伺服器指紋都是獨一無二。若要檢視 AWS 區域的伺服器指紋,請參閱 適用於 CodeCommit 的伺服器指紋 (p. 293)。

確認連線之後,您應該會看到確認訊息,指出您已將伺服器新增到已知主機檔案,還會出現成功連線的訊息。如果您沒有看到成功訊息,請確認您已將 config 檔案儲存至您設定來存取 CodeCommit 的 IAM使用者的 ~/.ssh 目錄中,而且您已指定正確的私有金鑰檔案。

如需可協助您排除問題的相關資訊,請執行 ssh 命令並搭配 -v 參數:

ssh -v git-codecommit.us-east-2.amazonaws.com

如需資訊來協助您排除連線問題,請參閱故障診斷 (p. 239)。

步驟 4:連接到 CodeCommit 主控台和複製儲存庫如果管理員已將 CodeCommit 儲存庫的名稱和連線詳細資訊傳送給您,則您可以略過此步驟,並直接複製儲存庫。

連接到 CodeCommit 儲存庫

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇已建立儲存庫的 AWS 區域。儲存庫為 AWS 區域特有的。如需更多詳細資訊,

請參閱 區域和 Git 連線端點 (p. 289)。3. 選擇您要從清單連接的儲存庫。這會開啟開儲存庫的 Code (程式碼) 頁面。

如果您看見的是 Welcome (歡迎) 頁面而不是儲存庫清單,這表示沒有與您 AWS 帳戶關聯的儲存庫。要建立儲存庫,請參閱 the section called “建立儲存庫” (p. 75) 或依照 Git 與 CodeCommit 教學 (p. 58) 教學課程中的步驟。

4. 複製要用於連接到儲存庫的 SSH URL。5. 開啟終端機。從 /tmp 目錄,使用您複製的 SSH URL,執行 git clone 命令來複製儲存庫。例如,若要將

名為 MyDemoRepo 的儲存庫,複製到US East (Ohio) 區域中名為 my-demo-repo 的本機儲存庫:

git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

Note

如果您成功測試連線,但複製命令失敗,可能是您沒有組態檔的必要存取權,也可能是其他設定與您的組態檔發生衝突。嘗試重新連線,這次在命令中包含 SSH 金鑰 ID。例如:

git clone ssh://[email protected]/v1/repos/MyDemoRepo my-demo-repo

如需詳細資訊,請參閱存取錯誤:公有金鑰已成功上傳至 IAM,但 Linux, macOS, or Unix 系統上的連線失敗 (p. 240)。

API 版本 2015-04-1328

Page 37: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南後續步驟

如需有關如何連接到儲存庫的詳細資訊,請參閱透過複製儲存庫連接到 CodeCommit 儲存庫 (p. 78)。

後續步驟您已完成事前準備。依照 CodeCommit 教學 (p. 42) 中的步驟開始使用 CodeCommit。

在 Windows 上對 AWS CodeCommit 儲存庫建立SSH 連線的設定步驟

第一次連接到 AWS CodeCommit 之前,您必須先完成初始設定步驟。這個主題逐步帶領您設定電腦和 AWS描述檔、連接到 CodeCommit 儲存庫,然後將該儲存庫複製到您的電腦 (也稱為建立本機儲存庫)。如果您是初次使用 Git,您可能還需要檢閱哪裡可以進一步了解 Git? (p. 4)中的資訊。

主題• 步驟 1:CodeCommit 的初始組態 (p. 29)• 步驟 2:安裝 Git (p. 30)• SSH 和 Windows:設定 Git 和 CodeCommit 的公有和私有金鑰 (p. 30)• 步驟 4:連接到 CodeCommit 主控台和複製儲存庫 (p. 32)• 後續步驟 (p. 33)

步驟 1:CodeCommit 的初始組態依照這些步驟來設定 AWS 帳戶、建立 IAM 使用者,以及設定對 CodeCommit 的存取。

建立和設定 IAM 使用者以存取 CodeCommit

1. 移至 http://aws.amazon.com 並選擇 Sign Up (註冊),以建立 AWS 帳戶。2. 在您的 AWS 帳戶中,建立 IAM 使用者或使用現有的使用者。請確定您具有與該 IAM 使用者相關聯的存

取金鑰 ID 和私密存取金鑰。如需詳細資訊,請參閱在 AWS 帳戶中建立 IAM 使用者。

Note

CodeCommit 需要 AWS Key Management Service。如果您使用現有的 IAM 使用者,請確定連接到使用者的政策沒有明確拒絕 CodeCommit 所需的 AWS KMS 動作。如需更多詳細資訊,請參閱 AWS KMS 和加密 (p. 302)。

3. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

4. 在 IAM 主控台的導覽窗格中,選擇 Users (使用者),然後選擇您要設定用於存取 CodeCommit 的 IAM使用者。

5. 在 Permissions (許可) 標籤上,選擇 Add Permissions (新增許可)。6. 在 Grant permissions (授予許可) 中,選擇 Attach existing policies directly (直接連接現有政策)。7. 從政策清單中,選取 AWSCodeCommitFullAccess,或另一個用於存取 CodeCommit 的受管政策。如需

詳細資訊,請參閱 CodeCommit 的 AWS 受管 (預先定義) 政策 (p. 262)。

選取您要連接的政策之後,選擇 Next: Review (下一步:檢閱),以檢閱將連接到 IAM 使用者的政策清單。如果清單正確,請選擇 Add permissions (新增許可)。

API 版本 2015-04-1329

Page 38: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 2:安裝 Git

如需有關 CodeCommit 受管政策及分享儲存庫存取權給其他群組和使用者的詳細資訊,請參閱共用儲存庫 (p. 79)和 AWS CodeCommit 的身份驗證與存取控制 (p. 254)。

Note

如果您想要使用 AWS CLI 命令來搭配 CodeCommit,請安裝 AWS CLI。如需詳細資訊,請參閱 命令列參考 (p. 308)。

步驟 2:安裝 Git要使用 CodeCommit 儲存庫中的檔案、認可和其他資訊,您必須在本機電腦上安裝 Git。CodeCommit 支援Git 1.7.9 版和更新版本。

要安裝 Git,建議可使用 Git Downloads 等網站。

Note

Git 是一種持續演進且定期更新的平台。有時,一項功能的改變,可能會影響此功能與 CodeCommit運作的方式。如果您在特定版本的 Git 和 CodeCommit 遇到問題,請查看 故障診斷 (p. 239) 的資訊。

如果您安裝的 Git 版本不含 Bash 模擬器,例如 Git Bash,請安裝模擬器。當您設定 SSH 連線時,您將使用此模擬器,而不是 Windows 命令列。

SSH 和 Windows:設定 Git 和 CodeCommit 的公有和私有金鑰1. 開啟 Bash 模擬器。

Note

您可能需要以管理許可來執行模擬器。

從模擬器,執行 ssh-keygen 命令,並依照指示將檔案儲存到描述檔的 .ssh 目錄。

例如:

$ ssh-keygen

Generating public/private rsa key pair.Enter file in which to save the key (/drive/Users/user-name/.ssh/id_rsa): Type a file name here, for example /c/Users/user-name/.ssh/codecommit_rsa

Enter passphrase (empty for no passphrase): <Type a passphrase, and then press Enter>Enter same passphrase again: <Type the passphrase again, and then press Enter>

Your identification has been saved in drive/Users/user-name/.ssh/codecommit_rsa.Your public key has been saved in drive/Users/user-name/.ssh/codecommit_rsa.pub.The key fingerprint is:45:63:d5:99:0e:99:73:50:5e:d4:b3:2d:86:4a:2c:14 user-name@client-nameThe key's randomart image is:+--[ RSA 2048]----+| E.+.o*.++|| .o .=.=o.|| . .. *. +|| ..o . +..|| So . . . |

API 版本 2015-04-1330

Page 39: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南SSH 和 Windows:設定 Git 和

CodeCommit 的公有和私有金鑰

| . || || || |+-----------------+

這會產生:

• codecommit_rsa 檔案,這是私有金鑰檔案。• codecommit_rsa.pub 檔案,這是公有金鑰檔案。

2. 執行以下命令來顯示公有金鑰檔案 (codecommit_rsa.pub) 的值:

cd .sshnotepad codecommit_rsa.pub

複製檔案的內容,然後關閉「記事本」但不儲存。檔案的內容類似如下:

ssh-rsa EXAMPLE-AfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDAS=EXAMPLE user-name@computer-name

3. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

Note

您可以在 My Security Credentials (我的安全登入資料) 中直接檢視和管理您的 CodeCommit 登入資料。如需詳細資訊,請參閱檢視和管理您的登入資料 (p. 5)。

4. 在 IAM 主控台的導覽窗格中,選擇 Users (使用者),然後從使用者清單中,選擇您的 IAM 使用者。5. 在使用者詳細資訊頁面,選擇 Security Credentials (安全登入資料) 標籤,然後選擇 Upload SSH public

key (上傳 SSH 公有金鑰)。6. 將 SSH 公有金鑰的內容貼到欄位中,然後選擇 Upload SSH public key (上傳 SSH 公有金鑰)。7. 複製或儲存 SSH Key ID (SSH 金鑰 ID) 中的資訊 (例如,APKAEIBAERJR2EXAMPLE)。

Note

如果您已上傳一個以上的 SSH 金鑰 ID,則會依金鑰 ID 的字母順序列出金鑰,而非依上傳日期。請確定您已複製的金鑰 ID 與正確的上傳日期相關聯。

8. 在 Bash 模擬器中,執行下列命令在 ~/.ssh 目錄中建立組態檔,如果此檔案已存在,請編輯檔案:

notepad ~/.ssh/config

9. 將下列幾行新增至檔案,其中 User 的值是您稍早複製的 SSH 金鑰 ID,IdentityFile 的值是私有金鑰檔案的路徑與名稱:

Host git-codecommit.*.amazonaws.com User APKAEIBAERJR2EXAMPLE IdentityFile ~/.ssh/codecommit_rsa

API 版本 2015-04-1331

Page 40: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:連接到 CodeCommit 主控台和複製儲存庫

Note

如果您將私有金鑰檔案命名為 codecommit_rsa 以外的名稱,請務必在此處使用該名稱。

將檔案儲存為 config (而非 config.txt),然後關閉「記事本」。

Important

檔案名稱必須是 config 且沒有副檔名。否則,SSH 連線會失敗。10. 執行下列命令以測試 SSH 組態:

ssh git-codecommit.us-east-2.amazonaws.com

由於 git-codecommit.us-east-2.amazonaws.com 尚未包含於您的已知主機檔案中,所以系統會要求您確認連線。CodeCommit 伺服器指紋會顯示為驗證的一部分 (適用 MD5 的a9:6d:03:ed:08:42:21:be:06:e1:e0:2a:d1:75:31:5e 或適用 SHA256 的 3lBlW2g5xn/NA2Ck6dyeJIrQOWvn7n8UEs56fG6ZIzQ)。

Note

每個 AWS 區域的 CodeCommit 伺服器指紋都是獨一無二。若要檢視 AWS 區域的伺服器指紋,請參閱 適用於 CodeCommit 的伺服器指紋 (p. 293)。

確認連線之後,您應該會看到確認訊息,指出您已將伺服器新增到已知主機檔案,還會出現成功連線的訊息。如果您沒有看到成功訊息,請再次確認您已將 config 檔案儲存至您設定來存取 CodeCommit 的IAM 使用者的 ~/.ssh 目錄中、config 檔案沒有副檔名 (例如,不得命名為 config.txt),以及您已指定正確的私有金鑰檔案 (codecommit_rsa,而不是 codecommit_rsa.pub)。

如需可協助您排除問題的相關資訊,請執行 ssh 命令並搭配 -v 參數:

ssh -v git-codecommit.us-east-2.amazonaws.com

如需資訊來協助您排除連線問題,請參閱故障診斷 (p. 239)。

步驟 4:連接到 CodeCommit 主控台和複製儲存庫如果管理員已將 CodeCommit 儲存庫的名稱和連線詳細資訊傳送給您,則您可以略過此步驟,並直接複製儲存庫。

連接到 CodeCommit 儲存庫

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇已建立儲存庫的 AWS 區域。儲存庫為 AWS 區域特有的。如需更多詳細資訊,

請參閱 區域和 Git 連線端點 (p. 289)。3. 選擇您要從清單連接的儲存庫。這會開啟開儲存庫的 Code (程式碼) 頁面。

如果您看見的是 Welcome (歡迎) 頁面而不是儲存庫清單,這表示沒有與您 AWS 帳戶關聯的儲存庫。要建立儲存庫,請參閱 the section called “建立儲存庫” (p. 75) 或依照 Git 與 CodeCommit 教學 (p. 58) 教學課程中的步驟。

4. 選擇 Clone URL (複製 URL),然後複製 SSH URL。5. 在 Bash 模擬器中,使用您剛複製的 SSH URL,執行 git clone 命令來複製儲存庫。在您執行此命令的

目錄中,此命令會在該目錄的子目錄中建立本機儲存庫。例如,若要將名為 MyDemoRepo 的儲存庫,複製到US East (Ohio) 區域中名為 my-demo-repo 的本機儲存庫:

API 版本 2015-04-1332

Page 41: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南後續步驟

git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

或者,開啟命令提示字元,並使用您上傳到 IAM 的公有金鑰的 URL 和 SSH 金鑰 ID,執行 git clone命令。在您執行此命令的目錄中,將會在該目錄的子目錄中建立本機儲存庫。例如,若要將名為MyDemoRepo 的儲存庫,複製到名為 my-demo-repo 的本機儲存庫:

git clone ssh://[email protected]/v1/repos/MyDemoRepo my-demo-repo

如需詳細資訊,請參閱透過複製儲存庫連接到 CodeCommit 儲存庫 (p. 78)和建立遞交 (p. 171)。

後續步驟您已完成事前準備。依照 CodeCommit 教學 (p. 42) 中的步驟開始使用 CodeCommit。

在 Linux, macOS, or Unix 上使用 AWS CLI 登入資料協助程式來設定 AWS CodeCommit 儲存庫HTTPS 連線的步驟

第一次連接到 AWS CodeCommit 之前,您必須先完成初始設定步驟。這個主題逐步帶領您設定電腦和 AWS描述檔、連接到 CodeCommit 儲存庫,然後將該儲存庫複製到您的電腦,也稱為建立本機儲存庫。如果您是初次使用 Git,您可能還需要檢閱哪裡可以進一步了解 Git? (p. 4)中的資訊。

主題• 步驟 1:CodeCommit 的初始組態 (p. 33)• 步驟 2:安裝 Git (p. 35)• 步驟 3:設定登入資料協助程式 (p. 35)• 步驟 4:連接到 CodeCommit 主控台和複製儲存庫 (p. 36)• 後續步驟 (p. 37)

步驟 1:CodeCommit 的初始組態依照以下步驟設定 AWS 帳戶、建立和設定 IAM 使用者,以及安裝 AWS CLI。

建立和設定 IAM 使用者以存取 CodeCommit

1. 移至 http://aws.amazon.com 並選擇 Sign Up (註冊),以建立 AWS 帳戶。2. 在您的 AWS 帳戶中,建立 IAM 使用者或使用現有的使用者。請確定您具有與該 IAM 使用者相關聯的存

取金鑰 ID 和私密存取金鑰。如需詳細資訊,請參閱在 AWS 帳戶中建立 IAM 使用者。

Note

CodeCommit 需要 AWS Key Management Service。如果您使用現有的 IAM 使用者,請確定連接到使用者的政策沒有明確拒絕 CodeCommit 所需的 AWS KMS 動作。如需更多詳細資訊,請參閱 AWS KMS 和加密 (p. 302)。

3. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

API 版本 2015-04-1333

Page 42: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 1:CodeCommit 的初始組態

4. 在 IAM 主控台的導覽窗格中,選擇 Users (使用者),然後選擇您要設定用於存取 CodeCommit 的 IAM使用者。

5. 在 Permissions (許可) 標籤上,選擇 Add Permissions (新增許可)。6. 在 Grant permissions (授予許可) 中,選擇 Attach existing policies directly (直接連接現有政策)。7. 從政策清單中,選取 AWSCodeCommitFullAccess,或另一個用於存取 CodeCommit 的受管政策。如需

詳細資訊,請參閱 CodeCommit 的 AWS 受管 (預先定義) 政策 (p. 262)。

選取您要連接的政策之後,選擇 Next: Review (下一步:檢閱),以檢閱將連接到 IAM 使用者的政策清單。如果清單正確,請選擇 Add permissions (新增許可)。

如需有關 CodeCommit 受管政策及分享儲存庫存取權給其他群組和使用者的詳細資訊,請參閱共用儲存庫 (p. 79)和 AWS CodeCommit 的身份驗證與存取控制 (p. 254)。

安裝及設定 AWS CLI

1. 在本機電腦上,下載並安裝 AWS CLI。這是從命令列與 CodeCommit 互動的必要步驟。如需詳細資訊,請參閱開始設定 AWS 命令列界面。

Note

CodeCommit 只能與 AWS CLI 版本 1.7.38 版和更新版本 一起使用。若要判斷您已安裝的AWS CLI 版本,請執行 aws --version 命令。若要將舊版的 AWS CLI 更新為最新版本,請參閱安裝 AWS Command Line Interface。

2. 執行此命令來驗證已安裝 AWS CLI 的 CodeCommit 命令:

aws codecommit help

此命令會傳回 CodeCommit 命令清單。3. 使用 configure 命令來設定 AWS CLI,如下所示:

aws configure

出現提示時,請針對要用於 CodeCommit 的 IAM 使用者,指定其 AWS 存取金鑰和 AWS 私密存取金鑰。此外,請務必指定儲存庫所在的 AWS 區域,例如 us-east-2。系統提示您輸入預設輸出格式時,請指定 json。例如:

AWS Access Key ID [None]: Type your target AWS access key ID here, and then press EnterAWS Secret Access Key [None]: Type your target AWS secret access key here, and then press EnterDefault region name [None]: Type a supported region for CodeCommit here, and then press EnterDefault output format [None]: Type json here, and then press Enter

若要連接到另一個 AWS 區域中的儲存庫或資源,您必須以預設區域名稱來重新設定 AWSCLI。CodeCommit 支援的預設區域名稱包括:

• us-east-2• us-east-1• eu-west-1• us-west-2• ap-northeast-1• ap-southeast-1• ap-southeast-2 API 版本 2015-04-13

34

Page 43: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 2:安裝 Git

• eu-central-1• ap-northeast-2• sa-east-1• us-west-1• eu-west-2• ap-south-1• ca-central-1• us-gov-west-1• us-gov-east-1• eu-north-1• me-south-1

如需 CodeCommit 和 AWS 區域的詳細資訊,請參閱區域和 Git 連線端點 (p. 289)。如需 IAM、存取金鑰和私密金鑰的詳細資訊,請參閱如何取得登入資料?和管理 IAM 使用者的存取金鑰。

步驟 2:安裝 Git要使用 CodeCommit 儲存庫中的檔案、認可和其他資訊,您必須在本機電腦上安裝 Git。CodeCommit 支援Git 1.7.9 版和更新版本。

要安裝 Git,建議可使用 Git Downloads 等網站。

Note

Git 是一種持續演進且定期更新的平台。有時,一項功能的改變,可能會影響此功能與 CodeCommit運作的方式。如果您在特定版本的 Git 和 CodeCommit 遇到問題,請查看 故障診斷 (p. 239) 的資訊。

步驟 3:設定登入資料協助程式1. 從終端機,使用 Git 執行 git config,並指定使用 Git 登入資料協助程式搭配 AWS 登入資料描述檔,同

時讓 Git 登入資料協助程式將路徑傳送至儲存庫:

git config --global credential.helper '!aws codecommit credential-helper $@'git config --global credential.UseHttpPath true

Tip

登入資料協助程式會使用預設的 AWS 登入資料描述檔或 Amazon EC2 執行個體角色。如果您已建立 AWS 登入資料描述檔來用於 CodeCommit,則可以指定要使用的描述檔,例如CodeCommitProfile:

git config --global credential.helper '!aws --profile CodeCommitProfile codecommit credential-helper $@'

如果描述檔名稱包含空格,請務必以引號 (") 括住名稱。您可以使用 --local 設定每個儲存庫的描述檔,而非使用 --global 來全體設定。

Git 登入資料協助程式會將下列值寫入 ~/.gitconfig:

[credential] API 版本 2015-04-1335

Page 44: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:連接到 CodeCommit 主控台和複製儲存庫

helper = !aws --profile CodeCommitProfile codecommit credential-helper $@ UseHttpPath = true

Important

如果您想要在相同的本機電腦上對 CodeCommit 使用不同的 IAM 使用者,您必須重新執行 gitconfig 命令,並指定不同的 AWS 登入資料描述檔。

2. 執行 git config --global --edit 以確認上述值已寫入 ~/.gitconfig。如果成功,您應該會看到上述值(除了可能已存在於 Git 全域組態檔案中的值之外)。若要結束,您通常會輸入 :q,然後按 Enter 鍵。

如果您在設定登入資料協助程式之後遇到問題,請參閱故障診斷 (p. 239)。

Important

如果您使用的是 macOS,請使用下列步驟,以確保已正確設定登入資料協助程式。3. 如果您使用的是 macOS,請使用 HTTPS 來 連接到 CodeCommit 儲存庫 (p. 77)。第一次透過

HTTPS 連接到 CodeCommit 儲存庫之後,大約 15 分鐘之後,後續存取會失敗。macOS 上的預設 Git版本使用 Keychain Access 公用程式來存放登入資料。基於安全考量,為存取 CodeCommit 儲存庫而產生的密碼是臨時性,因此,存放在金鑰鏈中的登入資料大約 15 分鐘之後會失效。為避免使用這些過期的登入資料,您必須:

• 安裝一個依預設不使用金鑰鏈的 Git 版本。• 將 Keychain Access 公用程式設定為不提供登入資料給 CodeCommit 儲存庫。

1. 開啟 Keychain Access 公用程式。(您可以使用 Finder 找到它。)2. 搜尋 git-codecommit.us-east-2.amazonaws.com。反白此列,開啟操作功能表或以滑鼠右鍵

按一下此列,然後選擇 Get Info (取得資訊)。3. 選擇 Access Control (存取控制) 標籤。4. 在 Confirm before allowing access (允許存取之前確認) 中,選擇 git-credential-

osxkeychain,然後選擇減號從清單移除它。

Note

從清單移除 git-credential-osxkeychain 之後,每當您執行 Git 命令時就會看到快顯訊息。選擇 Deny (拒絕) 以繼續。如果您覺得快顯帶來太多干擾,以下是一些其他選項:• 使用 SSH (而不是 HTTPS) 連接到 CodeCommit。如需更多詳細資訊,請參閱 適用於

Linux, macOS, or Unix 上的 SSH 連線 (p. 25)。• 在 Keychain Access 公用程式中,在 git-codecommit.us-east-2.amazonaws.com

的 Access Control (存取控制) 標籤上,選擇 Allow all applications to access this item(access to this item is not restricted) (允許所有應用程式存取此項目 (對此項目的存取權不受限)) 選項。這可防止快顯,但登入資料最終仍會過期 (平均大約 15 分鐘),您將會看到403 錯誤訊息。發生這種情況時,您必須刪除金鑰鏈項目才能還原功能。

• 安裝一個依預設不使用金鑰鏈的 Git 版本。

步驟 4:連接到 CodeCommit 主控台和複製儲存庫如果管理員已將 CodeCommit 儲存庫的名稱和連線詳細資訊傳送給您,則您可以略過此步驟,並直接複製儲存庫。

連接到 CodeCommit 儲存庫

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇已建立儲存庫的 AWS 區域。儲存庫為 AWS 區域特有的。如需更多詳細資訊,

請參閱 區域和 Git 連線端點 (p. 289)。API 版本 2015-04-13

36

Page 45: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南後續步驟

3. 選擇您要從清單連接的儲存庫。這會開啟開儲存庫的 Code (程式碼) 頁面。

如果您看見的是 Welcome (歡迎) 頁面而不是儲存庫清單,這表示沒有與您 AWS 帳戶關聯的儲存庫。要建立儲存庫,請參閱 the section called “建立儲存庫” (p. 75) 或依照 Git 與 CodeCommit 教學 (p. 58) 教學課程中的步驟。

4. 複製要用於連接到儲存庫的 HTTPS URL。5. 開啟終端機,從 /tmp 目錄中,透過 git clone 命令使用此 URL 來複製儲存庫。例如,若要將名為

MyDemoRepo 的儲存庫,複製到US East (Ohio) 區域中名為 my-demo-repo 的本機儲存庫:

git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

如需更多詳細資訊,請參閱 透過複製儲存庫連接到 CodeCommit 儲存庫 (p. 78) 及 建立遞交 (p. 171)。

後續步驟您已完成事前準備。依照 CodeCommit 教學 (p. 42) 中的步驟開始使用 CodeCommit。

在 Windows 上使用 AWS CLI 登入資料協助程式來設定 AWS CodeCommit 儲存庫 HTTPS 連線的步驟

第一次連接到 AWS CodeCommit 之前,您必須先完成初始設定步驟。對於大多數使用者,最輕鬆的方式是遵循適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7)中的步驟。不過,如果您想要使用根帳戶、聯合身分存取或臨時登入資料來連接到 CodeCommit,您必須使用 AWS CLI 包含的登入資料協助程式。

這個主題逐步帶領您安裝 AWS CLI、設定電腦和 AWS 描述檔、連接到 CodeCommit 儲存庫,然後將該儲存庫複製到您的電腦,也稱為建立本機儲存庫。如果您是初次使用 Git,您可能還需要檢閱哪裡可以進一步了解Git? (p. 4)中的資訊。

主題• 步驟 1:CodeCommit 的初始組態 (p. 37)• 步驟 2:安裝 Git (p. 39)• 步驟 3:設定登入資料協助程式 (p. 39)• 步驟 4:連接到 CodeCommit 主控台和複製儲存庫 (p. 41)• 後續步驟 (p. 41)

步驟 1:CodeCommit 的初始組態依照以下步驟設定 AWS 帳戶、建立和設定 IAM 使用者,以及安裝 AWS CLI。AWS CLI 包含登入資料協助程式,供您設定以透過 HTTPS 連線到 CodeCommit 儲存庫。

建立和設定 IAM 使用者以存取 CodeCommit

1. 移至 http://aws.amazon.com 並選擇 Sign Up (註冊),以建立 AWS 帳戶。2. 在您的 AWS 帳戶中,建立 IAM 使用者或使用現有的使用者。請確定您具有與該 IAM 使用者相關聯的存

取金鑰 ID 和私密存取金鑰。如需詳細資訊,請參閱在 AWS 帳戶中建立 IAM 使用者。

API 版本 2015-04-1337

Page 46: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 1:CodeCommit 的初始組態

Note

CodeCommit 需要 AWS Key Management Service。如果您使用現有的 IAM 使用者,請確定連接到使用者的政策沒有明確拒絕 CodeCommit 所需的 AWS KMS 動作。如需更多詳細資訊,請參閱 AWS KMS 和加密 (p. 302)。

3. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

4. 在 IAM 主控台的導覽窗格中,選擇 Users (使用者),然後選擇您要設定用於存取 CodeCommit 的 IAM使用者。

5. 在 Permissions (許可) 標籤上,選擇 Add Permissions (新增許可)。6. 在 Grant permissions (授予許可) 中,選擇 Attach existing policies directly (直接連接現有政策)。7. 從政策清單中,選取 AWSCodeCommitFullAccess,或另一個用於存取 CodeCommit 的受管政策。如需

詳細資訊,請參閱 CodeCommit 的 AWS 受管 (預先定義) 政策 (p. 262)。

選取您要連接的政策之後,選擇 Next: Review (下一步:檢閱),以檢閱將連接到 IAM 使用者的政策清單。如果清單正確,請選擇 Add permissions (新增許可)。

如需有關 CodeCommit 受管政策及分享儲存庫存取權給其他群組和使用者的詳細資訊,請參閱共用儲存庫 (p. 79)和 AWS CodeCommit 的身份驗證與存取控制 (p. 254)。

安裝及設定 AWS CLI

1. 在本機電腦上,下載並安裝 AWS CLI。這是從命令列與 CodeCommit 互動的必要步驟。如需詳細資訊,請參閱開始設定 AWS 命令列界面。

Note

CodeCommit 只能與 AWS CLI 版本 1.7.38 版和更新版本 一起使用。若要判斷您已安裝的AWS CLI 版本,請執行 aws --version 命令。若要將舊版的 AWS CLI 更新為最新版本,請參閱安裝 AWS Command Line Interface。

2. 執行此命令來驗證已安裝 AWS CLI 的 CodeCommit 命令:

aws codecommit help

此命令會傳回 CodeCommit 命令清單。3. 使用 configure 命令來設定 AWS CLI,如下所示:

aws configure

出現提示時,請針對要用於 CodeCommit 的 IAM 使用者,指定其 AWS 存取金鑰和 AWS 私密存取金鑰。此外,請務必指定儲存庫所在的 AWS 區域,例如 us-east-2。系統提示您輸入預設輸出格式時,請指定 json。例如:

AWS Access Key ID [None]: Type your target AWS access key ID here, and then press EnterAWS Secret Access Key [None]: Type your target AWS secret access key here, and then press EnterDefault region name [None]: Type a supported region for CodeCommit here, and then press EnterDefault output format [None]: Type json here, and then press Enter

若要連接到另一個 AWS 區域中的儲存庫或資源,您必須以預設區域名稱來重新設定 AWSCLI。CodeCommit 支援的預設區域名稱包括:

• us-east-2

API 版本 2015-04-1338

Page 47: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 2:安裝 Git

• us-east-1• eu-west-1• us-west-2• ap-northeast-1• ap-southeast-1• ap-southeast-2• eu-central-1• ap-northeast-2• sa-east-1• us-west-1• eu-west-2• ap-south-1• ca-central-1• us-gov-west-1• us-gov-east-1• eu-north-1• me-south-1

如需 CodeCommit 和 AWS 區域的詳細資訊,請參閱區域和 Git 連線端點 (p. 289)。如需 IAM、存取金鑰和私密金鑰的詳細資訊,請參閱如何取得登入資料?和管理 IAM 使用者的存取金鑰。

步驟 2:安裝 Git要使用 CodeCommit 儲存庫中的檔案、認可和其他資訊,您必須在本機電腦上安裝 Git。CodeCommit 支援Git 1.7.9 版和更新版本。

要安裝 Git,建議可使用 Git for Windows 等網站。如果使用此連結安裝 Git,您可以接受所有的安裝預設設定,除了以下項目之外:

• 在 Adjusting your PATH environment (調整您的 PATH 環境) 步驟收到提示時,選擇從命令列使用 Git 選項。

• (選用) 如果您預計藉由 AWS CLI 包含的登入資料協助程式使用 HTTPS,而非設定用於 CodeCommit的 Git 登入資料,請確認在 Configuring extra options (設定額外選項) 頁面上的 Enable Git CredentialManager (啟用 Git 登入資料管理員) 選項已清除。如果 IAM 使用者設定 Git 登入資料,則 Git CredentialManager 只與 CodeCommit 相容。如需更多詳細資訊,請參閱 適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7) 及 適用於 Windows 的 Git:我已安裝適用於 Windows 的 Git,但現在拒絕我存取儲存庫(403) (p. 247)。

Note

Git 是一種持續演進且定期更新的平台。有時,一項功能的改變,可能會影響此功能與 CodeCommit運作的方式。如果您遇到特定版本的 Git 和 CodeCommit 方面的問題,請檢閱 故障診斷 (p. 239)中的資訊。

步驟 3:設定登入資料協助程式AWS CLI 包含可與 CodeCommit 搭配使用的 Git 登入資料協助程式。Git 登入資料協助程式需要 AWS 登入資料描述檔,其中存放 IAM 使用者的 AWS 存取金鑰 ID 和 AWS 私密存取金鑰的副本 (以及預設 AWS 區域名稱和預設輸出格式)。Git 登入資料協助程式使用此資訊自動向 CodeCommit 驗證身分,所以您每次使用Git 來與 CodeCommit 互動時,就不需要輸入此資訊。

API 版本 2015-04-1339

Page 48: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 3:設定登入資料協助程式

1. 開啟命令提示字元,使用 Git 執行 git config,並指定使用 Git 登入資料協助程式搭配 AWS 登入資料描述檔,讓 Git 登入資料協助程式將路徑傳送至儲存庫:

git config --global credential.helper "!aws codecommit credential-helper $@"git config --global credential.UseHttpPath true

Git 登入資料協助程式會將下列資料寫入 .gitconfig 檔案:

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

Important

• 如果您使用的是 Bash 模擬器,而不是 Windows 命令列,您必須使用單引號而不是雙引號。• 登入資料協助程式會使用預設的 AWS 描述檔或 Amazon EC2 執行個體角色。如果您已建立

要使用的 AWS 登入資料描述檔,例如 CodeCommitProfile,則可以如下修改命令來改用此描述檔:

git config --global credential.helper "!aws codecommit credential-helper --profile CodeCommitProfile $@"

這會將以下資料寫入 .gitconfig 檔案:

[credential] helper = !aws codecommit credential-helper --profile=CodeCommitProfile $@ UseHttpPath = true

• 如果描述檔名稱包含空格,則執行此命令後,您必須編輯 .gitconfig 檔案,以單引號 (') 括住它。否則登入資料協助程式無法運作。

• 如果您安裝的 Git for Windows 包含 Git Credential Manager 公用程式,則在最先幾次嘗試連線之後,您會看到 403 錯誤,或提示您將登入資料提供給 Credential Manager 公用程式。解決此問題最可靠的方式是解除安裝 Git for Windows,再重新安裝,但不要選擇Git Credential Manager 公用程式這個選項,因為此選項與 CodeCommit 不相容。如果您想要保留 Git Credential Manager 公用程式,則必須執行額外的設定步驟來一併使用CodeCommit,包括手動修改 .gitconfig 檔案,以指定在連接到 CodeCommit 時,對 AWSCodeCommit 使用登入資料協助程式。從 Credential Manager 公用程式移除任何已儲存的登入資料 (您可以在控制台找到此公用程式)。在移除任何已儲存的登入資料後,請將以下資料新增到 .gitconfig 檔案、儲存檔案,然後從新的命令提示字元視窗中重試連接:

[credential "https://git-codecommit.us-east-2.amazonaws.com"] helper = !aws codecommit credential-helper $@ UseHttpPath = true

[credential "https://git-codecommit.us-east-1.amazonaws.com"] helper = !aws codecommit credential-helper $@ UseHttpPath = true

您也可能需要指定 --system (而不是 --global 或 --local) 以重新設定 git config 的設定,所有連線才能正常運作。

• 如果您想要在相同的本機電腦上對 CodeCommit 使用不同的 IAM 使用者,則應該指定 gitconfig --local 而不是 git config --global,然後對每個 AWS 登入資料描述檔執行組態。

2. 執行 git config --global --edit,以確認上述值已寫入使用者描述檔的 .gitconfig 檔案 (預設為 %HOME%\.gitconfig 或 drive:\Users\UserName\.gitconfig)。如果成功,您應該會看到上述值 (除了可能已存在於 Git 全域組態檔案中的值之外)。若要結束,您通常會輸入 :q,然後按 Enter 鍵。API 版本 2015-04-13

40

Page 49: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:連接到 CodeCommit 主控台和複製儲存庫

步驟 4:連接到 CodeCommit 主控台和複製儲存庫如果管理員已將 CodeCommit 儲存庫的名稱和連線詳細資訊傳送給您,則您可以略過此步驟,並直接複製儲存庫。

連接到 CodeCommit 儲存庫

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇已建立儲存庫的 AWS 區域。儲存庫為 AWS 區域特有的。如需更多詳細資訊,

請參閱 區域和 Git 連線端點 (p. 289)。3. 選擇您要從清單連接的儲存庫。這會開啟開儲存庫的 Code (程式碼) 頁面。

如果您看見的是 Welcome (歡迎) 頁面而不是儲存庫清單,這表示沒有與您 AWS 帳戶關聯的儲存庫。要建立儲存庫,請參閱 the section called “建立儲存庫” (p. 75) 或依照 Git 與 CodeCommit 教學 (p. 58) 教學課程中的步驟。

4. 複製要用於連接到儲存庫的 HTTPS URL。5. 開啟命令提示字元,透過 git clone 命令使用此 URL 來複製儲存庫。在您執行此命令的目錄中,將會在

該目錄的子目錄中建立本機儲存庫。例如,若要將名為 MyDemoRepo 的儲存庫,複製到US East (Ohio)區域中名為 my-demo-repo 的本機儲存庫:

git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

在某些版本的 Windows 上,您可能會看到快顯訊息,要求您輸入使用者名稱和密碼。這是 Windows 內建的登入資料管理系統,但與 AWS CodeCommit 的登入資料協助程式不相容。選擇 Cancel (取消)。

如需有關如何連接到儲存庫的詳細資訊,請參閱透過複製儲存庫連接到 CodeCommit 儲存庫 (p. 78)。

後續步驟您已完成事前準備。依照 CodeCommit 教學 (p. 42) 中的步驟開始使用 CodeCommit。

API 版本 2015-04-1341

Page 50: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 教學

AWS CodeCommit 入門開始使用 CodeCommit 最簡單的方法是遵循 CodeCommit 教學 (p. 42)中的步驟。如果您是初次使用Git 及 CodeCommit,您也應該考慮遵循 Git 與 CodeCommit 教學 (p. 58)中的步驟。這有助於您熟悉CodeCommit,以及使用 Git 來與 CodeCommit 儲存庫互動時的基本知識。

您也可以依照搭配 CodePipeline 和 CodeCommit 的簡易管道演練中的教學課程,了解如何在持續交付管道中使用 CodeCommit 儲存庫。

本節中的教學課程假設您已完成先決條件和設定 (p. 5),包括:

• 將許可指派給 IAM 使用者。• 在您用於本教學課程的本機機器上,設定 HTTPS 或 SSH 連線的登入資料管理。• 如果您想要使用命令列或終端機執行所有操作 (包括建立儲存庫),請設定 AWS CLI。

主題• AWS CodeCommit 入門教學 (p. 42)• Git 與 AWS CodeCommit 教學 (p. 58)

AWS CodeCommit 入門教學如果您是初次使用 CodeCommit,此教學可協助您了解如何使用其功能。在此教學中,您會在 CodeCommit中建立儲存庫。在將一些變更遞交到 CodeCommit 儲存庫之後,您會瀏覽檔案並檢視變更。您也可以建立提取請求,讓其他人檢閱程式碼的變更並做註解。

CodeCommit 主控台在收合式面板中提供實用資訊,您可透過資訊圖示或頁面上的任何 Info (資訊) 連結加以

開啟 ( )。您隨時皆可關閉此面板。

API 版本 2015-04-1342

Page 51: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 教學

CodeCommit 主控台還提供快速方式來搜尋您的資源,例如儲存庫、組建專案、部署應用程式,以及管道。選擇 Go to resource (移至資源) 或按 / 鍵,然後輸入資源名稱。任何相符項目都會出現在清單中。搜尋不區分大小寫。您只會看到您有權檢視的資源。如需詳細資訊,請參閱在主控台檢視資源 (p. 261)。

如果您不熟悉 Git,則除了此教學,您可能還需要完成Git 與 CodeCommit 教學 (p. 58)。完成此教學後,您應該就有足夠的實務可開始為您自己的專案和在團隊環境中使用 CodeCommit。

Important

開始之前,您必須完成先決條件和設定 (p. 5),包括:

• 將許可指派給 IAM 使用者。• 在本教學課程所使用的本機電腦上,設定 HTTPS 或 SSH 連線的登入資料管理。• 如果您想要使用命令列或終端機執行所有操作 (包括建立儲存庫),請設定 AWS CLI。

主題• 步驟 1:建立 CodeCommit 儲存庫 (p. 44)• 步驟 2:將檔案新增至儲存庫 (p. 45)• 步驟 3:瀏覽儲存庫的內容 (p. 47)• 步驟 4:建立和協作處理提取請求 (p. 53)• 步驟 5:後續步驟 (p. 58)

API 版本 2015-04-1343

Page 52: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 1:建立 CodeCommit 儲存庫

• 步驟 6:清除 (p. 58)

步驟 1:建立 CodeCommit 儲存庫您可以使用 CodeCommit 主控台來建立 CodeCommit 儲存庫。如果您已經有要用於此教學的儲存庫,則可略過此步驟。

Note

依據用量而定,您可能需要為建立或存取儲存庫支付費用。如需詳細資訊,請參閱 CodeCommit 產品資訊頁面的定價。

建立 CodeCommit 儲存庫

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇您要在其中建立儲存庫的 AWS 區域。如需詳細資訊,請參閱區域和 Git 連線端

點 (p. 289)。3. 請在 Repositories (儲存庫) 頁面上,選擇 Create repository (建立儲存庫)。4. 在 Create repository (建立儲存庫) 頁面的 Repository name (儲存庫名稱) 中,輸入儲存庫的名稱 (例如

MyDemoRepo)。

Note

儲存庫名稱需區分大小寫且不能超過 100 個字元。如需詳細資訊,請參閱 限制 (p. 297)。5. (選用) 在 Description (描述) 中,輸入描述 (例如,My demonstration repository)。這可協助您和

其他使用者識別儲存庫的用途。6. (選用) 選擇 Add tag (新增標籤),以新增一或多個儲存庫標籤 (自訂屬性標籤,可協助您整理和管理您的

AWS 資源) 到您的儲存庫。如需詳細資訊,請參閱 在 AWS CodeCommit 中標記儲存庫 (p. 88)。7. 選擇 Create (建立)。

API 版本 2015-04-1344

Page 53: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 2:將檔案新增至儲存庫

Note

如果您對儲存庫使用 MyDemoRepo 以外的名稱,請務必在此教學剩餘的步驟中使用該名稱。

當儲存庫開啟時,您會看到有關如何直接從 CodeCommit 主控台新增檔案的資訊。

步驟 2:將檔案新增至儲存庫您可以透過以下方式,將檔案新增至儲存庫:

• 在 CodeCommit 主控台建立檔案。• 使用 CodeCommit 主控台從本機電腦上傳檔案。

API 版本 2015-04-1345

Page 54: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 2:將檔案新增至儲存庫

• 使用 Git 用戶端將儲存庫複製到本機電腦,然後將檔案新增、遞交和推送到 CodeCommit 儲存庫。

最簡單的入門方法是從 CodeCommit 主控台新增檔案。

1. 在儲存庫的導覽列中,選擇 Code (程式碼)。2. 選擇 Add file (新增檔案),然後選擇建立或從電腦上傳檔案。3. 執行下列操作:

• 如果想要將檔案新增到不同的分支,請從分支下拉式清單中,選擇您要在其中新增檔案的分支。系統會自動為您選取預設分支。在這裡顯示的範例中,預設分支名為 master。

• 在 Author name (作者名稱) 中,輸入您要向其他儲存庫使用者顯示的名稱。• 在 Email address (電子郵件地址) 中,輸入電子郵件地址。• (選用) 在 Commit message (遞交訊息) 中,輸入簡短訊息。雖然這是選用的,但建議您新增遞交訊

息,以幫助團隊成員了解您新增這個檔案的原因。如果未輸入遞交訊息,則會使用預設訊息。• 如果是上傳檔案,請選擇您要上傳的檔案。• 如果要建立檔案,請在 File name (檔案名稱) 中輸入檔案的名稱,然後在程式碼編輯器中,輸入您要

新增的程式碼。

4. 選擇 Commit changes (遞交變更)。

如需更多詳細資訊,請參閱在 AWS CodeCommit 儲存庫中使用檔案 (p. 130)。

若要使用 Git 用戶端來複製儲存庫,請在本機電腦上安裝 Git,然後複製 CodeCommit 儲存庫。將一些檔案新增到本機儲存庫,然後推送到 CodeCommit 儲存庫。如需深入介紹,請參閱Git 與 CodeCommit

API 版本 2015-04-1346

Page 55: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 3:瀏覽儲存庫的內容

教學 (p. 58)。如果您熟悉 Git,但不確定如何對 CodeCommit 儲存庫這樣做,您可以檢視建立遞交 (p. 171)、步驟 2:建立本機儲存庫 (p. 60)或連接到儲存庫 (p. 77)中的範例和指示。

將一些檔案新增到 CodeCommit 儲存庫之後,您可以在主控台中檢視這些檔案。

步驟 3:瀏覽儲存庫的內容您可以使用 CodeCommit 主控台來檢閱儲存庫中的檔案,或快速閱讀檔案的內容。這有助於您決定要檢查的分支,或是否建立儲存庫的本機副本。

1. 從 Repositories (儲存庫) 中,選擇 MyDemoRepo。2. 儲存庫的內容會顯示在儲存庫的預設分支中。若要將檢視變更到另一個分支,或檢視特定標籤上的程式

碼,請選擇檢視選取器按鈕,然後從清單中選擇您想要檢視的分支或標籤。在這裡,檢視是設為 master(主要) 分支。

3. 若要檢視儲存庫中某個檔案的內容,請從清單中選擇檔案。選擇齒輪圖示來變更所顯示程式碼的顏色顯示選項。

API 版本 2015-04-1347

Page 56: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 3:瀏覽儲存庫的內容

如需詳細資訊,請參閱瀏覽儲存庫中的檔案 (p. 131)。

您也可以瀏覽儲存庫的遞交歷史記錄。這可協助您識別儲存庫中所做的變更,包括何時及由誰做這些變更。

1. 在儲存庫的導覽窗格中,選擇 Commits (遞交)。儲存庫在預設分支中的遞交歷史記錄會以相反時間順序顯示。

API 版本 2015-04-1348

Page 57: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 3:瀏覽儲存庫的內容

2. 依分支 (p. 201)或依標籤 (p. 197)來檢閱遞交歷史記錄,並依作者、日期等取得遞交的詳細資訊。3. 若要檢視遞交和其父系之間的差異,選擇縮寫遞交 ID。您可以選擇如何顯示變更,包括顯示或隱藏空格

變更,以及是否以內嵌 (Unified (統一)檢視) 或並排 (Split (分割)檢視) 方式來檢視變更。

Note

用於檢視程式碼的偏好設定及其他主控台設定只要有變動,就會儲存為瀏覽器 Cookie。如需詳細資訊,請參閱處理使用者偏好設定 (p. 216)。

API 版本 2015-04-1349

Page 58: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 3:瀏覽儲存庫的內容

4. 若要檢視遞交的所有註解,請選擇遞交,然後捲動變更以內嵌方式檢視。您也可以新增自己的註解,並回覆其他人所做的註解。

API 版本 2015-04-1350

Page 59: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 3:瀏覽儲存庫的內容

如需更多詳細資訊,請參閱對遞交的評論 (p. 188)。5. 若要檢視任何兩個遞交指標之間的差異,包括標籤、分支和遞交 ID,請在導覽窗格中選擇 Commits (遞

交),然後選擇 Compare commits (比較遞交)。

API 版本 2015-04-1351

Page 60: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 3:瀏覽儲存庫的內容

如需更多詳細資訊,請參閱瀏覽儲存庫的遞交歷史記錄 (p. 175)及比較遞交 (p. 184)。6. 在 Commits (遞交) 中,選擇 Commit visualizer (遞交視覺化工具) 標籤。

API 版本 2015-04-1352

Page 61: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:建立和協作處理提取請求

隨即顯示遞交圖表,在圖表中,每個遞交會在該點旁邊顯示主旨列。主旨列最多顯示 80 個字元。7. 若要查看遞交的詳細資訊,請選擇其縮寫遞交 ID。若要呈現從特定遞交開始的圖表,請在圖表中選擇該

點。如需詳細資訊,請參閱檢視儲存庫遞交歷史記錄的圖表 (p. 176)。

步驟 4:建立和協作處理提取請求與其他儲存庫使用者一起合作時,您可能需要協作處理程式碼和檢閱變更。您可以建立提取請求,讓其他使用者檢閱您在分支中的程式碼變更並做註解,之後您再將這些變更合併到另一個分支。如果您為儲存庫設定通知,則儲存庫使用者可以收到與儲存庫事件相關的電子郵件 (例如提取請求或當有人對程式碼做註解時)。如需更多詳細資訊,請參閱 在 AWS CodeCommit 儲存庫中設定事件的通知 (p. 83)。

Important

您必須建立分支,其中包含您希望檢閱的程式碼變更,才能建立提取請求。如需詳細資訊,請參閱建立分支 (p. 202)。

1. 在導覽窗格中,選擇 Pull requests (提取請求)。2. 在 Pull request (提取請求) 中,選擇 Create pull request (建立提取請求)。

API 版本 2015-04-1353

Page 62: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:建立和協作處理提取請求

Tip

您也可以從 Branches (分支) 和 Code (程式碼) 建立提取請求。

在 Create pull request (建立提取請求) 的 Source (來源) 中,選擇分支,其中包含您希望檢閱的變更。在Destination (目的地) 中,選擇分支,表示您希望提取請求關閉時,將已檢閱的程式碼合併到此分支。選擇 Compare (比較)。

3. 檢閱合併詳細資訊和變更,以確認提取請求包含您希望檢閱的變更和遞交。如果沒問題,請在 Title (標題) 中輸入此檢閱的標題。這是在儲存庫的提取請求清單中顯示的標題。在 Description (描述) 中,輸入有助於了解此檢閱的詳細資訊,以及對檢閱者有用的任何其他資訊。選擇 Create (建立)。

4. 您的提取請求會出現在儲存庫的提取請求清單中。您可以篩選檢視,只顯示開啟的請求、關閉的請求、您建立的請求等等。

API 版本 2015-04-1354

Page 63: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:建立和協作處理提取請求

5. 如果您為儲存庫設定通知,並選擇將提取請求事件通知使用者,則使用者會收到新提取請求的相關電子郵件。使用者可以檢視特定程式碼行、檔案和提取請求本身的變更並做註解。他們也可以回覆註解。如有需要,您可以將變更推送到提取請求分支,以更新提取請求。

API 版本 2015-04-1355

Page 64: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:建立和協作處理提取請求

6. 當您滿意所有程式碼變更都經過檢閱並獲得同意時,請從提取請求執行下列其中一項動作:

• 如果您想要在關閉提取請求時合併分支,請選擇 Merge (合併)。您可以在適用於您程式碼的合併策略之間選擇 (這取決於來源和目的地分支之間的差異),以及是否在完成合併之後自動刪除來源分支。做出選擇之後,請選擇 Merge pull request (合併提取請求) 完成合併。

API 版本 2015-04-1356

Page 65: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:建立和協作處理提取請求

• 如果您想關閉提取請求但不合併分支,請選擇 Close pull request (關閉提取請求)。• 如果分支中有合併衝突發生且無法自動解決,您可以嘗試在 CodeCommit 主控台中解決,或使用本機

Git 用戶端來合併分支,然後推送合併。如需詳細資訊,請參閱解決 AWS CodeCommit 儲存庫中的提取請求衝突 (p. 159)。

API 版本 2015-04-1357

Page 66: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 5:後續步驟

Note

您一律可以在本機儲存庫中使用 git merge 命令並推送變更,以手動合併分支,包括提取請求分支。

如需詳細資訊,請參閱使用提取請求 (p. 138)。

步驟 5:後續步驟現在您已熟悉 CodeCommit 及其一些功能,請考慮執行以下步驟:

• 如果您是初次使用 Git 和 CodeCommit,或想要檢閱使用 Git 搭配 CodeCommit 的範例,請繼續前往Git與 CodeCommit 教學 (p. 58)教學課程。

• 如果您想要在 CodeCommit 儲存庫中與其他人一起合作,請參閱共用儲存庫 (p. 79)。(如果您想要將儲存庫分享給另一個 AWS 帳戶中的使用者,請參閱設定 AWS CodeCommit 儲存庫的跨帳戶存取 (p. 120)。)

• 如果您要將儲存庫遷移至 CodeCommit,請遵循遷移至 CodeCommit (p. 217)中的步驟。• 如果您想要將儲存庫新增到持續交付管道,請遵循簡易管道逐步解說中的步驟。• 如果您想要進一步了解與 CodeCommit 整合的產品與服務,包括來自社群的範例,請參閱產品和服務整

合 (p. 68)。

步驟 6:清除如果您不再需要 CodeCommit 儲存庫,應該刪除您用於此教學課程的 CodeCommit 儲存庫和其他資源,系統才不會繼續向您收取儲存空間的費用。

Important

這個儲存庫刪除之後,就無法再複製到任何 本機儲存庫 或共用儲存庫。您也無法再從任何 本機儲存庫 或共用儲存庫,對此儲存庫提取資料、推送資料或執行任何 Git 操作。這個操作無法復原。如果您已為儲存庫設定通知,則刪除儲存庫也會刪除為此儲存庫建立的 Amazon CloudWatchEvents 規則。但並不會刪除用做為該規則目標的 Amazon SNS 主題。如果您已為儲存庫設定觸發,則刪除儲存庫不會刪除您為這些觸發設定的目標 Amazon SNS 主題或 Lambda 函數。如果您已不需要這些資源,務必刪除。如需詳細資訊,請參閱從儲存庫刪除觸發。 (p. 108)。

刪除 CodeCommit 儲存庫

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要刪除的儲存庫。如果您遵循此主題中的命名慣例,則此名稱會是

MyDemoRepo。3. 在導覽窗格中選擇 Settings (設定)。4. 在 Settings (設定) 頁面的 Delete repository (刪除儲存庫) 中,選擇 Delete repository (刪除儲存庫)。5. 輸入 delete,然後選擇 Delete (刪除)。就會永久刪除這個儲存庫。

Git 與 AWS CodeCommit 教學如果您是初次使用 Git 和 CodeCommit,此教學課程可協助您了解一些簡單的命令來開始使用。如果您已熟悉 Git,則可以略過此教學課程而直接進入 CodeCommit 教學 (p. 42)。

在此教學課程中,您將建立一個儲存庫來代表 CodeCommit 儲存庫 的本機副本,我們稱之為 本機儲存庫。

API 版本 2015-04-1358

Page 67: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 1:建立 CodeCommit 儲存庫

您在建立 本機儲存庫 之後會加上一些變更。然後將變更傳送 (推送) 至 CodeCommit 儲存庫。

您也會模擬團隊環境,由兩個使用者獨立將變更遞交至 本機儲存庫,然後將這些變更推送至 CodeCommit儲存庫。接著,使用者會從 CodeCommit 儲存庫 將變更提取到自己的本機儲存庫,以查看另一個使用者所做的變更。

您也會在 CodeCommit 儲存庫中建立分支和標籤,並管理一些存取許可。

完成此教學課程後,您對核心 Git 和 CodeCommit 概念應該就具備足夠的實務,即可將這些實務運用到您自己的專案中。

完成先決條件和設定 (p. 5),包括:

• 將許可指派給 IAM 使用者。• 在本教學課程所使用的本機電腦上,設定 HTTPS 或 SSH 連線的登入資料管理。• 如果您想要使用命令列或終端機執行所有操作 (包括建立儲存庫),請設定 AWS CLI。

主題• 步驟 1:建立 CodeCommit 儲存庫 (p. 59)• 步驟 2:建立本機儲存庫 (p. 60)• 步驟 3:建立您的第一個遞交 (p. 60)• 步驟 4:推送您的第一個遞交 (p. 61)• 步驟 5:共用 CodeCommit 儲存庫及推送和提取另一個遞交 (p. 61)• 步驟 6:建立和分享分支 (p. 62)• 步驟 7:建立和共用標籤 (p. 63)• 步驟 8:設定存取許可 (p. 64)• 步驟 9:清除 (p. 66)

步驟 1:建立 CodeCommit 儲存庫在此步驟中,您要使用 CodeCommit 主控台來建立儲存庫。

如果已有您想要使用的 CodeCommit 儲存庫,則可以略過此步驟。Note

依據用量而定,您可能需要為建立或存取儲存庫支付費用。如需詳細資訊,請參閱 CodeCommit 產品資訊頁面的定價。

建立 CodeCommit 儲存庫

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇您要在其中建立儲存庫的 AWS 區域。如需詳細資訊,請參閱區域和 Git 連線端

點 (p. 289)。3. 請在 Repositories (儲存庫) 頁面上,選擇 Create repository (建立儲存庫)。4. 在 Create repository (建立儲存庫) 頁面的 Repository name (儲存庫名稱) 中,輸入儲存庫的名稱 (例如

MyDemoRepo)。Note

儲存庫名稱需區分大小寫且不能超過 100 個字元。如需詳細資訊,請參閱 限制 (p. 297)。5. (選用) 在 Description (描述) 中,輸入描述 (例如,My demonstration repository)。這可協助您和

其他使用者識別儲存庫的用途。6. (選用) 選擇 Add tag (新增標籤),以新增一或多個儲存庫標籤 (自訂屬性標籤,可協助您整理和管理您的

AWS 資源) 到您的儲存庫。如需詳細資訊,請參閱 在 AWS CodeCommit 中標記儲存庫 (p. 88)。

API 版本 2015-04-1359

Page 68: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 2:建立本機儲存庫

7. 選擇 Create (建立)。

Note

本教學課程剩餘的步驟中使用 MyDemoRepo 做為 CodeCommit 儲存庫 的名稱。如果您選擇不同名稱,請在此教學課程中都使用此名稱。

如需有關建立儲存庫的詳細資訊,包括如何從終端機或命令列建立儲存庫,請參閱建立儲存庫 (p. 75)。

步驟 2:建立本機儲存庫在此步驟中,您要在本機電腦上設定本機儲存庫,以連接至您的儲存庫。若要這樣做,請在本機電腦上選取可代表本機儲存庫的目錄。您使用 Git,在該目錄內複製並初始化空的 CodeCommit 儲存庫 副本。然後,您指定使用者名稱和電子郵件地址,用以標註您的遞交。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇已建立儲存庫的 AWS 區域。儲存庫為 AWS 區域特有的。如需詳細資訊,請參

閱區域和 Git 連線端點 (p. 289)。3. 在 Dashboard (儀表板) 頁面上,選擇您要共用的儲存庫名稱。4. 在 Code (程式碼) 頁面上,選擇 Clone URL (複製 URL),然後選擇使用者所要使用的通訊協定。5. 複製連線通訊協定顯示的 URL,供使用者連接到您的 CodeCommit 儲存庫時使用。6. 將連線資訊連同其他任何指示傳送給使用者,例如安裝 AWS CLI、設定描述檔或安裝 Git。請務必包含

連線通訊協定的組態資訊 (例如,對於 HTTPS,設定 Git 的登入資料協助程式)。

步驟 3:建立您的第一個遞交在此步驟中,您會在 本機儲存庫 中建立第一個遞交。若要這樣做,請在 本機儲存庫 中建立兩個範例檔案。您使用 Git 將變更暫存到 本機儲存庫,然後遞交變更。

1. 使用文字編輯器,在您目錄中建立以下兩個範例文字檔案。將檔案命名為 cat.txt 和 dog.txt:

cat.txt-------The domestic cat (Felis catus or Felis silvestris catus) is a small, usually furry, domesticated, and carnivorous mammal.

dog.txt-------The domestic dog (Canis lupus familiaris) is a canid that is known as man's best friend.

2. 執行 git add 來暫存變更:

git add cat.txt dog.txt

3. 執行 git commit 來遞交變更:

git commit -m "Added cat.txt and dog.txt"

Tip

若要查看您剛完成之遞交的詳細資訊,請執行 git log。

API 版本 2015-04-1360

Page 69: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:推送您的第一個遞交

步驟 4:推送您的第一個遞交在此步驟中,您會從 本機儲存庫 將遞交推送至 CodeCommit 儲存庫。

執行 git push,從 本機儲存庫 中的預設分支 (master),透過 Git 用於 CodeCommit 儲存庫 的預設遠端名稱(origin) 來推送您的遞交:

git push -u origin master

Tip

將檔案推送至您的 CodeCommit 儲存庫之後,您可以使用 CodeCommit 主控台來檢視內容。如需更多詳細資訊,請參閱 瀏覽儲存庫中的檔案 (p. 131)。

步驟 5:共用 CodeCommit 儲存庫及推送和提取另一個遞交在此步驟中,您將 CodeCommit 儲存庫 的相關資訊分享給另一個團隊成員同事。該團隊成員使用此資訊取得本機副本,做一些變更,然後將修改過的本機副本推送至 CodeCommit 儲存庫。然後,您從 CodeCommit儲存庫 將變更提取到本機儲存庫。

在此教學課程中,您模擬該同事使用者,在您於步驟 2 (p. 60) 建立的目錄以外,讓 Git 再建立另一個目錄。(一般而言,此目錄會在不同的機器。) 這個新目錄是 CodeCommit 儲存庫 的副本。您對現有目錄或這個新目錄所做的任何變更彼此無關。若要識別這些目錄的變更,唯一方法是從 CodeCommit 儲存庫 提取。

即使這些目錄在相同的本機機器上,我們仍分別將現有目錄稱為本機儲存庫 ,而將新目錄稱為共用儲存庫。

您會從新目錄取得 CodeCommit 儲存庫 的單獨副本。接著,新增範例檔案,將變更遞交至共用儲存庫,然後從共用儲存庫將遞交推送至 CodeCommit 儲存庫。

最後,您會從儲存庫將變更提取到 本機儲存庫,然後瀏覽變更以查看其他使用者所遞交的變更。

1. 切換到 /tmp 目錄或 c:\temp 目錄。2. 執行 git clone,將儲存庫的副本提取到共用儲存庫:

針對 HTTPS:

git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo shared-demo-repo

針對 SSH:

git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo shared-demo-repo

Note

當您在 Windows 作業系統上使用 SSH 複製儲存庫時,您必須將 SSH 金鑰 ID 新增到連線字串,如下所示:

git clone ssh://[email protected]/v1/repos/MyDemoRepo my-demo-repo

如需更多詳細資訊,請參閱 適用於 Windows 上的 SSH 連線 (p. 29)。

API 版本 2015-04-1361

Page 70: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 6:建立和分享分支

在這個命令中,MyDemoRepo 是 CodeCommit 儲存庫 的名稱。shared-demo-repo 是 Git 在 /tmp目錄或 c:\temp 目錄中建立的目錄名稱。在 Git 建立目錄之後,Git 將儲存庫的副本提取到 shared-demo-repo 目錄。

3. 切換到 shared-demo-repo 目錄:

(For Linux, macOS, or Unix) cd /tmp/shared-demo-repo(For Windows) cd c:\temp\shared-demo-repo

4. 執行 git config 來新增另一個使用者名稱和電子郵件地址,以預留位置 other-user-name 和 other-email-address 表示 (例如,John Doe 和 [email protected])。這可讓您更輕鬆地識別其他使用者所做的遞交:

git config --local user.name "other-user-name"git config --local user.email other-email-address

5. 使用文字編輯器,在 shared-demo-repo 目錄中建立以下範例文字檔案。將檔案命名為horse.txt:

horse.txt-------The horse (Equus ferus caballus) is one of two extant subspecies of Equus ferus.

6. 執行 git add,將變更暫存到共用儲存庫:

git add horse.txt

7. 執行 git commit,將變更遞交到共用儲存庫:

git commit -m "Added horse.txt"

8. 執行 git push,從 本機儲存庫 中的預設分支 (master),透過 Git 用於 CodeCommit 儲存庫 的預設遠端名稱 (origin),推送您的初次遞交:

git push -u origin master

9. 切換到 本機儲存庫 並執行 git pull,將共用儲存庫對 CodeCommit 儲存庫 所做的遞交提取到本機儲存庫。然後執行 git log,以查看從共用儲存庫起始的遞交。

步驟 6:建立和分享分支在此步驟中,您會在 本機儲存庫 中建立分支,做一些變更,然後將分支推送至 CodeCommit 儲存庫。接著從 CodeCommit 儲存庫 將分支提取到共用儲存庫。

分支可讓您單獨開發不同版本的儲存庫內容 (例如,試用新的軟體功能,而不會影響團隊成員的工作)。當該功能穩定之後,便將分支合併到軟體中更穩定的分支。

您會使用 Git 建立分支,然後將分支指向您所做的第一個遞交。您會使用 Git 將分支推送到 CodeCommit 儲存庫。然後,您會切換到共用儲存體,使用 Git 將新的分支提取到共用本機儲存庫,然後探索分支。

1. 從 本機儲存庫,執行 git checkout,並指定分支名稱 (MyNewBranch) 和您在本機儲存庫中所做的第一個遞交的 ID。

如果您不知道遞交 ID,請執行 git log 以取得 ID。請確定遞交具有您的使用者名稱和電子郵件地址,而不是其他使用者的使用者名稱和電子郵件地址。這是為了模擬 master 是穩定版的 CodeCommit 儲存庫,而 MyNewBranch 分支是用於一些較不穩定的新功能:

API 版本 2015-04-1362

Page 71: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 7:建立和共用標籤

git checkout -b MyNewBranch commit-ID

2. 執行 git push,從 本機儲存庫 將新的分支傳送到 CodeCommit 儲存庫:

git push origin MyNewBranch

3. 現在,將分支提取到共用儲存庫並檢查結果:

1. 切換到共用儲存庫目錄 (shared-demo-repo)。2. 提取新的分支 (git fetch origin)。3. 確認已提取分支 (git branch --all 會顯示儲存庫所有分支的清單)。4. 切換到新的分支 (git checkout MyNewBranch)。5. 確認您已執行 git status 或 git branch 以切換到 MyNewBranch 分支。輸出顯示您所在的分支。在此

案例中應該是 MyNewBranch。6. 檢視分支中的遞交清單 (git log)。

以下是需要呼叫的 Git 命令清單:

git fetch origingit branch --allgit checkout MyNewBranchgit branch or git statusgit log

4. 切換回 master 分支並檢視其遞交清單。Git 命令應如下所示:

git checkout mastergit log

5. 切換到 本機儲存庫 中的 master 分支。您可以執行 git status 或 git branch。輸出顯示您所在的分支。在此案例中應該是 master。Git 命令應如下所示:

git checkout mastergit branch or git status

步驟 7:建立和共用標籤在此步驟中,您會在 本機儲存庫 中建立兩個標籤,將標籤與遞交相關聯,然後將標籤推送至 CodeCommit儲存庫。接著從 CodeCommit 儲存庫 將變更提取到共用儲存庫。

標籤用於讓遞交 (或分支,甚至是另一個標籤) 有一個人類可讀的名稱。例如,如果想要將遞交加上標籤"v2.1",就可以這樣做。 遞交、分支或標籤可以擁有任何數量相關聯的標籤數目,但個別標籤只能與一個遞交、分支或標籤相關聯。在此教學中,您會將一個遞交加上 release 標籤,而將另一個遞交加上 beta 標籤。

您會使用 Git 建立標籤,並將 release 標籤指向您所做的第一個遞交,而將 beta 標籤指向另一個使用者所做的遞交。接著使用 Git 將標籤推送到 CodeCommit 儲存庫。然後,您會切換到共用儲存體,使用 Git 將標籤提取到共用 本機儲存庫,並探索標籤。

1. 從 本機儲存庫 執行 git tag,並指定新標籤的名稱 (release) 和您在 本機儲存庫 中所做的第一個遞交的ID。

如果您不知道遞交 ID,請執行 git log 以取得 ID。請確定遞交具有您的使用者名稱和電子郵件地址,而不是其他使用者的使用者名稱和電子郵件地址。這是為了模擬您的遞交是穩定版的 CodeCommit 儲存庫:

API 版本 2015-04-1363

Page 72: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 8:設定存取許可

git tag release commit-ID

執行 git tag,將另一個使用者所做的遞交加上 beta 標籤。這是為了模擬遞交是一些較不穩定的新功能:

git tag beta commit-ID

2. 執行 git push --tags 將標籤傳送至 CodeCommit 儲存庫。3. 現在,將標籤提取到共用儲存庫並檢查結果:

1. 切換到共用儲存庫目錄 (shared-demo-repo)。2. 提取新的標籤 (git fetch origin)。3. 確認已提取標籤 (git tag 會顯示儲存庫的標籤清單)。4. 檢視每個標籤 (git log release 和 git log beta) 的相關資訊。

以下是需要呼叫的 Git 命令清單:

git fetch origingit taggit log releasegit log beta

4. 請在 本機儲存庫 中也試試看:

git log releasegit log beta

步驟 8:設定存取許可在此步驟中,您給予使用者許可來同步共用儲存庫與 CodeCommit 儲存庫。此為選用步驟。若使用者有興趣了解如何控制對 CodeCommit 儲存庫的存取,建議執行此步驟。

若要這樣做,請使用 IAM 主控台來建立 IAM 使用者,依預設,該使用者沒有可同步共用儲存庫與CodeCommit 儲存庫 的許可。您可以執行 git pull 來驗證是否如此。如果新使用者沒有同步的許可,則命令不會有作用。然後,您返回 IAM 主控台,並套用政策讓使用者可使用 git pull。同樣地,您可以執行 git pull來驗證是否如此。

此步驟假設您有在 AWS 帳戶中建立 IAM 使用者的許可。如果您沒有這些許可,則無法執行此步驟中的程序。直接跳到步驟 9:清除 (p. 66),以清除您用於此教學課程的資源。

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

務必使用您在 設定 (p. 5) 中使用的相同使用者名稱和密碼。2. 在導覽窗格中,選擇 Users (使用者),然後選擇 Create New Users (建立新使用者)。3. 在第一個 Enter User Names (輸入使用者名稱) 方塊中,輸入範例使用者名稱 (例如,JaneDoe-

CodeCommit)。選取 Generate an access key for each user (為每位使用者產生存取金鑰) 方塊,然後選擇 Create (建立)。

4. 選擇 Show User Security Credentials (顯示使用者安全登入資料)。記下存取金鑰 ID 和私密存取金鑰,或選擇 Download Credentials (下載登入資料)。

5. 按照適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7) 中的指示,產生並提供 IAM 使用者的登入資料。

API 版本 2015-04-1364

Page 73: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 8:設定存取許可

如果您想要使用 SSH,請按照 SSH 和 Linux, macOS, or Unix:設定 Git 和 CodeCommit 的公有和私有金鑰 (p. 26)或 SSH 和 Windows:設定 Git 和 CodeCommit 的公有和私有金鑰 (p. 30)中的指示,以公有和私有金鑰設定使用者。

6. 執行 git pull.應該會出現以下錯誤:

針對 HTTPS:

fatal: unable to access 'https://git-codecommit.us-east-2.amazonaws.com/v1/repos/repository-name/': The requested URL returned error: 403。

針對 SSH:

fatal: unable to access 'ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/repository-name/': The requested URL returned error: 403。

出現錯誤是因為新使用者沒有許可,無法同步共用儲存庫與 CodeCommit 儲存庫。7. 返回 IAM 主控台。在導覽窗格中,選擇 Policies (政策),然後選擇 Create Policy (建立政策)。(出現 Get

Started (開始使用) 按鈕時先選擇它,然後選擇 Create Policy (建立政策)。)8. 在 Create Your Own Policy (建立您自己的政策) 旁邊,選擇 Select (選取)。9. 在 Policy Name (政策名稱) 方塊中,輸入名稱 (例如,CodeCommitAccess-GettingStarted)。10. 在 Policy Document (政策文件) 方塊中,輸入下列內容,讓 IAM 使用者可以從任何與 IAM 使用者相關

聯的儲存庫進行提取:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" } ]}

Tip

如果您希望 IAM 使用者能夠將遞交推送至任何與 IAM 使用者相關聯的儲存庫,請改為輸入下列內容:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource": "*" } ]}

如需您可以給予使用者的其他 CodeCommit 動作和資源許可的資訊,請參閱 AWSCodeCommit 的身份驗證與存取控制 (p. 254)。

API 版本 2015-04-1365

Page 74: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 9:清除

11. 在導覽窗格中,選擇 Users (使用者)。12. 選擇您要連接政策的範例使用者名稱 (例如,JaneDoe-CodeCommit)。13. 選擇 Permissions (許可) 標籤。14. 在 Managed Policies (受管政策) 中,選擇 Attach Policy (連接政策)。15. 選取您剛建立的 CodeCommitAccess-GettingStarted 政策,然後選擇 Attach Policy (連接政策)。16. 執行 git pull.這一次,命令應該有作用,也應該會出現 Already up-to-date 訊息。17. 如果是使用 HTTPS,請切換到您的原始登入資料。如需詳細資訊,請參閱步驟 3:設定登入資料協助程

式 (p. 35)或步驟 3:設定登入資料協助程式 (p. 39)中的指示。

如果是使用 SSH,請切換到您的原始金鑰。如需詳細資訊,請參閱 SSH 和 Linux, macOS, or Unix:設定 Git 和 CodeCommit 的公有和私有金鑰 (p. 26) 或 SSH 和 Windows:設定 Git 和 CodeCommit 的公有和私有金鑰 (p. 30)。

您已來到此教學的最後部分。

步驟 9:清除在此步驟中,您會刪除此教學課程中使用的 CodeCommit 儲存庫,以免系統繼續向您收取儲存空間的費用。

您也可以移除本機機器上的 本機儲存庫 和共用儲存庫,因為刪除 CodeCommit 儲存庫 後就不需要它們Important

這個儲存庫刪除之後,就無法再複製到任何 本機儲存庫 或共用儲存庫。您也無法再從任何本機儲存庫或共用儲存庫,對此儲存庫提取資料或推送資料。這個操作無法復原。

刪除 CodeCommit 儲存庫 (主控台)1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Dashboard (儀表板) 頁面的儲存庫清單中,選擇 MyDemoRepo。3. 在導覽窗格中選擇 Settings (稅金設定)。4. 在 Settings (設定) 頁面的 Delete repository (刪除儲存庫) 中,選擇 Delete repository (刪除儲存庫)。5. 在 Type the name of the repository to confirm deletion (輸入儲存庫名稱以確認刪除) 旁的方塊中,輸入

MyDemoRepo,然後選擇 Delete (刪除)。

刪除 CodeCommit 儲存庫 (AWS CLI)執行 delete-repository (p. 128) 命令:

aws codecommit delete-repository --repository-name MyDemoRepo

刪除 本機儲存庫 和共用儲存庫針對 Linux, macOS, or Unix:

cd /tmprm -rf /tmp/my-demo-reporm -rf /tmp/shared-demo-repo

Windows:

cd c:\temp

API 版本 2015-04-1366

Page 75: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 9:清除

rd /s /q c:\temp\my-demo-repord /s /q c:\temp\shared-demo-repo

API 版本 2015-04-1367

Page 76: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南與其他 AWS 服務整合

與 AWS CodeCommit 的產品和服務整合

依預設,CodeCommit 整合了許多 AWS 服務。您也可以使用 CodeCommit 搭配 AWS 之外的產品和服務。下列資訊可協助您設定 CodeCommit 以整合您要使用的產品和服務。

Note

您可以自動建置遞交和將其部署到 CodeCommit 儲存庫,方法是與 CodePipeline 整合。若要進一步了解,請按照《AWS for DevOps 入門指南》中的步驟。

主題• 與其他 AWS 服務整合 (p. 68)• 整合來自社群的範例 (p. 71)

與其他 AWS 服務整合CodeCommit 已與下列 AWS 服務整合:

AWS Amplify AWS Amplify 讓您能輕鬆建立、設定和實作採用AWS 技術的可擴展性行動應用程式。Amplify 可無縫佈建和管理您的行動後端,並提供簡單的架構來將您的後端與 iOS、Android、Web 和 React Native前端輕鬆整合。Amplify 也可自動化前端與後端應用程式發行程序,讓您更快速地交付功能。

您可以在 Amplify 主控台連接您的 CodeCommit 儲存庫。在您授權 Amplify 主控台後,Amplify 會從儲存庫提供者擷取存取字符,但不會將字符存放 在AWS 伺服器上。Amplify 只會使用安裝在特定儲存庫中的部署金鑰來存取您的儲存庫。

進一步了解:

• AWS Amplify 使用者指南• 入門

AWS Cloud9 AWS Cloud9 包含用於在雲端編寫程式碼、建置、執行、測試、偵錯以及發行軟體的工具集合。此工具集合,稱為 AWS Cloud9 整合式開發環境或IDE。

您可以透過 Web 瀏覽器存取 AWS Cloud9IDE。IDE 提供豐富的程式碼編輯體驗,可支援多種程式設計語言和執行時間除錯器,以及內建終端機。

進一步了解:

• AWS Cloud9 使用者指南• AWS Cloud9 的 AWS CodeCommit 範例

API 版本 2015-04-1368

Page 77: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南與其他 AWS 服務整合

• 將 AWS Cloud9 與 AWS CodeCommit 整合 (p. 13)

AWS CloudFormation AWS CloudFormation 是一個能幫助您模型化與設定 AWS 資源的服務,讓您能花較少的時間管理這些資源,並且有更多時間專注在您的應用程式上。您建立範本來描述資源 (包括一個 CodeCommit 儲存庫),而 AWS CloudFormation 負責為您佈建與設定這些資源。

進一步了解:

• AWS CodeCommit 儲存庫資源頁面

AWS CloudTrail CloudTrail 會擷取 AWS 帳戶或代其發出的 AWSAPI 呼叫和相關事件,並將日誌檔案交付至您指定的 Amazon S3 儲存貯體。您可以將 CloudTrail 設定為,從 AWS CodeCommit 主控台、從 AWS CLI的 CodeCommit 命令、本機 Git 用戶端,以及使用CodeCommit API 擷取 API 呼叫。

進一步了解:

• 使用 AWS CloudTrail 記錄 AWS CodeCommitAPI 呼叫 (p. 303)

Amazon CloudWatch Events CloudWatch Events 可傳送近乎即時的系統事件串流,說明 AWS 資源所發生的變動。使用您可以快速設定的簡單規則,您可以比對事件並將它們路由到一或多個目標函數或串流。CloudWatch Events 在操作變更時會查覺到。CloudWatch Events 會透過傳送訊息來回應環境、啟用功能、執行變更和擷取狀態資訊,來回應這些操作變更並視需要進行動作。

您可以設定 CloudWatch Events 以監控CodeCommit 儲存庫,並回應儲存庫事件,方法是鎖定其他 AWS 服務 (例如 Amazon Simple QueueService、Amazon Kinesis、AWS Lambda 等等) 中的串流、函數、任務或其他程序。

進一步了解:

• CloudWatch Events 使用者指南• AWS CodeCommit 事件• 部落格文章:使用 Amazon CloudWatch Events

和 JGit 建置無伺服器 AWS CodeCommit 工作流程

API 版本 2015-04-1369

Page 78: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南與其他 AWS 服務整合

AWS CodeBuild CodeBuild 是雲端中的全受管建置服務,可編譯來源碼,並執行單位測試,然後產生已準備好部署的成品。您可以將要建置的來源碼和建置規格儲存在 CodeCommit 儲存庫中。您可以使用CodeBuild 直接搭配 CodeCommit,或者可以在具有 CodePipeline 的持續交付管道中納入 CodeBuild和 CodeCommit。

進一步了解:

• 規劃組建• 建立組建專案• 使用 CodePipeline 搭配 AWS CodeBuild 來執行

建置

AWS CodePipeline CodePipeline 是一種持續交付的服務,讓您能夠將發行軟體所需的步驟模型化、視覺化和自動化。您可以設定 CodePipeline 以使用 CodeCommit 儲存庫做為管道中的來源動作,並自動化建置、測試和部署您的變更。

進一步了解:

• CodePipeline 和 AWS CodeCommit 的簡易管道演練

• 為使用 CodeCommit 儲存庫的管道遷移至Amazon CloudWatch Events 變更偵測

• 用來自動啟動管道的變更偵測方法

AWS CodeStar AWS CodeStar 是一種雲端服務,用於建立、管理和處理 AWS 上的軟體開發專案。您可以使用AWS CodeStar 專案在 AWS 上迅速開發、建置及部署應用程式。AWS CodeStar 專案會為您的專案開發工具鏈建立並整合 AWS 服務,包括專案的CodeCommit 儲存庫。AWS CodeStar 也會將許可指派給該專案的團隊成員。這些許可會自動套用,包括用於存取 CodeCommit、建立和管理 Git 登入資料等等的許可。

您可以如同對任何其他 CodeCommit 儲存庫一般,設定為 AWS CodeStar 專案建立的儲存庫,方法是使用 AWS CodeCommit 主控台、從 AWS CLI 使用 CodeCommit 命令、本機 Git 用戶端,以及使用CodeCommit API。

進一步了解:

• 使用儲存庫 (p. 74)• 使用 AWS CodeStar 專案• 使用 AWS CodeStar 團隊

API 版本 2015-04-1370

Page 79: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南整合來自社群的範例

AWS Elastic Beanstalk Elastic Beanstalk 為受管服務,可讓您易於在AWS 雲端部署並管理應用程式,無須擔心執行這些應用程式的基礎設施。您可以使用 ElasticBeanstalk 命令列界面 (EB CLI) 直接從新的或現有的 CodeCommit 儲存庫部署您的應用程式。

進一步了解:

• 使用 EB CLI 搭配 AWS CodeCommit• 使用現有的 AWS CodeCommit 儲存庫• eb codesource (EB CLI 命令)

AWS Key Management Service AWS KMS 是一種受管服務,可讓您輕鬆地建立和控制用來加密資料的加密金鑰。依預設,CodeCommit 會使用 AWS KMS 來加密儲存庫。

進一步了解:

• AWS KMS 和加密 (p. 302)

AWS Lambda Lambda 可讓您執行程式碼,無需佈建或管理伺服器。您可以為叫用 Lambda 函數的 CodeCommit 儲存庫設定觸發,以回應儲存庫事件。

進一步了解:

• 為 Lambda 函數建立觸發 (p. 98)• AWS Lambda 開發人員指南

Amazon Simple Notification Service Amazon SNS 是一項 Web 服務,可讓應用程式、最終使用者和裝置快速從雲端傳送和接收通知。您可以為傳送 Amazon SNS 通知的 CodeCommit 儲存庫設定觸發,以回應儲存庫事件。您也可以使用Amazon SNS 通知來與其他 AWS 服務整合。例如,您可以使用 Amazon SNS 通知以傳送訊息到Amazon Simple Queue Service 佇列。

進一步了解:

• 為 Amazon SNS 主題建立觸發 (p. 94)• Amazon Simple Notification Service 開發人員指

整合來自社群的範例下列各節提供部落格文章、文章和社群所提供範例的連結。

Note

這些連結僅供參考,不應視為範例內容的完整清單或背書。AWS 不負責內容或是外部內容的準確性。

主題• 部落格文章 (p. 72)• 程式碼範例 (p. 73)

API 版本 2015-04-1371

Page 80: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南部落格文章

部落格文章• 精簡 AWS CodeCommit 中對分支的存取

了解如何透過建立和套用使用內容金鑰的 IAM 政策,來限制對儲存庫分支的遞交。

發佈日期:2018 年 5 月 16 日• 使用 AWS Fargate 複寫區域間的 AWS CodeCommit 儲存庫

了解如何使用無伺服器架構來設定從一個 AWS 區域到另一個區域的 CodeCommit 儲存庫持續複寫。

發佈日期:2018 年 4 月 11 日• 分配您的 AWS OpsWorks for Chef Automate 基礎設施

了解如何使用 CodePipeline、CodeCommit、CodeBuild 和 AWS Lambda 以確保已在一或多個 AWS 區域中的兩個或多個 Chef 伺服器上一致地部署技術指南和其他組態。

發佈日期:2018 年 3 月 9 日• Peanut Butter 和 Chocolate:使用 AWS CodeCommit 的 Azure 函數 CI/CD 管道

了解如何建立將程式碼儲存在 CodeCommit 儲存庫的 PowerShell 式 Azure 函數 CI/CD 管道。

發佈日期:2018 年 2 月 19 日• 使用 AWS CodePipeline、AWS CodeCommit、AWS CodeBuild、Amazon ECR 和 AWS Lambda 持續部

署至 Kubernetes

了解如何搭配使用 Kubernetes 和 AWS 來為容器式應用程式建立全受管的持續部署管道。

發佈日期:2018 年 1 月 11 日• 使用 AWS CodeCommit 提取請求來請求程式碼檢閱和討論程式碼

了解如何使用提取請求來對 CodeCommit 儲存庫中的程式碼變更進行檢閱、加上評論,以及以互動方式反覆執行。

發佈日期:2017 年 11 月 20 日• 使用 Amazon CloudWatch Events 和 JGit 建置無伺服器 AWS CodeCommit 工作流程

了解如何使用 CodeCommit 儲存庫事件和其他 AWS 服務中的目標動作,建立可處理儲存庫中變更的CloudWatch Events 規則。範例包括 AWS Lambda 函數,會在遞交時強制執行 Git 遞交訊息政策、複製CodeCommit 儲存庫以及將 CodeCommit 儲存庫備份至 Amazon S3。

發佈日期:2017 年 8 月 3 日• 使用 AWS CodeCommit 複寫和自動化儲存庫的同步

了解如何將 CodeCommit 儲存庫備份或複寫到另一個 AWS 區域,以及如何將託管於其他服務上的儲存庫備份到 CodeCommit。

發佈日期:2017 年 3 月 17 日• 遷移至 AWS CodeCommit

了解如何在使用 SourceTree 時,隨著從使用另一個 Git 儲存庫到 CodeCommit 的遷移,將程式碼推送到兩個儲存庫。

發佈日期:2016 年 9 月 6 日• 使用 Appium、AWS CodeCommit、Jenkins 和 AWS Device Farm 設定持續測試

了解如何使用 Appium、CodeCommit、Jenkins 和 Device Farm 來建立行動裝置的持續測試程序。API 版本 2015-04-13

72

Page 81: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南程式碼範例

發佈日期:2016 年 2 月 2 日• 在多個 AWS 帳戶中使用 AWS CodeCommit 搭配 Git 儲存庫

了解如何複製您的 CodeCommit 儲存庫,並在一個命令中設定登入資料協助程式,以對連往該儲存庫的連線使用特定的 IAM 角色。

發佈日期:2015 年 11 月• 整合 AWS OpsWorks 和 AWS CodeCommit

了解 AWS OpsWorks 如何可以自動從 CodeCommit 擷取應用程式和 Chef 技術指南。

發佈日期:2015 年 8 月 25 日• 使用 AWS CodeCommit 和 GitHub 登入資料協助程式

了解如何設定您的 gitconfig 檔案,以同時搭配 CodeCommit 和 GitHub 登入資料協助程式使用。

發佈日期:2015 年 9 月• 從 Eclipse 使用 AWS CodeCommit

了解如何在 Eclipse 中使用 EGit 工具來搭配 CodeCommit 使用。

發佈日期:2015 年 8 月• 使用 Amazon EC2 角色登入資料的 AWS CodeCommit

了解如何在設定對 CodeCommit 儲存庫的自動化代理程式存取時,為 Amazon EC2 使用執行個體描述檔。

發佈日期:2015 年 7 月• 整合 AWS CodeCommit 與 Jenkins

了解如何使用 CodeCommit 和 Jenkins 以支援兩個簡單的持續整合 (CI) 案例。

發佈日期:2015 年 7 月• 整合 AWS CodeCommit 與 Review Board

了解如何使用 Review Board 程式碼檢閱系統,將 CodeCommit 整合至開發工作流程。

發佈日期:2015 年 7 月

程式碼範例以下是 CodeCommit 使用者可能感興趣的程式碼範例。

• 可定期刪除 OS X 憑證存放區中快取登入資料的 Mac OS X 的指令碼

如果您在 Mac OS X 是使用 CodeCommit 的登入資料協助程式,您可能會很熟悉快取登入資料的問題。此指令碼示範一個解決方案。

作者:Nico Coetzee

發佈日期:2016 年 2 月

API 版本 2015-04-1373

Page 82: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

在 AWS CodeCommit 中使用儲存庫儲存庫是 CodeCommit 中的基本版本控制物件。專案的程式碼和檔案安全地存放於此處。其中還存放您的專案歷史記錄,包括從第一個遞交到最新的變更。您可以將儲存庫共用給其他使用者,讓你們共同處理專案。如果新增 AWS 標籤至儲存庫,您可以設定通知,讓儲存庫使用者收到事件的相關電子郵件 (例如,其他使用者對程式碼做註解)。您也可以變更儲存庫的預設設定、瀏覽其內容等等。您可以為儲存庫建立觸發,讓程式碼推送或其他事件觸發動作,例如電子郵件或程式碼函數。您甚至可以在本機電腦上設定儲存庫 (本機儲存庫),以將您的變更推送到多個儲存庫。

您必須先在您的 AWS 帳戶中設定 IAM 使用者,才能將變更推送到 CodeCommit 儲存庫。如需詳細資訊,請參閱 步驟 1:CodeCommit 的初始組態 (p. 7)。

如需有關在 CodeCommit 中使用儲存庫其他部分的資訊,請參閱使用檔案 (p. 130)、使用提取請求 (p. 138)、使用遞交 (p. 170)、使用分支 (p. 201),以及處理使用者偏好設定 (p. 216)。如需有關遷移至 CodeCommit 的資訊,請參閱遷移至 CodeCommit (p. 217)。

主題• 建立 AWS CodeCommit 儲存庫 (p. 75)• 連接到 AWS CodeCommit 儲存庫 (p. 77)• 共用 AWS CodeCommit 儲存庫 (p. 79)• 在 AWS CodeCommit 儲存庫中設定事件的通知 (p. 83)• 在 AWS CodeCommit 中標記儲存庫 (p. 88)• 管理 AWS CodeCommit 儲存庫的觸發 (p. 93)

API 版本 2015-04-1374

Page 83: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立儲存庫

• 檢視 CodeCommit 儲存庫詳細資訊 (p. 110)• 變更 AWS CodeCommit 儲存庫設定 (p. 114)• 同步本機儲存庫和 AWS CodeCommit 儲存庫之間的變更 (p. 116)• 將遞交推送到另一個 Git 儲存庫 (p. 117)• 設定 AWS CodeCommit 儲存庫的跨帳戶存取 (p. 120)• 刪除 AWS CodeCommit 儲存庫 (p. 127)

建立 AWS CodeCommit 儲存庫使用 AWS CLI 或 CodeCommit 主控台來建立空的 CodeCommit 儲存庫。如果您使用 AWS CLI 來建立CodeCommit 儲存庫,您可以在建立時將標籤新增到儲存庫。若要在建立之後將標籤新增到存放庫,請參閱新增標籤至儲存庫 (p. 88)。

這些指示的撰寫是假設您已完成設定 (p. 5)中的步驟。

Note

依據用量而定,您可能需要為建立或存取儲存庫支付費用。如需詳細資訊,請參閱 CodeCommit 產品資訊頁面的定價。

主題• 建立儲存庫 (主控台) (p. 75)• 建立儲存庫 (AWS CLI) (p. 76)

建立儲存庫 (主控台)建立 CodeCommit 儲存庫

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇您要在其中建立儲存庫的 AWS 區域。如需詳細資訊,請參閱區域和 Git 連線端

點 (p. 289)。3. 請在 Repositories (儲存庫) 頁面上,選擇 Create repository (建立儲存庫)。4. 在 Create repository (建立儲存庫) 頁面的 Repository name (儲存庫名稱) 中,輸入儲存庫的名稱。

Note

儲存庫名稱需區分大小寫。在您的 AWS 帳戶的 AWS 區域中,名稱必須是唯一的。5. (選用) 在 Description (描述) 中,輸入儲存庫的描述。這可協助您和其他使用者識別儲存庫的用途。

Note

描述欄位會在主控台中顯示 Markdown,並接受所有的 HTML 字元和所有有效 Unicode 字元。如果您是使用 GetRepository 或 BatchGetRepositories API 的應用程式開發人員,並且計劃要在網頁瀏覽器中顯示儲存庫描述欄位,請參閱 CodeCommit API 參考。

6. (選用) 選擇 Add tag (新增標籤),以新增一或多個儲存庫標籤 (自訂屬性標籤,可協助您整理和管理您的AWS 資源) 到您的儲存庫。如需詳細資訊,請參閱 在 AWS CodeCommit 中標記儲存庫 (p. 88)。

7. 選擇 Create (建立)。

建立儲存庫之後,您可以連接到該儲存庫並透過 CodeCommit 主控台或本機 Git 用戶端,或是透過將 CodeCommit 儲存庫與您喜愛的 IDE 整合,來開始新增程式碼。如需詳細資訊,請參閱設定 AWSCodeCommit (p. 5)。您也可以將您的儲存庫新增到持續交付管道。如需詳細資訊,請參閱簡易管道演練。

API 版本 2015-04-1375

Page 84: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立儲存庫 (AWS CLI)

若要取得有關新 CodeCommit 儲存庫 的詳細資訊,例如複製儲存庫時要使用的 URL,請從清單選擇儲存庫的名稱,或只是選擇在儲存庫名稱旁邊您要使用的連線通訊協定。

若要與他人共用這個儲存庫,您必須將 HTTPS 或 SSH 連結傳送給他們,以用來複製儲存庫。確定他們擁有存取儲存庫所需的許可。如需詳細資訊,請參閱共用儲存庫 (p. 79)和AWS CodeCommit 的身份驗證與存取控制 (p. 254)。

建立儲存庫 (AWS CLI)您可以使用 AWS CLI 來建立 CodeCommit 儲存庫。與主控台不同的是,如果您使用 AWS CLI 來建立,您可以將標籤新增到儲存庫。

1. 確定您已為 AWS CLI 設定儲存庫所在的 AWS 區域。若要驗證 AWS 區域,請在命令列或終端機輸入下列命令,並檢閱預設區域名稱的資訊:

aws configure

預設區域名稱必須符合 CodeCommit 中儲存庫的 AWS 區域。如需詳細資訊,請參閱區域和 Git 連線端點 (p. 289)。

2. 執行 create-repository 命令,並指定:

• 可唯一識別 CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。

Note

此名稱在 AWS 帳戶中必須是唯一的。• 有關 CodeCommit 儲存庫的選用評論 (使用 --repository-description 選項)。• 選用的一或多個索引鍵值對,做為 CodeCommit 儲存庫的標籤 (使用 --tags 選項)。

例如,建立名為 MyDemoRepo 的 CodeCommit 儲存庫,使用描述 "My demonstrationrepository",以及索引鍵為 Team 和值為 Saanvi 的標籤:

aws codecommit create-repository --repository-name MyDemoRepo --repository-description "My demonstration repository" --tags Team=Saanvi

Note

描述欄位會在主控台中顯示 Markdown,並接受所有的 HTML 字元和所有有效 Unicode 字元。如果您是使用 GetRepository 或 BatchGetRepositories API 的應用程式開發人員,並且計劃要在網頁瀏覽器中顯示儲存庫描述欄位,請參閱 CodeCommit API 參考。

3. 如果成功,此命令會輸出 repositoryMetadata 物件,以及下列資訊:

• 描述 (repositoryDescription)。• 唯一、系統產生的 ID (repositoryId)。• 名稱 (repositoryName)。• 與 CodeCommit 儲存庫 相關聯的 AWS 帳戶的 ID (accountId)。

以下是基於上述範例命令的一些範例輸出:

{ "repositoryMetadata": { "repositoryName": "MyDemoRepo", "cloneUrlSsh": "ssh://ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo",

API 版本 2015-04-1376

Page 85: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南連接到儲存庫

"lastModifiedDate": 1446071622.494, "repositoryDescription": "My demonstration repository", "cloneUrlHttp": "https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo", "creationDate": 1446071622.494, "repositoryId": "f7579e13-b83e-4027-aaef-650c0EXAMPLE", "Arn": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "accountId": "111111111111" }}

Note

在建立儲存庫時新增的標籤,不會在輸出中傳回。若要檢視與儲存庫關聯的標籤清單,請執行list-tags-for-resource (p. 90) 命令。

4. 記下 CodeCommit 儲存庫 的名稱和 ID。尤其是如果您使用 AWS CLI,您將需要該資訊來監控和變更CodeCommit 儲存庫 的相關資訊。

如果您忘記名稱或 ID,請遵循檢視 CodeCommit 儲存庫詳細資訊 (AWS CLI) (p. 111)中的指示。

建立儲存庫之後,您可以連接到該儲存庫,並開始新增程式碼。如需更多詳細資訊,請參閱 連接到儲存庫 (p. 77)。您也可以將您的儲存庫新增到持續交付管道。如需詳細資訊,請參閱簡易管道演練。

連接到 AWS CodeCommit 儲存庫當您第一次連接到 CodeCommit 儲存庫時,您一般會將它的內容複製到本機電腦。您也可以直接從CodeCommit 主控台新增檔案 (p. 133)至儲存庫中,並在其中編輯檔案 (p. 135)。或者,如果您已經有本機儲存庫,可以新增 CodeCommit 儲存庫做為遠端。本主題提供用於連接到 CodeCommit 儲存庫的指示。如果您想要將現有儲存庫移轉至 CodeCommit 的詳細資訊,請參閱遷移至 CodeCommit (p. 217)。

Note

依據用量而定,您可能需要為建立或存取儲存庫支付費用。如需詳細資訊,請參閱 CodeCommit 產品資訊頁面的定價。

主題• 連接到 CodeCommit 儲存庫的先決條件 (p. 77)• 透過複製儲存庫連接到 CodeCommit 儲存庫 (p. 78)• 將本機儲存庫連接到 CodeCommit 儲存庫 (p. 79)

連接到 CodeCommit 儲存庫的先決條件在您可以複製 CodeCommit 儲存庫,或將本機儲存庫連接到 CodeCommit 儲存庫之前:

• 您必須已為本機電腦設定連接到 CodeCommit 所需的軟體和設定。如需詳細資訊,請參閱設定 (p. 5)。• 您必須擁有您要連線之 CodeCommit 儲存庫 的複製 URL。此 URL 包含儲存庫的名稱以及它的 AWS 區

域。如需詳細資訊,請參閱檢視儲存庫詳細資訊 (p. 110)。

如果您尚未建立 CodeCommit 儲存庫,請按照建立儲存庫 (p. 75)中的指示,複製 CodeCommit 儲存庫的複製 URL,並回到此頁面。

如果您有一個 CodeCommit 儲存庫,但不知道它的名稱,請按照檢視儲存庫詳細資訊 (p. 110)中的指示。

API 版本 2015-04-1377

Page 86: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南透過複製儲存庫連接到 CodeCommit 儲存庫

• 您必須在本機電腦上擁有一個位置,可存放您要連線的 CodeCommit 儲存庫 的本機副本。(CodeCommit儲存庫 的此本機複本即 本機儲存庫。) 然後從該位置切換到和執行 Git 命令。例如,如果您要製作用於測試的暫時性複製,您可以使用 /tmp (適用於 Linux, macOS, or Unix) 或 c:\temp (適用於 Windows)。這是用於這些範例中的目錄路徑。

Note

您可以使用您要的任何目錄。如果您要複製長期使用的儲存庫,請考慮從工作目錄建立複製,而非用於暫時檔案的複製。如果是使用 /tmp 或 c:\temp 以外的目錄,當您依照這些指示時,請務必將該目錄以我們的目錄取代。

透過複製儲存庫連接到 CodeCommit 儲存庫如果您還沒有本機儲存庫,請按照此程序中的步驟來將 CodeCommit 儲存庫複製到本機電腦。

1. 完成必要條件,包括設定 (p. 5)。

Important

如果尚未完成設定,您無法連接到或複製儲存庫。2. 從 /tmp 目錄或 c:\temp 目錄,使用 Git 來執行 clone 命令。以下範例說明如何在US East (Ohio) 區域

中複製名為 MyDemoRepo 的儲存庫:

針對 HTTPS:

git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

針對 SSH:

git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

在這個範例中,git-codecommit.us-east-2.amazonaws.com 是儲存庫存在所在US East (Ohio)區域的Git 連接點,MyDemoRepo 代表 CodeCommit 儲存庫的名稱,而 my-demo-repo 代表 Git 將在/tmp 目錄或 c:\temp 目錄中建立的目錄名稱。如需有關支援 CodeCommit 的 AWS 區域和這些 AWS區域 Git 連線的詳細資訊,請參閱區域和 Git 連線端點 (p. 289)。

Note

當您在 Windows 作業系統上使用 SSH 以複製儲存庫時,您必須將 SSH 金鑰 ID 新增到連線字串,如下所示:

git clone ssh://[email protected]/v1/repos/MyDemoRepo my-demo-repo

如需更多詳細資訊,請參閱 適用於 Windows 上的 SSH 連線 (p. 29) 及 故障診斷 (p. 239)。

在 Git 建立目錄之後,它會將 CodeCommit 儲存庫 的副本提取到新建立的目錄。

如果 CodeCommit 儲存庫是新的或空的,您將看到訊息說明您要複製的是空的儲存庫。這是預期的行為。

Note

如果您遇到錯誤,說明 Git 找不到 CodeCommit 儲存庫 或您沒有連接到 CodeCommit 儲存庫的許可,請確定您已完成先決條件 (p. 5),包括在本機電腦上將許可指派給 IAM 使用者,並為Git 和 CodeCommit 設定 IAM 使用者登入資料。同時,請確定您已指定正確的儲存庫名稱。

API 版本 2015-04-1378

Page 87: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將本機儲存庫連接到 CodeCommit 儲存庫

成功將 本機儲存庫 連接到您的 CodeCommit 儲存庫 之後,您現在可以開始從 本機儲存庫 執行 Git 命令以建立遞交、分支和標籤,並從 CodeCommit 儲存庫 往返推送和提取。

將本機儲存庫連接到 CodeCommit 儲存庫如果您已有本機儲存庫,並且想要新增 CodeCommit 儲存庫做為遠端儲存庫,請完成以下步驟。如果您已有遠端儲存庫,並且想要將遞交推送至 CodeCommit 以及另一個遠端儲存庫,請遵循將遞交推送到兩個儲存庫 (p. 117)中的步驟。

1. 完成先決條件 (p. 77)。2. 從命令提示字元或終端機,切換到您的本機儲存庫目錄,並執行 git remote add 命令來新增

CodeCommit 儲存庫做為本機儲存庫的遠端儲存庫。

例如,以下命令會將別名為 origin 的遠端新增至 https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo:

針對 HTTPS:

git remote add origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo

針對 SSH:

git remote add origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo

此命令不會傳回任何結果。3. 若要驗證您已新增 CodeCommit 儲存庫做為本機儲存庫的遠端,請執行 git remote -v 命令,它應該會建

立類似以下的輸出:

針對 HTTPS:

origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch) origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (push)

針對 SSH:

origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch) origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (push)

成功將 本機儲存庫 連接到您的 CodeCommit 儲存庫 之後,您可以開始從 本機儲存庫 執行 Git 命令以建立遞交、分支和標籤,並從 CodeCommit 儲存庫 往返推送和提取。

共用 AWS CodeCommit 儲存庫建立 CodeCommit 儲存庫之後,您可以將它與其他使用者共用。首先,決定在複製和使用 Git 用戶端或 IDE來連接到您的儲存庫時,要向使用者建議哪個通訊協定 (HTTPS 或 SSH)。然後將 URL 和連線資訊傳送到您想要與其共用儲存庫的使用者。根據您的安全需求、共用儲存庫也可能需要建立 IAM 群組、將受管政策套用到該群組以及編輯 IAM 政策以強化存取。

API 版本 2015-04-1379

Page 88: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南選擇用來與您的使用者共用的連線通訊協定

Note

授予使用者對儲存庫的主控台存取之後,這些使用者即可直接在主控台中新增或編輯檔案,而不需設定 Git 用戶端或其他連線。如需更多詳細資訊,請參閱 建立檔案或將其新增至 AWSCodeCommit 儲存庫 (p. 132) 及 編輯 AWS CodeCommit 儲存庫中的檔案內容 (p. 134)。

這些指示的撰寫是假設您已完成設定 (p. 5)和建立儲存庫 (p. 75)中的步驟。Note

依據用量而定,您可能需要為建立或存取儲存庫支付費用。如需詳細資訊,請參閱 CodeCommit 產品資訊頁面的定價。

主題• 選擇用來與您的使用者共用的連線通訊協定 (p. 80)• 為您的儲存庫建立 IAM 政策 (p. 80)• 為儲存庫使用者建立 IAM 群組 (p. 81)• 與您的使用者共享連線資訊 (p. 82)

選擇用來與您的使用者共用的連線通訊協定當您在 CodeCommit 中建立儲存庫時會產生兩個端點:一個用於 HTTPS 連線,另一個用於 SSH 連線。兩者都提供網路上的安全連線。您的使用者可以使用任一通訊協定。無論您建議使用者採用哪個通訊協定,這兩個端點都保持在作用中。

HTTPS 連線需要以下兩者中的一個:

• Git 登入資料,IAM 使用者可以在 IAM 中為自己產生。Git 登入資料是儲存庫的使用者設定並使用的最簡單方法。

• AWS 存取金鑰,您的儲存庫使用者必須在 AWS CLI 包含的登入資料協助程式中設定。(這是根帳戶或聯合身分使用者可用的唯一方法)。

SSH 連接需要使用者進行以下動作:

• 產生公私金鑰對。• 存放公有金鑰。• 將公有金鑰與其 IAM 使用者建立關聯。• 在使用者自己的本機電腦上設定已知的主機檔案。• 在使用者自己的本機電腦上建立和維護設定檔。

由於此組態程序較複雜,我們建議您針對 CodeCommit 的連線選擇 HTTPS 和 Git 登入資料。

如需有關 HTTPS、SSH、Git 和遠端儲存庫的詳細資訊,請參閱 設定 (p. 5) 或查詢您的 Git 文件。如需通訊協定的一般概觀,以及每個通訊協定如何與遠端儲存庫通訊的詳細資訊,請參閱概觀伺服器上的 Git - 通訊協定。

Note

雖然 Git 支援各種連線通訊協定,CodeCommit 不支援使用不安全通訊協定 (例如本機通訊協定或一般 HTTP) 的連線。

為您的儲存庫建立 IAM 政策AWS 在 IAM 中為 CodeCommit 提供三個受管政策。您無法編輯這些政策和套用至與您的 AWS 帳戶關聯的所有儲存庫。不過,您可以使用這些政策做為範本,以建立只套用至您想要共用的儲存庫的自訂受管政策。

API 版本 2015-04-1380

Page 89: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為儲存庫使用者建立 IAM 群組

您的客戶受管政策可以特別套用至您想要共用的儲存庫。如需詳細資訊,請參閱受管政策和 IAM 使用者和群組。

Tip

如需更精確地控制對您的儲存庫的存取,您可以建立一個以上的客戶受管政策,並將政策套用到不同的 IAM 使用者和群組。

如需有關檢閱受管政策的內容,以及使用政策來建立和套用許可的資訊,請參閱AWS CodeCommit 的身份驗證與存取控制 (p. 254)。

為您的儲存庫建立客戶受管政策

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

2. 在 Dashboard (儀表板) 導覽區域中,選擇 Policies (政策),然後選擇 Create Policy (建立政策)。3. 在 Create Policy (建立政策) 頁面的 Copy an AWS Managed Policy (複製 受管政策) 旁,選擇 Select (選

取)。4. 在 Copy an AWS Managed Policy (複製 AWS 受管政策) 頁面中的 Search Policies (搜尋政策) 中,輸入

AWSCodeCommitPowerUser。選擇政策名稱旁的 Select (選取)。5. 在 Review Policy (檢閱政策) 頁面的 Policy Name (政策名稱) 中,輸入政策的新名稱 (例如

AWSCodeCommitPowerUser-MyDemoRepo)。

在 Policy Document (政策文件) 中,將 Resource 行的 "*" 部分取代為 CodeCommit 儲存庫的 AmazonResource Name (ARN),如下所示:

"Resource": [ "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo" ]

Tip

若要尋找 CodeCommit 儲存庫的 ARN,請移至 CodeCommit 主控台,然後從清單中選擇儲存庫名稱。如需詳細資訊,請參閱檢視儲存庫詳細資訊 (p. 110)。

如果您希望此政策套用到多個儲存庫,請指定儲存庫的 ARN,將每個儲存庫新增為資源。在每個資源陳述式之間包含逗號,如下所示:

"Resource": [ "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "arn:aws:codecommit:us-east-2:111111111111:MyOtherDemoRepo" ]

6. 選擇 Validate Policy (驗證政策)。在政策經過驗證後,選擇 Create Policy (建立政策)。

為儲存庫使用者建立 IAM 群組若要管理對您的儲存庫的存取,請為其使用者建立 IAM 群組,新增 IAM 使用者至該使用者群組,然後將您在上一個步驟中建立的客戶受管政策附加至該群組。

如果您使用 SSH,您必須將另一個受管政策附加到 IAMUserSSHKeys 群組,這是 IAM 受管政策,允許使用者上傳他們的 SSH 公有金鑰並將其與他們用於連接至 CodeCommit 的 IAM 使用者關聯。

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

2. 在 Dashboard (儀表板) 導覽區域中,選擇 Groups (群組),然後選擇 Create New Group (建立新的群組)。

API 版本 2015-04-1381

Page 90: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南與您的使用者共享連線資訊

3. 在 Set Group Name (設定群組名稱) 頁面的 Group Name (群組名稱) 中,輸入群組的名稱 (例如,MyDemoRepoGroup),然後選擇 Next Step (下一步)。請考慮將儲存庫名稱包含於群組名稱中。

Note

此名稱在 AWS 帳戶中必須是唯一的。4. 選取您在上一節建立的客戶受管政策旁的方塊 (例如,AWSCodeCommitPowerUser-MyDemoRepo)。5. 在 Review (檢閱) 頁面上,選擇 Create Group (建立群組)。IAM 會建立此群組並將指定的政策連接。此

群組將會出現在與您的 AWS 帳戶相關聯的群組清單中。6. 從清單中選擇您的群組。7. 在群組摘要頁面上,選擇 Users (使用者) 標籤,然後選擇 Add Users to Group (新增使用者到群組)。在

清單中 (顯示與您的 AWS 帳戶相關聯的所有使用者),選取您要允許存取 CodeCommit 儲存庫的使用者旁的方塊,然後選擇 Add Users (新增使用者)。

Tip

您可以使用 [Search (搜尋)] 方塊,依名稱快速尋找使用者。8. 新增使用者之後,關閉 IAM 主控台。

與您的使用者共享連線資訊1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇已建立儲存庫的 AWS 區域。儲存庫為 AWS 區域特有的。如需詳細資訊,請參

閱區域和 Git 連線端點 (p. 289)。3. 在 Repositories (儲存庫) 頁面上,尋找您要分享的儲存庫名稱。4. 在 Clone URL (複製 URL) 中,選擇使用者所要使用的通訊協定 (HTTPS 或 SSH)。這樣會複製該連線通

訊協定的複製 URL。5. 將複製 URL 連同其他任何指示傳送給使用者,例如安裝 AWS CLI、設定描述檔或安裝 Git。請務必包含

連線通訊協定的組態資訊 (例如,對於 HTTPS,設定 Git 的登入資料協助程式)。

以下範例電子郵件提供使用者使用 HTTPS 連線協定和US East (Ohio) (us-east-2) 區域中的 Git 登入資料來連接到 MyDemoRepo儲存庫的資訊。此電子郵件的撰寫是假設使用者已安裝 Git 且熟悉其使用方式。

I've created a CodeCommit repository for us to use while working on our project. The name of the repository is MyDemoRepo, andit is in the US East (Ohio) (us-east-2) region. Here's what you need to do in order to get started using it:

1. Make sure that your version of Git on your local computer is 1.7.9 or later.2. Generate Git credentials for your IAM user by signing into the IAM console here: https://console.aws.amazon.com/iam/. Switch to the Security credentials tab for your IAM user and choose the Generate button in HTTPS Git credentials for CodeCommit. Make sure to save your credentials in a secure location!3. Switch to a directory of your choice and clone the CodeCommit repository to your local machine by running the following command: git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo4. When prompted for user name and password, use the Git credentials you just saved. That's it! If you'd like to learn more about using CodeCommit, you can start with the tutorial here (p. 60).

您可以在設定 (p. 5)中找到完整的安裝指示。

API 版本 2015-04-1382

Page 91: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南設定儲存庫事件的通知

在 AWS CodeCommit 儲存庫中設定事件的通知您可以設定儲存庫的通知規則,使得儲存庫使用者會收到有關您指定的儲存庫事件類型的電子郵件。當事件符合通知規則設定時會傳送通知。您可以建立要用於通知的 Amazon SNS 主題,或使用 AWS 帳戶中的現有主題。

您可以使用 CodeCommit 主控台和 AWS CLI 來設定通知。

API 版本 2015-04-1383

Page 92: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南設定儲存庫事件的通知

主題• 使用儲存庫通知規則 (p. 85)• 建立通知規則 (p. 85)

API 版本 2015-04-1384

Page 93: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南使用儲存庫通知規則

• 變更或停用通知 (p. 87)• 刪除通知 (p. 87)

使用儲存庫通知規則設定通知規則可在在有人採取的動作會影響其他使用者時傳送電子郵件,藉以協助您的儲存庫使用者。例如,您可以設定一個通知規則,在對遞交進行評論時傳送通知。在此組態中,當儲存庫使用者對遞交中的某個程式碼行進行評論時,其他儲存庫中使用者會收到一封電子郵件。他們可以登入和檢視評論。對評論的回應也會產生電子郵件,使得儲存庫使用者可掌握資訊。

通知規則與儲存庫觸發不同,也與您在 2019 年 11 月 5 日前於 CodeCommit 主控台中設定的通知不同。

• 雖然您可以設定觸發以使用 Amazon SNS 來傳送有關一些儲存庫事件的電子郵件,這些事件受限於作業事件,例如建立分支和將程式碼推送到分支。觸發不會使用 CloudWatch Events 規則來評估儲存庫事件。它們的範圍更有限。如需如何使用觸發的詳細資訊,請參閱管理儲存庫的觸發 (p. 93)。

• 2019 年 11 月 5 日之前設定的通知可用事件類型較少,而且無法設定為與 Amazon Chime 聊天室或 Slack管道整合。您可以繼續使用在 2019 年 11 月 5 日之前設定的通知,但無法建立此類型的通知。請改為建立並使用通知規則。建議您使用通知規則,並停用或刪除 2019 年 11 月 5 日之前建立的通知。如需更多詳細資訊,請參閱 建立通知規則 (p. 85) 及 刪除通知 (p. 87)。

建立通知規則您可以使用通知規則來通知使用者重要的變更,例如:在儲存庫中建立提取請求時。通知規則會同時指定用於傳送通知的事件和 Amazon SNS 主題。如需詳細資訊,請參閱什麼是通知?

您可以使用主控台或 AWS CLI 為 AWS CodeCommit 建立通知規則。

建立通知規則 (主控台)

1. Sign in to the AWS Management Console and open the CodeCommit console at https://console.aws.amazon.com/codecommit/.

2. 選擇 Repositories (儲存庫),然後選擇您要新增通知規則的儲存庫。3. 在儲存庫頁面中,選擇 Notify (通知),然後選擇 Create notification rule (建立通知規則)。您也可以移至

儲存庫的 Settings (設定) 頁面,然後選擇 Create notification rule (建立通知規則)。4. 在 Notification name (通知名稱) 中,輸入規則的名稱。5. 如果您只想將提供至 Amazon EventBridge 的資訊納入通知中,請在 Detail type (明細類型) 中選擇

Basic (基本)。如果您要將提供至 Amazon EventBridge 的資訊,或可能由 CodeCommit 或通知管理員提供的資訊納入通知中,請選擇 Full (完整)。

如需詳細資訊,請參閱了解通知內容與安全性。6. 在 Events that trigger notifications (觸發通知的事件) 中,選取您要傳送通知的事件。

類別 事件

註解 遞交時

提取請求時

提取請求 已建立

來源已更新

狀態已變更

API 版本 2015-04-1385

Page 94: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立通知規則

類別 事件已合併

分支和標籤 已建立

Deleted (已刪除)

Updated

7. 在 Targets (目標) 中,選擇 Create SNS topic (建立 SNS 主題)。

Note

建立主題時,會套用 CodeCommit 允許將事件發佈至主題的政策。使用專門為 CodeCommit通知建立的主題,也有助於確保您只將使用者新增至特定主題的訂閱清單,限定發布您想要查看的管道相關通知。

在 codestar-notifications- 字首之後,輸入主題的名稱,然後選擇 Submit (提交)。

Note

如果您要使用現有 Amazon SNS 主題而非建立新主題,請在 Targets (目標) 中選擇其 ARN。請確定主題具有適當的存取政策,而非 2019 年 11 月 5 日前針對 CodeCommit 通知使用的Amazon SNS 主題,且訂閱者清單只包含允許查看儲存庫相關資訊的使用者。如需詳細資訊,請參閱設定現有 Amazon SNS 主題通知以及了解通知內容與安全性。

8. 若要完成建立規則,請選擇 Submit (提交)。9. 您必須先在規則中為使用者訂閱 Amazon SNS 主題,才能接收通知。如需詳細資訊,請參閱讓使用者

訂閱做為目標的 Amazon SNS 主題。您也可以設定通知與 AWS Chatbot 之間的整合,並將通知傳送至Amazon Chime 聊天室或 Slack 頻道。如需詳細資訊,請參閱設定通知和 AWS Chatbot 之間的整合。

建立通知規則 (AWS CLI)

1. 在終端機或命令提示字元中,執行 create-notification rule 命令以產生 JSON 架構:

aws codestar-notifications create-notification-rule --generate-cli-skeleton > rule.json

您可以將檔案命名為任何您想要的名稱。在此範例中,檔案命名為 rule.json。2. 在純文字編輯器中開啟 JSON 檔案,並編輯成包含您想要用於規則的資源、事件類型和 Amazon SNS

目標。下列範例顯示 ID 為 123456789012 的 AWS 帳戶中,MyDemoRepo 這個儲存庫的通知規則,名為 MyNotificationRule。建立分支和標籤時,具有完整詳細資訊類型的通知會傳送至名為MyNotificationTopic 的 Amazon SNS 主題:

{ "Name": "MyNotificationRule", "EventTypeIds": [ "codecommit-repository-branches-and-tags-created" ], "Resource": "arn:aws:codecommit:us-east-1:123456789012:MyDemoRepo", "Targets": [ { "TargetType": "SNS", "TargetAddress": "arn:aws:sns:us-east-1:123456789012:MyNotificationTopic" } ], "Status": "ENABLED", "DetailType": "FULL"}

API 版本 2015-04-1386

Page 95: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南變更或停用通知

儲存檔案。3. 在終端機或命令列中,再次執行 create-notification-rule 命令,使用您剛編輯的檔案建立通知規則:

aws codestar-notifications create-notification-rule --cli-input-json file://rule.json

4. 如果成功,此命令會傳回通知規則的 ARN,如下所示:

{ "Arn": "arn:aws:codestar-notifications:us-east-1:123456789012:notificationrule/dc82df7a-EXAMPLE"}

變更或停用通知您可以使用 AWS CodeCommit 主控台 來變更 2019 年 11 月 5 日前建立的通知設定方式,包括將電子郵件傳送給使用者的事件類型,以及用於傳送儲存庫之相關電子郵件的 Amazon SNS 主題。您也可以使用CodeCommit 主控台來管理電子郵件地址清單和訂閱主題的端點,或停用通知。

變更通知設定

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要設定 2019 年 11 月 5 日前建立之通知所在的儲存庫名稱。3. 在導覽窗格中,選擇 Settings (設定),然後選擇 Notifications (通知)。如果有橫幅通知您有通知而非通知

規則,請選擇 Manage existing notifications (管理現有通知)。4. 選擇 Edit (編輯)。5. 進行變更,然後選擇 Save (儲存變更)。

停用通知是一種簡單的方法,可暫時防止使用者從 2019 年 11 月 5 日之前建立的通知接收儲存庫事件的相關電子郵件。例如,您可能想要在建立並設定使用的通知規則,而非通知時停用通知。

若要永久刪除 2019 年 11 月 5 日之前建立的通知,請依照 刪除通知 (p. 87) 中的步驟進行操作。

若要關閉通知

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要停用通知所在儲存庫的名稱。3. 在導覽窗格中,選擇 Settings (設定),然後選擇 Notifications (通知)。如果有橫幅通知您有通知而非通知

規則,請選擇 Manage existing notifications (管理現有通知)。4. 選擇 Edit (編輯), 然後在 Event status (事件狀態) 中使用滑桿來關閉 Enable notifications (啟用通知)。選

擇 Save (儲存)。5. 事件狀態會變更為 Disabled (已停用)。不會傳送關於事件的電子郵件。停用通知時,即會自動停用儲存

庫的 CloudWatch Events 規則。請勿在 CloudWatch Events 主控台中手動變更其狀態。

刪除通知如果您不想要再使用 2019 年 11 月 5 日之前為儲存庫建立的通知,您可以刪除與通知相關聯的 AmazonCloudWatch Events 規則。這將自動刪除通知。不會刪除任何訂閱或用於通知的 Amazon SNS 主題。

API 版本 2015-04-1387

Page 96: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南標記儲存庫

Note

如果您從主控台變更儲存庫的名稱,不需修改,2019 年 11 月 5 日前建立的通知即可繼續運作。不過,如果您從命令列或使用 API 變更儲存庫的名稱,通知將不再運作。還原通知最簡單的方法是刪除通知設定,然後再次對其進行設定。

刪除通知設定

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要移除 2019 年 11 月 5 日前建立之通知的所在儲存庫名稱。3. 在導覽窗格中,選擇 Settings (設定),然後選擇 Notifications (通知)。如果有橫幅通知您有通知而非通知

規則,請選擇 Manage existing notifications (管理現有通知)。4. 在 CloudWatch event rule (CloudWatch 事件規則) 中,複製為通知建立的規則名稱。5. Sign in to the AWS Management Console and open the CloudWatch console at https://

console.aws.amazon.com/cloudwatch/.6. 在 Events (事件) 中,選擇 Rules (規則)。在 Name (名稱) 中,貼上為通知建立的規則名稱。選擇規則,

然後在 Actions (動作) 中選擇 Delete (刪除)。7. (選用) 刪除通知設定後,若要變更或刪除通知所用的 Amazon SNS 主題,請移至位於 https://

console.aws.amazon.com/sns/v3/home 的 Amazon SNS 主控台。如需詳細資訊,請參閱《AmazonSimple Notification Service Developer Guide》中的清理。

在 AWS CodeCommit 中標記儲存庫標籤是一個自訂屬性標籤,您或 AWS 將其指派到 AWS 資源。AWS 標籤不同於 Git 標籤,後者可套用到遞交。每個 AWS 標籤都有兩個部分:

• 標籤金鑰 (例如,CostCenter、Environment、Project 或 Secret )。標籤金鑰會區分大小寫。• 一個名為標籤值 (例如,111122223333 或 Production,或團隊名稱) 的選用欄位。忽略標籤值基本上

等同於使用空字串。與標籤金鑰相同,標籤值會區分大小寫。

這些合稱為金鑰值組。對於儲存庫上標籤數量的限制以及標籤金鑰和值的限制,請參閱 限制 (p. 298)。

標籤可協助您識別和整理 AWS 資源。許多 AWS 服務支援標籤,因此您可以對來自不同服務的資源指派相同的標籤,以指出資源是相關的。例如,您可以將相同標籤指派給 CodeCommit 儲存庫 (您將此儲存庫指派給 Amazon S3 儲存貯體)。如需使用標籤的提示,請參閱 AWS Answers 部落格上的 AWS 標籤策略文章。

在 CodeCommit 中,主要資源是儲存庫。您可以使用 CodeCommit 主控台、AWS CLI、CodeCommit APIs或 AWS 開發套件來新增、管理和移除儲存庫的標籤。除了使用標籤來識別、整理和追蹤您的儲存庫,您也可以在 IAM 政策中使用標籤,以協助控制誰可以檢視您的儲存庫並與其互動。如需以標籤為基礎的存取政策範例,請參閱範例 5:在帶有標籤的儲存庫上拒絕或允許動作 (p. 274)。

主題• 新增標籤至儲存庫 (p. 88)• 檢視儲存庫的標籤 (p. 90)• 編輯儲存庫的標籤 (p. 91)• 從儲存庫移除標籤 (p. 92)

新增標籤至儲存庫新增標籤到儲存庫可協助您識別和整理您的 AWS 資源和管理存取權。首先,您將一或多個標籤 (金鑰值組) 到儲存庫。請記住儲存庫的標籤數有所限制。金鑰和值欄位可使用的字數有所限制。如需詳細資訊,請

API 版本 2015-04-1388

Page 97: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南新增標籤至儲存庫

參閱 限制 (p. 298)。當您擁有標籤後,您可以建立 IAM 政策根據標籤來管理儲存庫存取權。您可以使用CodeCommit 主控台或 AWS CLI 將標籤新增到儲存庫。

Important

新增標籤到儲存庫可能會影響存取該儲存庫。將標籤新增到儲存庫之前,務必檢閱任可能會使用標籤控制存取資源何的 IAM 政策,例如儲存庫。如需以標籤為基礎的存取政策範例,請參閱 範例 5:在帶有標籤的儲存庫上拒絕或允許動作 (p. 274)。

當您建立時,如需有關將標籤新增到儲存庫的詳細資訊,請參閱 建立儲存庫 (主控台) (p. 75)。

主題• 新增標籤至儲存庫 (主控台) (p. 89)• 新增標籤至儲存庫 (AWS CLI) (p. 90)

新增標籤至儲存庫 (主控台)您可以使用 CodeCommit 主控台將一個或多個標籤新增到 CodeCommit 儲存庫。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要新增標籤所在的儲存庫名稱。3. 在導覽窗格中選擇 Settings (設定)。選擇 Repository tags (儲存庫標籤)。4. 如果沒有已經新增到儲存庫的標籤,請選擇 Add tag (新增標籤)。否則,選擇 Edit (編輯),然後選擇

Add tag (新增標籤)。5. 在 Key (金鑰) 中,輸入標籤的名稱。您可以在 Value (值) 中為標籤新增選用值。

6. (選用) 若要新增另一個標籤,再選擇 Add tag (新增標籤) 一次。7. 當您完成新增標籤的作業時,請選擇 Submit (提交)。

API 版本 2015-04-1389

Page 98: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視儲存庫的標籤

新增標籤至儲存庫 (AWS CLI)依照以下步驟,使用 AWS CLI 新增標籤到 CodeCommit 儲存庫。若要在建立儲存庫將標籤新增到儲存庫,請參閱建立儲存庫 (AWS CLI) (p. 76)。

在這些步驟中,我們假設您已經安裝新版 AWS CLI 或更新到最新版本。如需詳細資訊,請參閱安裝 AWSCommand Line Interface。

在終端機或命令列,執行 tag-resource 命令,指定您要新增標籤之儲存庫的 Amazon Resource Name(ARN),和您想新增之標籤的索引鍵和值。您可以新增多個標籤到儲存庫。例如,若要使用兩個標籤來標記名為 MyDemoRepo 的儲存庫,一個標籤索引鍵名為 Status 且標籤值為 Secret,另一個標籤索引鍵名為Team 且標籤值為 Saanvi:

aws codecommit tag-resource --resource-arn arn:aws:codecommit:us-west-2:111111111111:MyDemoRepo --tags Status=Secret,Team=Saanvi

如果成功,這個命令不會傳回任何內容。

檢視儲存庫的標籤標籤可協助您辨識和整理您的 AWS 資源和管理存取權。如需使用標籤的提示,請參閱 AWS Answers 部落格上的 AWS 標籤策略文章。如需以標籤為基礎的存取政策範例,請參閱 範例 5:在帶有標籤的儲存庫上拒絕或允許動作 (p. 274)。

檢視儲存庫的標籤 (主控台)您可以使用 CodeCommit 主控台以檢視 CodeCommit 儲存庫相關聯的標籤。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要檢視標籤所在的儲存庫名稱。3. 在導覽窗格中選擇 Settings (設定)。選擇 Repository tags (儲存庫標籤)。

API 版本 2015-04-1390

Page 99: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南編輯儲存庫的標籤

檢視儲存庫的標籤 (AWS CLI)依照以下步驟,使用 AWS CLI 檢視 CodeCommit 儲存庫 的 AWS 標籤。如果沒有已新增標籤,則會傳回空白清單。

在終端機或命令列,執行 list-tags-for-resource 命令。例如,若要檢視名為 MyDemoRepo 且 ARN 為arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo 之儲存庫的標籤索引鍵和標籤值清單:

aws codecommit list-tags-for-resource --resource-arn arn:aws:codecommit:us-west-2:111111111111:MyDemoRepo

如果成功,此命令會傳回類似如下的資訊:

{ "tags": { "Status": "Secret", "Team": "Saanvi" }}

編輯儲存庫的標籤您可以變更與儲存庫相關聯標籤的值。您也可以變更金鑰名稱,等於移除目前的標籤,並新增一個不同的新的名稱和相同的值作為其他金鑰。請記住金鑰和值欄位可使用的字數有所限制。如需詳細資訊,請參閱 限制 (p. 298)。

Important

編輯儲存庫標籤可能會影響存取該儲存庫。編輯儲存庫名稱 (金鑰) 或標籤的值之前,務必檢閱任何可能會使用標籤金鑰或值來控制存取資源的 IAM 政策,例如儲存庫。如需以標籤為基礎的存取政策範例,請參閱 範例 5:在帶有標籤的儲存庫上拒絕或允許動作 (p. 274)。

編輯儲存庫的標籤 (主控台)您可以使用 CodeCommit 主控台以編輯 CodeCommit 儲存庫相關聯的標籤。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要編輯標籤所在的儲存庫名稱。3. 在導覽窗格中選擇 Settings (設定)。選擇 Repository tags (儲存庫標籤)。4. 選擇 Edit (編輯)。

API 版本 2015-04-1391

Page 100: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南從儲存庫移除標籤

5.

請執行下列其中一項:

• 若要變更標籤,請在 Key (金鑰) 輸入新的名稱。變更標籤名稱等於移除標籤並使用新的金鑰名稱新增一個新的標籤。

• 若要變更標籤的值,請輸入新的值。如果您想要變更值為沒有,請刪除目前的值並保留欄位空白。6. 當您完成編輯標籤,選擇 Submit (提交)。

編輯儲存庫的標籤 (AWS CLI)依照以下步驟,使用 AWS CLI 更新 CodeCommit 的標籤。您可以變更現有索引鍵的值或新增其他索引鍵。

在終端機或命令列,執行 tag-resource 命令,指定您要更新標籤之儲存庫的 Amazon Resource Name(ARN),並指定標籤索引鍵和標籤值:

aws codecommit tag-resource --resource-arn arn:aws:codecommit:us-west-2:111111111111:MyDemoRepo --tags Team=Li

從儲存庫移除標籤您可以移除一或多個儲存庫關聯的標籤。移除標籤不會從其他 AWS 資源刪除與該標籤相關聯的標籤。

API 版本 2015-04-1392

Page 101: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南管理儲存庫的觸發

Important

移除儲存庫標籤可能會影響存取該儲存庫。從儲存庫移除標籤之前,務必檢閱任何可能會使用標籤金鑰或值來控制存取資源的 IAM 政策,例如儲存庫。如需以標籤為基礎的存取政策範例,請參閱 範例 5:在帶有標籤的儲存庫上拒絕或允許動作 (p. 274)。

從儲存庫移除標籤 (主控台)您可以使用 CodeCommit 主控台移除標籤和 CodeCommit 儲存庫之間的關聯。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要移除標籤所在的儲存庫名稱。3. 在導覽窗格中選擇 Settings (設定)。選擇 Repository tags (儲存庫標籤)。4. 選擇 Edit (編輯)。5. 尋找您想要移除的標籤,然後選擇 Remove tag (移除標籤)。6. 當您完成移除標籤,請選擇 Submit (提交)。

從儲存庫移除標籤 (AWS CLI)依照以下步驟,使用 AWS CLI 從 CodeCommit 儲存庫移除標籤。移除標籤並不會將其刪除,只會移除標籤和儲存庫之間的關聯性。

Note

如果您刪除 CodeCommit 儲存庫,所有標籤關聯會從已刪除的儲存庫中移除。您不需要在刪除儲存庫之前移除標籤。

在終端機或命令列,執行 untag-resource 命令,指定您要移除標籤之儲存庫的 Amazon Resource Name(ARN),和您想移除之標籤的標籤索引鍵。例如,在名為 MyDemoRepo 的儲存庫中移除標籤,使用標籤索引鍵 Status:

aws codecommit untag-resource --resource-arn arn:aws:codecommit:us-west-2:111111111111:MyDemoRepo --tag-keys Status

如果成功,這個命令不會傳回任何內容。若要驗證與儲存庫關聯的標籤,請執行 list-tags-for-resource 命令。

管理 AWS CodeCommit 儲存庫的觸發您可以設定 CodeCommit 儲存庫,讓程式碼推送或其他事件觸發動作,例如從 Amazon Simple NotificationService (Amazon SNS) 傳送通知,或叫用 AWS Lambda 中的函數。每個 CodeCommit 儲存庫最多可以建立十個觸發。

設定觸發通常基於下列原因:

• 每當有資料推送到儲存庫時,即傳送電子郵件給訂閱使用者。• 當有資料推送到儲存庫的主要分支後,便通知外部建置系統以開始建置。

在通知外部建置系統的這種案例中,需要編寫 Lambda 函數來與其他應用程式互動。電子郵件案例只需要建立 Amazon SNS 主題。

這個主題將說明如何設定許可,讓 CodeCommit 在 Amazon SNS 和 Lambda 中觸發動作。其中也包含用於建立、編輯、測試和刪除觸發的範例連結。

API 版本 2015-04-1393

Page 102: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為 CodeCommit 建立資源和新增許可

主題• 為 CodeCommit 建立資源和新增許可 (p. 94)• 範例:為 Amazon SNS 主題建立 AWS CodeCommit 觸發 (p. 94)• 範例:為 AWS Lambda 函數建立 AWS CodeCommit 觸發 (p. 98)• 範例:在 AWS CodeCommit 中為現有的 AWS Lambda 函數建立觸發 (p. 101)• 編輯 AWS CodeCommit 儲存庫的觸發 (p. 106)• 測試 AWS CodeCommit 儲存庫的觸發 (p. 107)• 從 AWS CodeCommit 儲存庫刪除觸發 (p. 108)

為 CodeCommit 建立資源和新增許可您可以將 Amazon SNS 主題和 Lambda 函數 與 CodeCommit 中的觸發整合,但必須先建立資源,再以政策來設定資源,而此政策授予 CodeCommit 與這些資源互動的許可。您必須在 CodeCommit 儲存庫所在的同一 AWS 區域建立資源。例如,如果儲存庫在 US East (Ohio) (us-east-2),則 Amazon SNS 主題或 Lambda函數就必須在US East (Ohio)。

• 對於 Amazon SNS 主題,如果是使用與 CodeCommit 儲存庫相同的帳戶建立 Amazon SNS 主題,則您不需要設定額外的 IAM 政策或許可。當您建立並訂閱 Amazon SNS 主題後,您可以立即建立 CodeCommit觸發。• 如需有關在 Amazon SNS 中建立主題的詳細資訊,請參閱 Amazon SNS 文件。• 如需使用 Amazon SNS 將訊息傳送至 Amazon SQS 佇列的資訊,請參閱《Amazon SNS 開發人員指

南》中的將訊息傳送至 Amazon SQS 佇列。• 如需使用 Amazon SNS 呼叫 Lambda 函數的資訊,請參閱《Amazon SNS 開發人員指南》中的呼叫

Lambda 函數。• 如果您想要將觸發設定為使用另一個 Amazon SNS 帳戶中的 AWS 主題,您必須先以允許 CodeCommit

發佈到該主題的政策來設定該主題。如需更多詳細資訊,請參閱 範例 1:建立允許跨帳戶存取 AmazonSNS 主題的政策 (p. 275)。

• 您可以在 Lambda 主控台,建立觸發當做函數的一部分,以設定 Lambda 函數。這是最簡單的方法,因為在 Lambda 主控台建立的觸發,會自動包含 CodeCommit 叫用 Lambda 函數所需的許可。如果您在CodeCommit 中建立觸發,則必須包含政策來允許 CodeCommit 叫用函數。如需更多詳細資訊,請參閱 為現有的 Lambda 函數建立觸發 (p. 101) 及 範例 3:使用 CodeCommit 觸發條件建立適用於 AWSLambda 整合的政策 (p. 277)。

範例:為 Amazon SNS 主題建立 AWS CodeCommit觸發您可以為 CodeCommit 儲存庫建立觸發,讓該儲存庫中的事件觸發來自 Amazon Simple Notification Service(Amazon SNS) 主題的通知。您可以對 Amazon SNS 主題建立觸發,讓使用者訂閱儲存庫事件的通知,例如刪除分支。您也可以享用 Amazon SNS 主題與其他服務的整合,例如 Amazon Simple Queue Service(Amazon SQS) 和 AWS Lambda。

Note

您必須將觸發指向現有的 Amazon SNS 主題,以當做為了回應儲存庫事件而採取的動作。如需有關建立和訂閱 Amazon SNS 主題的詳細資訊,請參閱 Amazon Simple Notification Service 入門。

主題• 對 CodeCommit 儲存庫的 Amazon SNS 主題建立觸發 (主控台) (p. 95)• 對 CodeCommit 儲存庫的 Amazon SNS 主題建立觸發 (AWS CLI) (p. 95)

API 版本 2015-04-1394

Page 103: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為 Amazon SNS 主題建立觸發

對 CodeCommit 儲存庫的 Amazon SNS 主題建立觸發 (主控台)1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇儲存庫以針對儲存庫事件建立觸發。3. 在儲存庫的導覽窗格中,選擇 Settings (設定),然後選擇 Triggers (觸發)。4. 選擇 Create trigger (建立觸發),然後執行下列動作:

• 在 Trigger name (觸發名稱) 中,輸入觸發的名稱 (例如,MyFirstTrigger)。• 在 Events (事件) 中,選擇將觸發 Amazon SNS 主題來傳送通知的儲存庫事件。

如果您選擇 All repository events (所有儲存庫事件),則無法選擇其他任何事件。若要選擇事件子集,請移除 All repository events (所有儲存庫事件),然後從清單中選擇一或多個事件。例如,如果您希望僅當使用者在 CodeCommit 儲存庫中建立分支或標籤時才執行觸發,請移除 All repository events (所有儲存庫事件),然後選擇 Create branch or tag (建立分支或標籤)。

• 如果您希望將觸發套用到儲存庫的所有分支,請在 Branches (分支) 中保持空白選擇,因為這個預設選項會自動將觸發套用到所有分支。如果您希望此觸發只套用到特定分支,請從儲存庫分支清單中選擇最多 10 個分支名稱。

• 在 Choose the service to use (選擇要使用的服務) 中,選擇 Amazon SNS。• 在 Amazon SNS 中,從清單中選擇主題名稱,或輸入主題的 ARN。• 在 Custom data (自訂資料) 中,提供要包含在 Amazon SNS 主題所傳送通知中的任何選用資訊 (例

如,開發人員在此儲存庫中討論開發時所使用的 IRC 管道名稱)。此欄位是字串。無法用於傳遞任何動態參數。

5. (選用) 選擇 Test trigger (測試觸發)。此步驟有助於確認您已正確設定 CodeCommit 與 Amazon SNS 主題之間的存取。會使用 Amazon SNS 主題,以使用來自儲存庫的資料 (如果有) 傳送測試通知。如果沒有實際的資料可用,測試通知會包含範例資料。

6. 選擇 Create trigger (建立觸發),以完成建立觸發。

對 CodeCommit 儲存庫的 Amazon SNS 主題建立觸發 (AWS CLI)您也可以使用命令列來為 Amazon SNS 主題建立觸發,以回應 CodeCommit 儲存庫事件,例如當有人將遞交推送至您的儲存庫時。

為 Amazon SNS 主題建立觸發

1. 開啟純文字編輯器,並建立 JSON 檔案,在其中指定:

• Amazon SNS 主題名稱。• 您要使用此觸發來監控的儲存庫和分支。(如果您不指定任何分支,則觸發會套用到儲存庫中的所有分

支。)• 啟動此觸發的事件。

儲存檔案。

例如,若要為名為 MyDemoRepo 的儲存庫建立觸發,以針對 master 和 preprod 這兩個分支,將所有儲存庫事件發佈到名為 MySNSTopic 的 Amazon SNS 主題:

{ "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyFirstTrigger", "destinationArn": "arn:aws:sns:us-east-2:80398EXAMPLE:MySNSTopic", "customData": "", "branches": [

API 版本 2015-04-1395

Page 104: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為 Amazon SNS 主題建立觸發

"master", "preprod" ], "events": [ "all" ] } ]}

儲存庫的每個觸發在 JSON 中都必須有一個觸發區塊。若要為儲存庫建立多個觸發,請在 JSON 中包含多個觸發區塊。請記住,此檔案中建立的所有觸發是針對指定的儲存庫。您無法在單一 JSON 檔案中為多個儲存庫建立觸發。例如,如果您想要為儲存庫建立兩個觸發,則可以建立含有兩個觸發區塊的JSON 檔案。在下列範例中,第二個觸發未指定分支,因此該觸發會套用到所有分支:

{ "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyFirstTrigger", "destinationArn": "arn:aws:sns:us-east-2:80398EXAMPLE:MySNSTopic", "customData": "", "branches": [ "master", "preprod" ], "events": [ "all" ] }, { "name": "MySecondTrigger", "destinationArn": "arn:aws:sns:us-east-2:80398EXAMPLE:MySNSTopic2", "customData": "", "branches": [], "events": [ "updateReference", "deleteReference" ] } ]}

您可以為您指定的事件建立觸發,例如將遞交推送至儲存庫時。事件類型包括:

• all 代表指定的儲存庫和分支中的所有事件。• updateReference 表示遞交推送到指定的儲存庫和分支。• createReference 表示指定的儲存庫中建立新的分支或標籤。• deleteReference 表示指定的儲存庫中刪除分支或標籤。

Note

您可以在一個觸發中使用多個事件類型。不過,如果您指定 all,則無法指定其他事件。

若要查看有效事件類型的完整清單,請在終端機或命令提示字元中輸入 aws codecommit put-repository-triggers help。

此外,您可以在 customData 中包含字串 (例如,開發人員在此儲存庫中討論開發時所使用的 IRC 管道名稱)。此欄位是字串。無法用於傳遞任何動態參數。在為了回應觸發而傳回的 CodeCommit JSON中,將會附加此字串當做屬性。

2. (選用) 在終端機或命令提示字元中,執行 test-repository-triggers 命令。此測試使用儲存庫的範例資料(如果沒有資料可用,則產生範例資料),將通知傳送給 Amazon SNS 主題的訂閱者。例如,以下用於

API 版本 2015-04-1396

Page 105: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為 Amazon SNS 主題建立觸發

測試名為 trigger.json 的觸發檔案中的 JSON 檔案有效,而且 CodeCommit 可以發佈至 AmazonSNS 主題:

aws codecommit test-repository-triggers --cli-input-json file://trigger.json

如果成功,此命令會傳回類似如下的資訊:

{ "successfulExecutions": [ "MyFirstTrigger" ], "failedExecutions": []}

3. 在終端機或命令提示字元中,執行 put-repository-triggers 命令在 CodeCommit 中建立觸發。例如,若要使用名為 trigger.json 的 JSON 檔案來建立觸發:

aws codecommit put-repository-triggers --cli-input-json file://trigger.json

此命令會傳回類似以下的組態 ID:

{ "configurationId": "0123456-I-AM-AN-EXAMPLE"}

4. 若要檢視觸發的組態,請執行 get-repository-triggers 命令,並指定儲存庫的名稱:

aws codecommit get-repository-triggers --repository-name MyDemoRepo

此命令會傳回為儲存庫設定之所有觸發的結構,類似如下:

{ "configurationId": "0123456-I-AM-AN-EXAMPLE", "triggers": [ { "events": [ "all" ], "destinationArn": "arn:aws:sns:us-east-2:80398EXAMPLE:MySNSTopic", "branches": [ "master", "preprod" ], "name": "MyFirstTrigger", "customData": "Project ID 12345" } ]}

5. 為了測試觸發本身的功能,請進行遞交並推送至您已設定觸發的儲存庫。您應該會看到來自 AmazonSNS 主題的回應。例如,如果您已設定 Amazon SNS 主題傳送電子郵件,則在訂閱該主題的電子郵件帳戶中,您應該會看到來自 Amazon SNS 的電子郵件。

以下是為了回應推送至 CodeCommit 儲存庫,而從 Amazon SNS 傳來的電子郵件的範例輸出:

{ "Records":[ { "awsRegion":"us-east-2", "codecommit":{ "references" : [

API 版本 2015-04-1397

Page 106: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為 Lambda 函數建立觸發

{ "commit":"317f8570EXAMPLE", "created":true, "ref":"refs/heads/NewBranch" }, { "commit":"4c925148EXAMPLE", "ref":"refs/heads/preprod", } ] }, "eventId":"11111-EXAMPLE-ID", "eventName":"ReferenceChange", "eventPartNumber":1, "eventSource":"aws:codecommit", "eventSourceARN":"arn:aws:codecommit:us-east-2:80398EXAMPLE:MyDemoRepo", "eventTime":"2016-02-09T00:08:11.743+0000", "eventTotalParts":1, "eventTriggerConfigId":"0123456-I-AM-AN-EXAMPLE", "eventTriggerName":"MyFirstTrigger", "eventVersion":"1.0", "customData":"Project ID 12345", "userIdentityARN":"arn:aws:iam::80398EXAMPLE:user/JaneDoe-CodeCommit", } ]}

範例:為 AWS Lambda 函數建立 AWS CodeCommit觸發您可以為 CodeCommit 儲存庫建立觸發,讓儲存庫中的事件叫用 Lambda 函數。在這個範例中,您會建立Lambda 函數來傳回 URL,以用於將儲存庫複製到 Amazon CloudWatch 日誌。

主題• 建立 Lambda 函數 (p. 98)• 在 AWS CodeCommit 儲存庫中檢視 Lambda 函數的觸發 (p. 101)

建立 Lambda 函數使用 Lambda 主控台來建立函數時,您也可以為 Lambda 函數建立 CodeCommit 觸發。以下步驟包括範例Lambda 函數。範例以兩種語言提供:JavaScript 和 Python。該函數會傳回 URL,以用於將儲存庫複製到CloudWatch 日誌。

使用 Lambda 藍圖建立 Lambda 函數

1. Sign in to the AWS Management Console and open the AWS Lambda console at https://console.aws.amazon.com/lambda/.

2. 在 Lambda Functions (函數) 頁面上,選擇 Create a Lambda function (建立 函數)。(如果您以前未用過Lambda,請選擇 Get Started Now (立即開始使用)。)

3. 在 Select blueprint (選取藍圖) 頁面上,選擇 Blank function (空白函數)。4. 在 Configure triggers (設定觸發) 頁面上,從服務下拉式清單中,選擇 AWS CodeCommit。

API 版本 2015-04-1398

Page 107: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為 Lambda 函數建立觸發

• 在 Repository name (儲存庫名稱) 中,選擇您要設定觸發的儲存庫名稱,而此觸發會使用 Lambda 函數以回應儲存庫事件。

• 在 Trigger name (觸發名稱) 中,輸入觸發的名稱 (例如,MyLambdaFunctionTrigger)。• 在 Events (事件) 中,選擇將觸發 Lambda 函數的儲存庫事件。如果您選擇 All repository events (所有

儲存庫事件),則無法選擇其他任何事件。如果您想要選擇事件子集,請清除 All repository events (所有儲存庫事件),然後從清單中選擇您要的事件。例如,如果您希望僅當使用者在 AWS CodeCommit儲存庫中建立標籤或分支時才執行觸發,請移除 All repository events (所有儲存庫事件),然後選擇Create branch or tag (建立分支或標籤)。

• 如果您希望將觸發套用至儲存庫的所有分支,請在 Branches (分支) 中選擇 All branches (所有分支)。否則,選擇 Specific branches (特定分支)。依預設會新增儲存庫的預設分支。您可以保留此分支,或從清單中刪除此分支。從儲存庫分支清單中,最多選擇十個分支名稱。

• (選用) 在 Custom data (自訂資料) 中,輸入要在 Lambda 函數中包含的資訊 (例如,開發人員在討論儲存庫中開發時所使用的 IRC 管道名稱)。此欄位是字串。無法用於傳遞任何動態參數。

選擇 Next (下一步)。5. 在 Configure function (設定函數) 頁面的 Name (名稱) 中,輸入函數的名稱 (例

如,MyCodeCommitFunction)。在 Description (描述) 中,輸入函數的選擇性描述。如果您想要建立範例 JavaScript 函數,請在 Runtime (執行時間) 中選擇 Node.js。如果您想要建立範例 Python 函數,請選擇 Python 2.7。

6. 在 Code entry type (程式碼輸入類型) 中,選擇 Edit code inline (以內嵌方式編輯程式碼),然後將 helloworld 程式碼換成以下兩個範例其中一個。

適用於 Node.js:

var aws = require('aws-sdk');var codecommit = new aws.CodeCommit({ apiVersion: '2015-04-13' });

exports.handler = function(event, context) { //Log the updated references from the event var references = event.Records[0].codecommit.references.map(function(reference) {return reference.ref;}); console.log('References:', references); //Get the repository from the event and show its git clone URL var repository = event.Records[0].eventSourceARN.split(":")[5]; var params = {

API 版本 2015-04-1399

Page 108: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為 Lambda 函數建立觸發

repositoryName: repository }; codecommit.getRepository(params, function(err, data) { if (err) { console.log(err); var message = "Error getting repository metadata for repository " + repository; console.log(message); context.fail(message); } else { console.log('Clone URL:', data.repositoryMetadata.cloneUrlHttp); context.succeed(data.repositoryMetadata.cloneUrlHttp); } });};

適用於 Python:

import jsonimport boto3

codecommit = boto3.client('codecommit')

def lambda_handler(event, context): #Log the updated references from the event references = { reference['ref'] for reference in event['Records'][0]['codecommit']['references'] } print("References: " + str(references)) #Get the repository from the event and show its git clone URL repository = event['Records'][0]['eventSourceARN'].split(':')[5] try: response = codecommit.get_repository(repositoryName=repository) print("Clone URL: " +response['repositoryMetadata']['cloneUrlHttp']) return response['repositoryMetadata']['cloneUrlHttp'] except Exception as e: print(e) print('Error getting repository {}. Make sure it exists and that your repository is in the same region as this function.'.format(repository)) raise e

7. 在 Lambda function handler and role (函數處理常式和角色) 中,執行以下動作:

• 在 Handler (處理常式) 中,保留衍生自函數的預設值 (適用於 Node.js 範例的 index.handler,或適用於 Python 範例的 lambda_function.lambda_handler)。

• 在 Role (角色) 中選擇 Create a custom role (建立自訂角色)。在 IAM 主控台執行下列動作:• 在 IAM Role (IAM 角色) 中,選擇 lambda_basic_execution。• 在 Policy Name (政策名稱) 中,選擇Create a new role policy (建立新的角色政策)。• 選擇 Allow (允許) 以建立角色,然後返回 Lambda 主控台。Role (角色) 現在顯示的值應該為lambda_basic_execution。

Note

如果您選擇不同角色,或為角色選擇不同的名稱,請務必一樣用在這個主題的步驟中。

選擇 Next (下一步)。8. 在 Review (檢閱) 頁面上,檢閱函數的設定,然後選擇 Create function (建立函數)。

API 版本 2015-04-13100

Page 109: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為現有的 Lambda 函數建立觸發

在 AWS CodeCommit 儲存庫中檢視 Lambda 函數的觸發建立 Lambda 函數之後,您可以在 AWS CodeCommit 中檢視和測試觸發。測試觸發會執行函數以回應您指定的儲存庫事件。

檢視和測試 Lambda 函數的觸發

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇儲存庫以檢視其中的觸發。3. 在儲存庫的導覽窗格中,選擇 Settings (設定),然後選擇 Triggers (觸發)。4. 檢閱儲存庫的觸發清單。您應該會看到您在 Lambda 主控台建立的觸發。從清單中選擇它,然後選

擇 Test trigger (測試觸發)。此選項會嘗試以有關儲存庫的範例資料來叫用函數,包括儲存庫最新的遞交 ID。(如果不存在遞交歷史記錄,則會產生由零組成的範例值。) 這有助於確認您已正確設定 AWSCodeCommit 與 Lambda 函數之間的存取。

5. 為了進一步驗證觸發的功能,請進行遞交並推送至您已設定觸發的儲存庫。在 Lambda 主控台,您在Lambda 函數的 Monitoring (監控) 標籤上應該會看到該函數的回應。從 Monitoring (監控) 標籤中,選擇View logs in CloudWatch (在 CloudWatch 中檢視日誌)。CloudWatch 主控台會在新標籤中開啟,並顯示函數的事件。從清單中,根據您推送遞交的時間,選取對應於此時間的日誌串流。您應該會看到類似下列的事件資料:

START RequestId: 70afdc9a-EXAMPLE Version: $LATEST2015-11-10T18:18:28.689Z 70afdc9a-EXAMPLE References: [ 'refs/heads/master' ]2015-11-10T18:18:29.814Z 70afdc9a-EXAMPLE Clone URL: https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepoEND RequestId: 70afdc9a-EXAMPLEREPORT RequestId: 70afdc9a-EXAMPLE Duration: 1126.87 ms Billed Duration: 1200 ms Memory Size: 128 MB Max Memory Used: 14 MB

範例:在 AWS CodeCommit 中為現有的 AWSLambda 函數建立觸發如果要建立觸發以叫用 Lambda 函數,最簡單的方法是在 Lambda 主控台建立該觸發。此內建整合可確保CodeCommit 具有執行函數所需的許可。若要新增現有 Lambda 函數的觸發,請移至 Lambda 主控台,然後選擇函數。在函數的 Triggers (觸發) 標籤上,依照 Add trigger (新增觸發) 中的步驟。這些步驟類似於建立Lambda 函數 (p. 98)中的步驟。

您也可以在 CodeCommit 儲存庫中為 Lambda 函數建立觸發。這麼做需要您選擇要叫用的現有 Lambda 函數。它還需要您手動設定 CodeCommit 執行函數所需的許可。

主題• 手動設定許可以允許 CodeCommit 執行 Lambda 函數 (p. 101)• 在 CodeCommit 儲存庫中為 Lambda 函數建立觸發 (主控台) (p. 103)• 為 CodeCommit 儲存庫的 Lambda 函數建立觸發 (AWS CLI) (p. 103)

手動設定許可以允許 CodeCommit 執行 Lambda 函數如果您在 CodeCommit 中建立觸發以叫用 Lambda 函數,則必須手動設定許可,以允許 CodeCommit 執行Lambda 函數。若要避免此手動設定方式,請考慮改以在 Lambda 主控台為函數建立觸發。

允許 CodeCommit 執行 Lambda 函數

1. 開啟純文字編輯器並建立 JSON 檔案,在檔案中指定 Lambda 函數名稱、CodeCommit 儲存庫的詳細資訊,以及您要在 Lambda 中允許的動作,類似如下:

API 版本 2015-04-13101

Page 110: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為現有的 Lambda 函數建立觸發

{ "FunctionName": "MyCodeCommitFunction", "StatementId": "1", "Action": "lambda:InvokeFunction", "Principal": "codecommit.amazonaws.com", "SourceArn": "arn:aws:codecommit:us-east-1:80398EXAMPLE:MyDemoRepo", "SourceAccount": "80398EXAMPLE"}

2. 以容易記住的名稱將檔案儲存為 JSON 檔案 (例如,AllowAccessfromMyDemoRepo.json)。3. 使用您剛建立的 JSON 檔案,在終端機 (Linux, macOS, or Unix) 或命令列 (Windows) 執行 aws lambda

add-permissions 命令,將許可新增至與 Lambda 函數相關聯的資源政策:

aws lambda add-permission - -cli-input-json file://AllowAccessfromMyDemoRepo.json

此命令會傳回您剛新增的政策陳述式的 JSON,類似如下:

{ "Statement": "{\"Condition\":{\"StringEquals\":{\"AWS:SourceAccount\":\"80398EXAMPLE\"},\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:codecommit:us-east-1:80398EXAMPLE:MyDemoRepo\"}},\"Action\":[\"lambda:InvokeFunction\"],\"Resource\":\"arn:aws:lambda:us-east-1:80398EXAMPLE:function:MyCodeCommitFunction\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"codecommit.amazonaws.com\"},\"Sid\":\"1\"}"}

如需 Lambda 函數之資源政策的詳細資訊,請參閱《AWS Lambda 使用者指南》中的 AddPermission和提取/推送事件模型。

4. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

5. 在 Dashboard (儀表板) 導覽窗格中,選擇 Roles (角色),然後在角色清單中,選取lambda_basic_execution。

6. 在角色的摘要頁面上,選擇 Permissions (許可) 標籤,然後在 Inline Policies (內嵌政策) 中,選擇Create Role Policy (建立角色政策)。

7. 在 Set Permissions (設定許可) 頁面上,選擇 Policy Generator (政策產生器),然後選擇 Select (選取)。8. 在 Edit Permissions (編輯許可) 頁面上,執行下列動作:

• 在 Effect (效果) 中,選擇 Allow (允許)。• 在 AWS Service (AWS 服務) 中,選擇 AWS CodeCommit。• 在 Actions (動作) 中,選取 GetRepository。• 在 Amazon Resource Name (ARN) 中,輸入儲存庫的 ARN (例如,arn:aws:codecommit:us-east-1:80398EXAMPLE:MyDemoRepo)。

選擇 Add Statement (新增陳述式),然後選擇 Next Step (下一步)。9. 在 Review Policy (檢閱政策) 頁面上,選擇 Apply Policy (套用政策)。

您的政策陳述式應該類似於下列範例:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt11111111", "Effect": "Allow", "Action": [

API 版本 2015-04-13102

Page 111: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為現有的 Lambda 函數建立觸發

"codecommit:GetRepository" ], "Resource": [ "arn:aws:codecommit:us-east-1:80398EXAMPLE:MyDemoRepo" ] } ]}

在 CodeCommit 儲存庫中為 Lambda 函數建立觸發 (主控台)建立 Lambda 函數之後,您可以在 CodeCommit 中建立觸發,以執行函數來回應您指定的儲存庫事件。

Note

您必須先設定政策來允許 CodeCommit 叫用函數及允許 Lambda 函數取得儲存庫的相關資訊,才能成功測試或執行範例的觸發。如需詳細資訊,請參閱允許 CodeCommit 執行 Lambda 函數 (p. 101)。

為 Lambda 函數建立觸發

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇儲存庫以針對儲存庫事件建立觸發。3. 在儲存庫的導覽窗格中,選擇 Settings (設定),然後選擇 Triggers (觸發)。4. 選擇 Create trigger (建立觸發)。5. 在 Create trigger (建立觸發) 中,執行下列操作:

• 在 Trigger name (觸發名稱) 中,輸入觸發的名稱 (例如,MyLambdaFunctionTrigger)。• 在 Events (事件) 中,選擇將觸發 Lambda 函數的儲存庫事件。

如果您選擇 All repository events (所有儲存庫事件),則無法選擇其他任何事件。如果您想要選擇事件子集,請清除 All repository events (所有儲存庫事件),然後從清單中選擇您要的事件。例如,如果您希望僅當使用者在 CodeCommit 儲存庫中建立標籤或分支時才執行觸發,請移除 All repositoryevents (所有儲存庫事件),然後選擇 Create branch or tag (建立分支或標籤)。

• 如果您希望將觸發套用到儲存庫的所有分支,請在 Branches (分支) 中保持空白選擇,因為這個預設選項會自動將觸發套用到所有分支。如果您希望此觸發只套用到特定分支,請從儲存庫分支清單中選擇最多 10 個分支名稱。

• 在 Choose the service to use (選擇要使用的服務) 中,選擇 AWS Lambda。• 在 Lambda function (Lambda 函數) 中,從清單選擇函數名稱,或輸入函數的 ARN。• (選用) 在 Custom data (自訂資料) 中,輸入要在 Lambda 函數中包含的資訊 (例如,開發人員在討論

儲存庫中開發時所使用的 IRC 管道名稱)。此欄位是字串。無法用於傳遞任何動態參數。6. (選用) 選擇 Test trigger (測試觸發)。此選項會嘗試以有關儲存庫的範例資料來叫用函數,包括儲存庫最

新的遞交 ID。(如果不存在遞交歷史記錄,則會產生由零組成的範例值。) 這有助於確認您已正確設定CodeCommit 與 Lambda 函數之間的存取。

7. 選擇 Create trigger (建立觸發),以完成建立觸發。8. 為了驗證觸發的功能,請進行遞交並推送至您已設定觸發的儲存庫。在 Lambda 主控台,您在 Lambda

函數的 Monitoring (監控) 標籤上應該會看到該函數的回應。

為 CodeCommit 儲存庫的 Lambda 函數建立觸發 (AWS CLI)您也可以使用命令列來為 Lambda 函數建立觸發,以回應 CodeCommit 儲存庫事件,例如當有人將遞交推送至您的儲存庫時。

API 版本 2015-04-13103

Page 112: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為現有的 Lambda 函數建立觸發

為 Lambda 函數建立觸發

1. 開啟純文字編輯器,並建立 JSON 檔案,在其中指定:

• Lambda 函數名稱 。• 您要使用此觸發來監控的儲存庫和分支。(如果您不指定任何分支,則觸發會套用到儲存庫中的所有分

支。)• 啟動此觸發的事件。

儲存檔案。

例如,如果您想要為名為 MyDemoRepo 的儲存庫建立觸發,以針對 master 和 preprod 這兩個分支,將所有儲存庫事件發佈到名為 MyCodeCommitFunction 的 Lambda 函數:

{ "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:80398EXAMPLE:function:MyCodeCommitFunction", "customData": "", "branches": [ "master", "preprod" ], "events": [ "all" ] } ]}

儲存庫的每個觸發在 JSON 中都必須有一個觸發區塊。若要為儲存庫建立多個觸發,請在 JSON 中包含更多區塊。請記住,此檔案中建立的所有觸發是針對指定的儲存庫。您無法在單一 JSON 檔案中為多個儲存庫建立觸發。例如,如果您想要為儲存庫建立兩個觸發,則可以建立含有兩個觸發區塊的 JSON 檔案。在下列範例中,第二個觸發區塊中未指定分支,因此觸發會套用到所有分支:

{ "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:80398EXAMPLE:function:MyCodeCommitFunction", "customData": "", "branches": [ "master", "preprod" ], "events": [ "all" ] }, { "name": "MyOtherLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:80398EXAMPLE:function:MyOtherCodeCommitFunction", "customData": "", "branches": [], "events": [ "updateReference", "deleteReference"

API 版本 2015-04-13104

Page 113: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南為現有的 Lambda 函數建立觸發

] } ]}

您可以為您指定的事件建立觸發,例如將遞交推送至儲存庫時。事件類型包括:

• all 代表指定的儲存庫和分支中的所有事件。• updateReference 表示遞交推送到指定的儲存庫和分支。• createReference 表示指定的儲存庫中建立新的分支或標籤。• deleteReference 表示指定的儲存庫中刪除分支或標籤。

Note

您可以在一個觸發中使用多個事件類型。不過,如果您指定 all,則無法指定其他事件。

若要查看有效事件類型的完整清單,請在終端機或命令提示字元中輸入 aws codecommit put-repository-triggers help。

此外,您可以在 customData 中包含字串 (例如,開發人員在此儲存庫中討論開發時所使用的 IRC 管道名稱)。此欄位是字串。無法用於傳遞任何動態參數。在為了回應觸發而傳回的 CodeCommit JSON中,將會附加此字串當做屬性。

2. (選用) 在終端機或命令提示字元中,執行 test-repository-triggers 命令。例如,會使用以下來測試名為trigger.json 的 JSON 檔案是否有效,而且 CodeCommit 是否可以觸發 Lambda 函數。如果沒有實際資料可用,此測試會使用範例資料來觸發該函數。

aws codecommit test-repository-triggers --cli-input-json file://trigger.json

如果成功,此命令會傳回類似如下的資訊:

{ "successfulExecutions": [ "MyLambdaFunctionTrigger" ], "failedExecutions": []}

3. 在終端機或命令提示字元中,執行 put-repository-triggers 命令在 CodeCommit 中建立觸發。例如,若要使用名為 trigger.json 的 JSON 檔案來建立觸發:

aws codecommit put-repository-triggers - -cli-input-json file://trigger.json

此命令會傳回類似以下的組態 ID:

{ "configurationId": "0123456-I-AM-AN-EXAMPLE"}

4. 若要檢視觸發的組態,請執行 get-repository-triggers 命令,並指定儲存庫的名稱:

aws codecommit get-repository-triggers - -repository-name MyDemoRepo

此命令會傳回為儲存庫設定之所有觸發的結構,類似如下:

{ "configurationId": "0123456-I-AM-AN-EXAMPLE", "triggers": [ API 版本 2015-04-13

105

Page 114: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南編輯儲存庫的觸發

{ "events": [ "all" ], "destinationArn": "arn:aws:lambda:us-east-1:80398EXAMPLE:MyCodeCommitFunction", "branches": [ "master", "preprod" ], "name": "MyLambdaFunctionTrigger", "customData": "Project ID 12345" } ]}

5. 為了測試觸發的功能,請進行遞交並推送至您已設定觸發的儲存庫。在 Lambda 主控台,您在 Lambda函數的 Monitoring (監控) 標籤上應該會看到該函數的回應。

編輯 AWS CodeCommit 儲存庫的觸發您可以編輯已針對 CodeCommit 儲存庫建立的觸發。您可以變更觸發的事件和分支、為了回應事件而採取的動作,以及其他設定。

主題• 編輯儲存庫的觸發 (主控台) (p. 106)• 編輯儲存庫的觸發 (AWS CLI) (p. 106)

編輯儲存庫的觸發 (主控台)1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇儲存庫以編輯其中儲存庫事件的觸發。3. 在儲存庫的導覽窗格中,選擇 Settings (設定),然後選擇 Triggers (觸發)。4. 從儲存庫的觸發清單中,選擇您要編輯的觸發,然後選擇 Edit (編輯)。5. 視需要變更觸發,然後選擇 Save (儲存)。

編輯儲存庫的觸發 (AWS CLI)1. 在終端機 (Linux, macOS, or Unix) 或命令提示字元 (Windows) 中,執行 get-repository-triggers 命令建

立 JSON 檔案,其中包含為您的儲存庫設定的所有觸發結構。例如,若要建立名為 MyTriggers.json的 JSON 檔案,使其具有名為 MyDemoRepo 的儲存庫設定的所有觸發結構:

aws codecommit get-repository-triggers --repository-name MyDemoRepo >MyTriggers.json

此命令不會傳回任何訊息,但會在您執行命令的目錄中建立名為 MyTriggers.json 的檔案。2. 在純文字編輯器中編輯 JSON 檔案,並針對您要編輯的觸發變更觸發區塊。將 configurationId 配

對換成 repositoryName 配對。儲存檔案。

例如,如果您要在 MyDemoRepo 儲存庫中編輯名為 MyFirstTrigger 的觸發,以套用到所有分支,請將 configurationId 取代為 repositoryName,並移除指定的 master 和 preprod 分支 (紅紅紅紅紅)。在預設情況下,如果沒有指定分支,觸發將套用到儲存庫中的所有分支:

{

API 版本 2015-04-13106

Page 115: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南測試儲存庫的觸發

"repositoryName": "MyDemoRepo", "triggers": [ { "destinationArn": "arn:aws:sns:us-east-2:80398EXAMPLE:MyCodeCommitTopic", "branches": [ "master", "preprod" ], "name": "MyFirstTrigger", "customData": "", "events": [ "all" ] } ]}

3. 在終端機或命令列,執行 put-repository-triggers 命令。這會更新儲存庫的所有觸發,包括您對MyFirstTrigger 觸發所做的變更:

aws codecommit put-repository-triggers --repository-name MyDemoRepo file://MyTriggers.json

此命令會傳回類似以下的組態 ID:

{ "configurationId": "0123456-I-AM-AN-EXAMPLE"}

測試 AWS CodeCommit 儲存庫的觸發您可以測試已針對 CodeCommit 儲存庫建立的觸發。測試涉及以儲存庫的範例資料來執行觸發,包括最新的遞交 ID。如果儲存庫沒有遞交歷史記錄,則會產生由零組成的範例值。測試觸發有助於確認您已正確設定 CodeCommit 和觸發目標之間的存取,而無論目標是 AWS Lambda 函數或 Amazon Simple NotificationService 通知。

主題• 測試儲存庫的觸發 (主控台) (p. 107)• 測試儲存庫的觸發 (AWS CLI) (p. 107)

測試儲存庫的觸發 (主控台)1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇儲存庫以測試其中儲存庫事件的觸發。3. 在儲存庫的導覽窗格中,選擇 Settings (設定),然後選擇 Triggers (觸發)。4. 選擇您要測試的觸發,然後選擇 Test trigger (測試觸發)。您應該會看到成功或失敗訊息。如果成功,您

應該也會看到來自 Lambda 函數或 Amazon SNS 主題相應的動作回應。

測試儲存庫的觸發 (AWS CLI)1. 在終端機 (Linux, macOS, or Unix) 或命令提示字元 (Windows) 中,執行 get-repository-triggers 命令建

立 JSON 檔案,其中包含為您的儲存庫設定的所有觸發結構。例如,若要以名為 MyDemoRepo 的儲存庫所設定的所有觸發為結構來建立名為 TestTrigger.json 的 JSON 檔案:

API 版本 2015-04-13107

Page 116: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南從儲存庫刪除觸發。

aws codecommit get-repository-triggers --repository-name MyDemoRepo >TestTrigger.json

此命令會在您執行命令的目錄中建立名為 TestTriggers.json 的檔案。2. 在純文字編輯器中編輯 JSON 檔案,並變更觸發陳述式。將 configurationId 配對換成

repositoryName 配對。儲存檔案。

例如,如果您想要在名為 MyDemoRepo 中測試名為 MyFirstTrigger 的觸發,以將該觸發套用到所有分支,請將 configurationId 換成 repositoryName,然後將類似如下的檔案儲存為TestTrigger.json:

{ "repositoryName": "MyDemoRepo", "triggers": [ { "destinationArn": "arn:aws:sns:us-east-2:80398EXAMPLE:MyCodeCommitTopic", "branches": [ "master", "preprod" ], "name": "MyFirstTrigger", "customData": "", "events": [ "all" ] } ]}

3. 在終端機或命令列,執行 test-repository-triggers 命令。這會更新儲存庫的所有觸發,包括您對MyFirstTrigger 觸發所做的變更:

aws codecommit test-repository-triggers --cli-input-json file://TestTrigger.json

此命令會傳回類似以下的回應:

{ "successfulExecutions": [ "MyFirstTrigger" ], "failedExecutions": []}

從 AWS CodeCommit 儲存庫刪除觸發您可能需要刪除已不再使用的觸發。刪除觸發之後就無法復原,但您可以再次建立觸發。

Note

如果您已為儲存庫設定一或多個觸發,則刪除儲存庫不會刪除您為這些觸發設定的目標 AmazonSNS 主題或 Lambda 函數。如果不再需要這些資源,請務必一併刪除。

主題• 從儲存庫刪除觸發 (主控台) (p. 109)• 從儲存庫刪除觸發 (AWS CLI) (p. 109)

API 版本 2015-04-13108

Page 117: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南從儲存庫刪除觸發。

從儲存庫刪除觸發 (主控台)1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇儲存庫以從中刪除儲存庫事件的觸發。3. 在儲存庫的導覽窗格中,選擇 Settings (設定)。在 Settings (設定) 中,選擇 Triggers (觸發)。4. 從觸發清單中選擇您要刪除的觸發,然後選擇 Delete (刪除)。5. 在對話方塊中,輸入 delete (刪除) 以確認。

從儲存庫刪除觸發 (AWS CLI)1. 在終端機 (Linux, macOS, or Unix) 或命令提示字元 (Windows) 中,執行 get-repository-triggers 命令建

立 JSON 檔案,其中包含為您的儲存庫設定的所有觸發結構。例如,若要建立名為 MyTriggers.json的 JSON 檔案,使其具有名為 MyDemoRepo 的儲存庫設定的所有觸發結構:

aws codecommit get-repository-triggers --repository-name MyDemoRepo >MyTriggers.json

此命令會在您執行命令的目錄中建立名為 MyTriggers.json 的檔案。2. 在純文字編輯器中編輯 JSON 檔案,並針對您要刪除的觸發移除觸發區塊。將 configurationId 配

對換成 repositoryName 配對。儲存檔案。

例如,如果您想要從 MyDemoRepo 儲存庫中移除名為 MyFirstTrigger 的觸發,請將configurationId 換成 repositoryName,並移除紅紅紅紅紅的陳述式:

{ "repositoryName": "MyDemoRepo", "triggers": [ { "destinationArn": "arn:aws:sns:us-east-2:80398EXAMPLE:MyCodeCommitTopic", "branches": [ "master", "preprod" ], "name": "MyFirstTrigger", "customData": "", "events": [ "all" ] }, { "destinationArn": "arn:aws:lambda:us-east-2:80398EXAMPLE:function:MyCodeCommitJSFunction", "branches": [], "name": "MyLambdaTrigger", "events": [ "all" ] } ]}

3. 在終端機或命令列,執行 put-repository-triggers 命令。這會更新儲存庫的觸發,並刪除MyFirstTrigger 觸發:

aws codecommit put-repository-triggers --repository-name MyDemoRepo file://MyTriggers.json

API 版本 2015-04-13109

Page 118: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視儲存庫詳細資訊

此命令會傳回類似以下的組態 ID:

{ "configurationId": "0123456-I-AM-AN-EXAMPLE"}

Note

若要刪除 MyDemoRepo 儲存庫的所有觸發,您的 JSON 檔案應該會類似如下:

{ "repositoryName": "MyDemoRepo", "triggers": []}

檢視 CodeCommit 儲存庫詳細資訊您也可以使用 AWS CodeCommit 主控台、AWS CLI 或 Git 從連接到 CodeCommit 儲存庫 的 本機儲存庫 檢視可用儲存庫的相關資訊。

依照以下指示之前,請完成設定 (p. 5)中的步驟。

主題• 檢視儲存庫詳細資訊 (主控台) (p. 110)• 檢視 CodeCommit 儲存庫詳細資訊 (Git) (p. 110)• 檢視 CodeCommit 儲存庫詳細資訊 (AWS CLI) (p. 111)

檢視儲存庫詳細資訊 (主控台)使用 AWS CodeCommit 主控台來快速檢視使用 AWS 帳戶建立的所有儲存庫。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇儲存庫的名稱。3. 請執行下列其中一項:

• 若要檢視用於複製儲存庫的 URL,請選擇 Clone URL (複製 URL),然後選擇複製儲存庫時想要使用的通訊協定。這會將複製 URL 複製。若要檢閱它,請將它貼到純文字編輯器中。

• 若要檢視儲存庫可設定的詳細資訊,請在導覽窗格中選擇 Settings (設定)。

Note

如果是以 IAM 使用者的身分登入,您可以設定和儲存偏好設定,以用於檢視程式碼和其他主控台設定。如需更多詳細資訊,請參閱 處理使用者偏好設定 (p. 216)。

檢視 CodeCommit 儲存庫詳細資訊 (Git)若要使用 Git 從 本機儲存庫 檢視 CodeCommit 儲存庫的詳細資訊,請執行 git remote show 命令。

執行這些步驟之前,請將 本機儲存庫 連接到 CodeCommit 儲存庫。如需指示,請參閱連接到儲存庫 (p. 77)。

API 版本 2015-04-13110

Page 119: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視 CodeCommit 儲存庫詳細資訊 (AWS CLI)

1. 執行 git remote show remote-name 命令,其中 remote-name 是 CodeCommit 儲存庫 的別名 (預設為 origin)。

Tip

若要取得 CodeCommit 儲存庫 名稱以及其 URL的清單,請執行 git remote -v 命令。

例如,若要檢視別名為 origin 之 CodeCommit 儲存庫 的詳細資訊:

git remote show origin

2. 針對 HTTPS:

* remote origin Fetch URL: https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo Push URL: https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo HEAD branch: (unknown) Remote branches: MyNewBranch tracked master tracked Local ref configured for 'git pull': MyNewBranch merges with remote MyNewBranch (up to date) Local refs configured for 'git push': MyNewBranch pushes to MyNewBranch (up to date) master pushes to master (up to date)

針對 SSH:

* remote origin Fetch URL: ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo Push URL: ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo HEAD branch: (unknown) Remote branches: MyNewBranch tracked master tracked Local ref configured for 'git pull': MyNewBranch merges with remote MyNewBranch (up to date) Local refs configured for 'git push': MyNewBranch pushes to MyNewBranch (up to date) master pushes to master (up to date)

Tip

若要查詢 IAM 使用者的 SSH 金鑰 ID,請開啟 IAM 主控台,並展開 IAM 使用者詳細資訊頁面上的 Security Credentials (安全登入資料)。您可以在 SSH Keys for AWS CodeCommit (ACC的 SSH 金鑰) 中找到 SSH 金鑰 ID。

如需更多選項,請參閱您的 Git 文件。

檢視 CodeCommit 儲存庫詳細資訊 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

若要使用 AWS CLI 來檢視儲存庫詳細資訊,請執行下列命令:

• 若要檢視 CodeCommit 儲存庫 名稱及其對應 ID 的清單,請執行 list-repositories (p. 112)。• 若要檢視單一 CodeCommit 儲存庫的相關資訊,請執行 get-repository (p. 112)。

API 版本 2015-04-13111

Page 120: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視 CodeCommit 儲存庫詳細資訊 (AWS CLI)

• 若要檢視 CodeCommit 中多個儲存庫的相關資訊,請執行 batch-get-repositories (p. 113)。

檢視 CodeCommit 儲存庫的清單1. 執行 list-repositories 命令:

aws codecommit list-repositories

您可以使用選用的 --sort-by 或 --order 選項來變更傳回資訊的順序。2. 如果成功,此命令會輸出一個 repositories 物件,其中包含 CodeCommit 中 與 AWS 帳戶相關聯的

所有儲存庫的名稱和 ID。

以下是基於上述命令的一些範例輸出:

{ "repositories": [ { "repositoryName": "MyDemoRepo" "repositoryId": "f7579e13-b83e-4027-aaef-650c0EXAMPLE", }, { "repositoryName": "MyOtherDemoRepo" "repositoryId": "cfc29ac4-b0cb-44dc-9990-f6f51EXAMPLE" } ]}

檢視單一 CodeCommit 儲存庫 的詳細資訊1. 執行 get-repository 命令,指定 CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。

Tip

若要取得 CodeCommit 儲存庫 的名稱,請執行 list-repositories (p. 112) 命令。

例如,若要檢視名為 MyDemoRepo 的 CodeCommit 儲存庫的詳細資訊:

aws codecommit get-repository --repository-name MyDemoRepo

2. 如果成功,此命令會輸出 repositoryMetadata 物件,以及下列資訊:

• 儲存庫的名稱 (repositoryName)。• 儲存庫的描述 (repositoryDescription)。• 儲存庫的唯一、系統產生的 ID (repositoryId)。• 與儲存庫相關聯的 AWS 帳戶 ID (accountId)。

以下是基於上述範例命令的一些範例輸出:

{ "repositoryMetadata": { "creationDate": 1429203623.625, "defaultBranch": "master", "repositoryName": "MyDemoRepo", "cloneUrlSsh": "ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo",

API 版本 2015-04-13112

Page 121: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視 CodeCommit 儲存庫詳細資訊 (AWS CLI)

"lastModifiedDate": 1430783812.0869999, "repositoryDescription": "My demonstration repository", "cloneUrlHttp": "https://codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo", "repositoryId": "f7579e13-b83e-4027-aaef-650c0EXAMPLE", "Arn": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo "accountId": "111111111111" }}

若要檢視多個 CodeCommit 儲存庫的詳細資訊。1. 使用 --repository-names 選項執行 batch-get-repositories 命令。在每個 CodeCommit 儲存庫 名稱

之間加上一個空格。

Tip

若要取得 CodeCommit 中儲存庫的名稱,請執行 list-repositories (p. 112) 命令。

例如,若要檢視名為 MyDemoRepo 和 MyOtherDemoRepo 的兩個 CodeCommit 儲存庫的詳細資訊 :

aws codecommit batch-get-repositories --repository-names MyDemoRepo MyOtherDemoRepo

2. 如果成功,此命令會輸出物件,以及下列資訊:

• 找不到的任何 CodeCommit 儲存庫的清單 (repositoriesNotFound)。• CodeCommit 儲存庫的清單 (repositories)。每個 CodeCommit 儲存庫 名稱的後面是:

• 儲存庫的描述 (repositoryDescription)。• 儲存庫的唯一、系統產生的 ID (repositoryId)。• 與儲存庫相關聯的 AWS 帳戶 ID (accountId)。

以下是基於上述範例命令的一些範例輸出:

{ "repositoriesNotFound": [], "repositories": [ { "creationDate": 1429203623.625, "defaultBranch": "master", "repositoryName": "MyDemoRepo", "cloneUrlSsh": "ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo", "lastModifiedDate": 1430783812.0869999, "repositoryDescription": "My demonstration repository", "cloneUrlHttp": "https://codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo", "repositoryId": "f7579e13-b83e-4027-aaef-650c0EXAMPLE", "Arn": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo "accountId": "111111111111" }, { "creationDate": 1429203623.627, "defaultBranch": "master", "repositoryName": "MyOtherDemoRepo", "cloneUrlSsh": "ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyOtherDemoRepo", "lastModifiedDate": 1430783812.0889999, "repositoryDescription": "My other demonstration repository",

API 版本 2015-04-13113

Page 122: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南變更儲存庫設定

"cloneUrlHttp": "https://codecommit.us-east-2.amazonaws.com/v1/repos/MyOtherDemoRepo", "repositoryId": "cfc29ac4-b0cb-44dc-9990-f6f51EXAMPLE", "Arn": "arn:aws:codecommit:us-east-2:111111111111:MyOtherDemoRepo "accountId": "111111111111" } ], "repositoriesNotFound": [] }

變更 AWS CodeCommit 儲存庫設定您可以使用 AWS CLI 和 AWS CodeCommit 主控台來變更 CodeCommit 儲存庫 的設定,例如其描述或名稱。

Important

變更儲存庫的名稱可能會破壞在其遠端 URL 中使用舊名稱的任何本機儲存庫。執行 git remote set-url 命令來將遠端 URL 更新為使用新儲存庫的名稱。

主題• 變更儲存庫設定 (主控台) (p. 114)• 變更 AWS CodeCommit 儲存庫設定 (AWS CLI) (p. 115)

變更儲存庫設定 (主控台)若要使用 AWS CodeCommit 主控台來變更 AWS CodeCommit 中 CodeCommit 儲存庫的設定,請依照以下步驟。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要變更設定所在的儲存庫名稱。3. 在導覽窗格中選擇 Settings (稅金設定)。4. 若要變更儲存庫的名稱,在 Repository name (儲存庫名稱) 中,於 Name (名稱) 文字方塊輸入新的名

稱,然後選擇 Save (儲存)。系統提示時,請確認您的選擇。Important

變更 AWS CodeCommit 儲存庫的名稱將變更使用者連接到儲存庫所需的 SSH 和 HTTPSURL。使用者將無法連接到此儲存庫,直到他們更新連線設定為止。此外,因為儲存庫的 ARN將會變更,變更儲存庫名稱將使得仰賴於此儲存庫的 ARN 的任何 IAM 使用者政策無效。若要在變更名稱之後連接到儲存庫,每位使用者必須使用 git remote set-url 命令,並指定要使用的新 URL。例如,如果您將儲存庫的名稱從 MyDemoRepo 變更為MyRenamedDemoRepo,使用 HTTPS 連接到儲存庫的使用者會執行以下 Git 命令:

git remote set-url origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyRenamedDemoRepo

使用 SSH 連接到儲存庫的使用者會執行以下 Git 命令:

git remote set-url origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyRenamedDemoRepo

如需更多選項,請參閱您的 Git 文件。5. 若要變更儲存庫的描述,請修改 Description (描述) 文字方塊中的文字,然後選擇 Save (儲存)。

API 版本 2015-04-13114

Page 123: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南變更 AWS CodeCommit 儲存庫設定 (AWS CLI)

Note

描述欄位會在主控台中顯示 Markdown,並接受所有的 HTML 字元和所有有效 Unicode 字元。如果您是使用 GetRepository 或 BatchGetRepositories API 的應用程式開發人員,並且計劃要在網頁瀏覽器中顯示儲存庫描述欄位,請參閱 CodeCommit API 參考。

6. 若要變更預設分支,請在 Default branch (預設分支) 中選擇分支下拉式清單,然後選擇不同的分支。選擇 Save (儲存)。

7. 若要刪除儲存庫,請選擇 Delete repository (刪除儲存庫)。在 Type the name of the repository toconfirm deletion (輸入儲存庫名稱以確認刪除) 旁的方塊中,輸入 delete,然後選擇 Delete (刪除)。

Important

在 AWS CodeCommit 中刪除此儲存庫之後,就無法再將它複製到任何 本機儲存庫 或共用儲存庫。您也無法再從任何 本機儲存庫 或共用儲存庫,對此儲存庫提取資料或推送資料。這個操作無法復原。

變更 AWS CodeCommit 儲存庫設定 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

若要使用 AWS CLI 來變更 AWS CodeCommit 中 CodeCommit 儲存庫的設定,請執行下列一或多個命令:

• update-repository-description (p. 115) 以變更 CodeCommit 儲存庫 的說明。• update-repository-name (p. 116) 以變更 CodeCommit 儲存庫 的群組名稱。

變更 CodeCommit 儲存庫的描述1. 執行 update-repository-description 命令,並指定:

• CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。

Tip

若要取得 CodeCommit 儲存庫 的名稱,請執行 list-repositories (p. 112) 命令。• 新儲存庫的描述 (使用 --repository-description 選項)。

Note

描述欄位會在主控台中顯示 Markdown,並接受所有的 HTML 字元和所有有效 Unicode 字元。如果您是使用 GetRepository 或 BatchGetRepositories API 的應用程式開發人員,並且計劃要在網頁瀏覽器中顯示儲存庫描述欄位,請參閱 CodeCommit API 參考。

例如,若要將名為 MyDemoRepo 的 CodeCommit 儲存庫 描述變更為 This description waschanged:

aws codecommit update-repository-description --repository-name MyDemoRepo --repository-description "This description was changed"

只有在發生錯誤時,此命令才會產生輸出。2. 若要驗證變更的描述,請執行 get-repository 命令,指定您使用 --repository-name 選項變更 其描

述的 CodeCommit 儲存庫 名稱。

命令的輸出會在 repositoryDescription 中顯示變更的文字。API 版本 2015-04-13

115

Page 124: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南同步儲存庫之間的變更

變更 CodeCommit 儲存庫的名稱1. 執行 update-repository-name 命令,並指定:

• CodeCommit 儲存庫 目前的名稱 (使用 --old-name 選項)。Tip

若要取得 CodeCommit 儲存庫 的名稱,請執行 list-repositories (p. 112) 命令。• CodeCommit 儲存庫 的新名稱 (使用 --new-name 選項)。

例如,若要將名為 MyDemoRepo 儲存庫的名稱變更為 MyRenamedDemoRepo:

aws codecommit update-repository-name --old-name MyDemoRepo --new-name MyRenamedDemoRepo

只有在發生錯誤時,此命令才會產生輸出。Important

變更 AWS CodeCommit 儲存庫的名稱會變更使用者連接到儲存庫所需的 SSH 和 HTTPSURL。使用者需要更新其連線設定,才能連接到此儲存庫。此外,因為儲存庫的 ARN 會變更,變更儲存庫名稱將使得仰賴於此儲存庫 ARN 的任何 IAM 使用者政策無效。

2. 若要驗證變更的名稱,請執行 list-repositories 命令並檢閱儲存庫名稱的清單。

同步本機儲存庫和 AWS CodeCommit 儲存庫之間的變更

您可以使用 Git 來同步連接到 本機儲存庫 的 本機儲存庫 和 CodeCommit 儲存庫 之間的變更。

若要將變更從 本機儲存庫 到推送 CodeCommit 儲存庫,請執行 git push remote-name branch-name。

若要從 CodeCommit 儲存庫 提取變更至 本機儲存庫,請執行 git pull remote-name branch-name。

針對推送和提取,remote-name 為 本機儲存庫 用於 CodeCommit 儲存庫 的別名。branch-name 為CodeCommit 儲存庫 上用來推送和提取的分支名稱。

Tip

若要取得 本機儲存庫 用於 CodeCommit 儲存庫 的別名,請執行 git remote。若要取得分支名稱的清單,請執行 git branch。星號 (*) 會顯示在目前分支的名稱旁。(您也可以執行 git status 以顯示目前的分支名稱。)Note

如果您複製了儲存庫,從 本機儲存庫 的觀點,remote-name 不是 CodeCommit 儲存庫 的名稱。複製儲存庫時,remote-name 會自動設定為 origin。

例如,若要將變更從 本機儲存庫 推送到 CodeCommit 儲存庫 中別名為 origin 的 master 分支:

git push origin master

同樣地,若要將變更從 CodeCommit 儲存庫 中別名為 origin 的 master 分支提取至 本機儲存庫:

git pull origin master

API 版本 2015-04-13116

Page 125: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將遞交推送到兩個儲存庫

Tip

如果您將 -u 選項新增至 git push,您將設定上游追蹤資訊。例如,如果您執行 git push -u originmaster,您可以在未來執行 git push 和 git pull 而不帶 remote-name branch-name。若要取得上游追蹤資訊,請執行 git remote show remote-name (例如,git remote show origin)。

如需更多選項,請參閱您的 Git 文件。

將遞交推送到另一個 Git 儲存庫您可以設定本機儲存庫將變更推送到兩個遠端儲存庫。例如,您在試用 AWS CodeCommit 時可能需要繼續使用現有的 Git 儲存庫解決方案。依照以下基本步驟,將本機儲存庫中的變更推送到 CodeCommit 和單獨的Git 儲存庫。

Tip

如果您沒有 Git 儲存庫,您可以在 CodeCommit 以外的服務上建立空白 Git 儲存庫,然後將您的CodeCommit 儲存庫遷移到此儲存庫。您應該遵循類似於遷移至 CodeCommit (p. 217)中的步驟。

1. 從命令提示字元或終端機,切換到您的本機儲存庫目錄並執行 git remote -v 命令。您應該會看到類似下列的輸出:

針對 HTTPS:

origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch)origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (push)

針對 SSH:

origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch)origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (push)

2. 執行 git remote set-url --add --push origin git-repository-name 命令,其中 git-repository-name 是您要託管程式碼的 Git 儲存庫的 URL 和名稱。這會將 origin 的推送目的地變更為該 Git 儲存庫。

Note

git remote set-url --add --push 會覆寫推送的預設 URL,所以您必須執行此命令兩次,如後續步驟所示。

例如,以下命令將 origin 的推送變更為 some-URL/MyDestinationRepo:

git remote set-url --add --push origin some-URL/MyDestinationRepo

此命令不會傳回任何結果。Tip

如果您推送到需要登入資料的 Git 儲存庫,請務必在登入資料協助程式或 some-URL 字串的組態中設定這些登入資料。否則,對該儲存庫的推送會失敗。

3. 再次執行 git remote -v 命令,應該會建立類似如下的輸出:

針對 HTTPS:

origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch)

API 版本 2015-04-13117

Page 126: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將遞交推送到兩個儲存庫

origin some-URL/MyDestinationRepo (push)

針對 SSH:

origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch)origin some-URL/MyDestinationRepo (push)

4. 現在新增 CodeCommit 儲存庫。再次執行 git remote set-url --add --push origin,這次要指定您的CodeCommit 儲存庫的 URL 和儲存庫名稱。

例如,以下命令將 origin 的推送新增至 https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo:

針對 HTTPS:

git remote set-url --add --push origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo

針對 SSH:

git remote set-url --add --push origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo

此命令不會傳回任何結果。5. 再次執行 git remote -v 命令,應該會建立類似如下的輸出:

針對 HTTPS:

origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch)origin some-URL/MyDestinationRepo (push) origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (push)

針對 SSH:

origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch)origin some-URL/MyDestinationRepo (push) origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (push)

您現在有兩個 Git 儲存庫做為推送的目的地,但您的推送會先前往 some-URL/MyDestinationRepo。如果推送至該儲存庫失敗,則您的遞交不會推送至任一儲存庫。

Tip

如果您想要手動輸入另一個儲存庫所需的登入資料,請考慮變更推送順序,先推送到CodeCommit。執行 git remote set-url --delete 來刪除先推送到的儲存庫,然後執行 git remoteset-url --add 以再次新增此儲存庫,使之成為清單中的第二個推送目的地。如需更多選項,請參閱您的 Git 文件。

6. 為了驗證您現在同時推送到這兩個遠端儲存庫,請使用文字編輯器,在本機儲存庫中建立以下文字檔案:

bees.txt-------Bees are flying insects closely related to wasps and ants, and are known for their role in pollination and for producing honey and beeswax.

7. 執行 git add 將變更暫存在本機儲存庫:API 版本 2015-04-13118

Page 127: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將遞交推送到兩個儲存庫

git add bees.txt

8. 執行 git commit 來遞交本機儲存庫中的變更:

git commit -m "Added bees.txt"

9. 若要將遞交從本機儲存庫推送到遠端儲存庫,請執行 git push -u remote-name branch-name,其中remote-name 是本機儲存庫用於遠端儲存庫的別名,branch-name 是要推送至儲存庫的分支名稱。

Tip

只有在第一次推送時才需要使用 -u 選項。即會設定上游追蹤資訊。

例如,執行 git push -u origin master 會顯示推送同時前往兩個遠端儲存庫的預期分支,且輸出類似如下:

針對 HTTPS:

Counting objects: 5, done.Delta compression using up to 4 threads.Compressing objects: 100% (3/3), done.Writing objects: 100% (3/3), 5.61 KiB | 0 bytes/s, done.Total 3 (delta 1), reused 0 (delta 0)To some-URL/MyDestinationRepo a5ba4ed..250f6c3 master -> masterCounting objects: 5, done.Delta compression using up to 4 threads.Compressing objects: 100% (3/3), done.Writing objects: 100% (3/3), 5.61 KiB | 0 bytes/s, done.Total 3 (delta 1), reused 0 (delta 0)remote:To https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo a5ba4ed..250f6c3 master -> master

針對 SSH:

Counting objects: 5, done.Delta compression using up to 4 threads.Compressing objects: 100% (3/3), done.Writing objects: 100% (3/3), 5.61 KiB | 0 bytes/s, done.Total 3 (delta 1), reused 0 (delta 0)To some-URL/MyDestinationRepo a5ba4ed..250f6c3 master -> masterCounting objects: 5, done.Delta compression using up to 4 threads.Compressing objects: 100% (3/3), done.Writing objects: 100% (3/3), 5.61 KiB | 0 bytes/s, done.Total 3 (delta 1), reused 0 (delta 0)remote:To ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo a5ba4ed..250f6c3 master -> master

如需更多選項,請參閱您的 Git 文件。

API 版本 2015-04-13119

Page 128: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南設定儲存庫的跨帳戶存取

設定 AWS CodeCommit 儲存庫的跨帳戶存取您可以設定讓另一個 AWS 帳戶中的 IAM 使用者和群組存取 CodeCommit 儲存庫。這通常稱為跨帳戶存取。本節提供範例和逐步說明,描述如何在 AWS 帳戶 (稱為 AccountA) 中為 US East (Ohio)區域中名為 MySharedDemoRepo 的儲存庫設定跨帳戶存取,讓另一個 AWS 帳戶 (稱為 AccountB) 中屬於DevelopersWithCrossAccountRepositoryAccess 這個 IAM 群組的 IAM 使用者能夠存取此儲存庫。

本節分成三個部分:

• AccountA 的管理員所執行的動作。• AccountB 的管理員所執行的動作。• AccountB 的儲存庫使用者所執行的動作。

設定跨帳戶存取:

• AccountA 的管理員以 IAM 使用者身分登入,且該使用者必須具備在 CodeCommit 中建立和管理儲存庫,以及在 IAM 中建立角色的許可。如果您使用的是受管政策,請將 IAM FullAccess 和AWSCodeCommitFullAccess 套用到這個 IAM 使用者。

AccountA 的範例帳戶 ID 為 111122223333。• AccountB 的管理員以 IAM 使用者身分登入,且該使用者必須具備可建立和管理 IAM 使用者和群組,以及

為使用者和群組設定政策的許可。如果您使用的是受管政策,請將 IAM FullAccess 套用到這個 IAM 使用者。

AccountB 的範例帳戶 ID 為 888888888888。• 為了模擬開發人員的活動,AccountB 的儲存庫使用者以 IAM 使用者身分登入,該使用者為 IAM 群組的成

員,且該群組是為了允許存取 AccountA 中的 CodeCommit 儲存庫而建立。這個帳戶必須設定:• AWS 管理主控台存取。• 存取金鑰和私密金鑰,用在本機電腦或 Amazon EC2 執行個體上安裝和設定 AWS CLI 登入資料

協助程式,如適用於 Linux, macOS, or Unix 上使用 AWS CLI 登入資料協助程式來建立 HTTPS 連線 (p. 33)或適用於 Windows 上使用 AWS CLI 登入資料協助程式的 HTTPS 連線 (p. 37)所述。

如需詳細資訊,請參閱 IAM 使用者。

主題• 儲存庫的跨帳戶存取:AccountA 的管理員所執行的動作 (p. 120)• 儲存庫的跨帳戶存取:AccountB 的管理員所執行的動作 (p. 123)• 儲存庫的跨帳戶存取:AccountB 的儲存庫使用者所執行的動作 (p. 124)

儲存庫的跨帳戶存取:AccountA 的管理員所執行的動作若要允許 AccountB 的使用者或群組存取 AccountA 中的儲存庫,AccountA 管理員必須:

• 在 AccountA 建立政策來授予對儲存庫的存取權。• 在 AccountA 中建立角色,供 AccountB 的 IAM 使用者和群組擔任。• 將政策連接到角色。

以下章節提供步驟和範例。

API 版本 2015-04-13120

Page 129: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南儲存庫的跨帳戶存取:AccountA 的管理員所執行的動作

主題• 步驟 1:在 AccountA 中建立儲存庫存取政策 (p. 121)• 步驟 2:在 AccountA 中建立儲存庫存取角色 (p. 122)

步驟 1:在 AccountA 中建立儲存庫存取政策您可以在 AccountA 建立政策,來授予對 AccountB 中儲存庫的存取權。根據您想允許的存取層級而定,請執行以下其中一項:

• 設定政策,以允許 AccountB 使用者存取特定的儲存庫,但不允許他們檢視 AccountA 中所有儲存庫的清單。

• 設定額外的存取權限,以允許 AccountB 使用者從 AccountA 中所有儲存庫的清單中選擇儲存庫。

建立儲存庫存取角色

1. 以具備在 AccountA 中建立角色之許可的 IAM 使用者身分,登入 AWS 管理主控台。2. Open the IAM console at https://console.aws.amazon.com/iam/.3. 在導覽窗格上選擇 Policies (政策)。4. 選擇 Create policy (建立政策)。5. 選擇 JSON 標籤,將下列 JSON 政策文件貼到 JSON 文字方塊中。將 us-east-2 換成儲存庫的 AWS

區域、將 111122223333 換成 AccountA 的帳戶 ID,並將 MySharedDemoRepo 換成 AccountA 中的CodeCommit 儲存庫名稱:

{"Version": "2012-10-17","Statement": [ { "Effect": "Allow", "Action": [ "codecommit:BatchGet*", "codecommit:Create*", "codecommit:DeleteBranch", "codecommit:Get*", "codecommit:List*", "codecommit:Describe*", "codecommit:Put*", "codecommit:Post*", "codecommit:Merge*", "codecommit:Test*", "codecommit:Update*", "codecommit:GitPull", "codecommit:GitPush" ], "Resource": [ "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo" ] }]}

如果您想要讓擔任此角色的使用者,能夠在 CodeCommit 主控台首頁檢視儲存庫清單,請在政策中新增額外的陳述式,如下所示:

{ "Version": "2012-10-17", "Statement": [ {

API 版本 2015-04-13121

Page 130: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南儲存庫的跨帳戶存取:AccountA 的管理員所執行的動作

"Effect": "Allow", "Action": [ "codecommit:BatchGet*", "codecommit:Create*", "codecommit:DeleteBranch", "codecommit:Get*", "codecommit:List*", "codecommit:Describe*", "codecommit:Put*", "codecommit:Post*", "codecommit:Merge*", "codecommit:Test*", "codecommit:Update*", "codecommit:GitPull", "codecommit:GitPush" ], "Resource": [ "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo" ] }, { "Effect": "Allow", "Action": "codecommit:ListRepositories", "Resource": "*" } ]}

此存取權限可讓擔任此角色的使用者輕鬆找到可存取的儲存庫。他們可以從清單中選擇儲存庫名稱,就會自動前往共用儲存庫的首頁 (Code)。使用者無法存取他們在清單中看到的其他任何儲存庫,但可以在Dashboard (儀表板) 頁面上檢視 AccountA 中的儲存庫。

如果您不想讓擔任該角色的使用者檢視 AccountA 中所有儲存庫的清單,請使用第一個政策範例,但務必將直接連結傳送給這些使用者,讓他們能夠在 CodeCommit 主控台前往共用儲存庫的首頁。

6. 選擇 Review policy (檢閱政策)。政策驗證器會報告語法錯誤 (例如,如果您忘記將範例 AWS 帳戶 ID 和儲存庫名稱換成您 AWS 帳戶 ID 和儲存庫名稱)。

7. 在 Review policy (檢閱政策) 頁面上,輸入政策名稱 (例如CrossAccountAccessForMySharedDemoRepo)。您也可以提供此政策的選用描述。選擇 Createpolicy (建立政策)。

步驟 2:在 AccountA 中建立儲存庫存取角色設定政策之後,請建立角色供 AccountB 的 IAM 使用者和群組擔任,並將此政策連接到該角色。

建立儲存庫存取政策

1. 在 IAM 主控台,選擇 Roles (角色)。2. 選擇 Create Role (建立角色)。3. 選擇 Another AWS account (其他 AWS 帳戶)。4. 在 Account ID (帳戶 ID) 中,輸入 AccountB 的 AWS 帳戶 ID (例如,888888888888)。選擇 Next:

Permissions (下一步:許可)。5. 在 Attach permissions policies (連接許可政策) 中,選取您在之前程序中建立的政策

(CrossAccountAccessForMySharedDemoRepo)。選擇 Next:Review (下一步:檢閱)。6. 在 Role name (角色名稱) 中,輸入角色的名稱 (例

如,MyCrossAccountRepositoryContributorRole)。您也可以輸入選用描述,協助其他人了解該角色的用途。

7. 選擇 Create Role (建立角色)。

API 版本 2015-04-13122

Page 131: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南儲存庫的跨帳戶存取:AccountB 的管理員所執行的動作

8. 開啟您剛建立的角色,並複製角色 ARN (例如,arn:aws:iam::111122223333:role/MyCrossAccountRepositoryContributorRole)。您需要將此 ARN 提供給 AccountB 管理員。

儲存庫的跨帳戶存取:AccountB 的管理員所執行的動作若要允許 AccountB 的使用者或群組存取 AccountA 中的儲存庫,AccountB 管理員必須在 AccountB 中建立群組。此群組必須設定政策,以允許群組成員擔任由 AccountA 管理員所建立的角色。

以下章節提供步驟和範例。

主題• 步驟 1:為 AccountB 使用者建立儲存庫存取 IAM 群組 (p. 123)• 步驟 2:建立政策並將使用者新增到 IAM 群組 (p. 123)

步驟 1:為 AccountB 使用者建立儲存庫存取 IAM 群組若要管理 AccountB 中哪些 IAM 使用者可以存取 AccountA 儲存庫,最簡單的方法就是在 AccountB 中建立IAM 群組,該群組具備在 AccountA 中擔任角色,然後將 IAM 使用者新增到該群組的許可。

建立儲存庫跨帳戶存取的群組

1. 以 IAM 使用者身分登入 AWS 管理主控台,且該使用者具備在 AccountB 中建立 IAM 群組和政策及管理IAM 使用者的許可。

2. Open the IAM console at https://console.aws.amazon.com/iam/.3. 在 IAM 主控台,選擇 Groups (群組)。4. 選擇 Create New Group (建立新群組)。5. 在 Group Name (群組名稱) 中,輸入群組名稱 (例

如,DevelopersWithCrossAccountRepositoryAccess)。選擇 Next Step (後續步驟)。6. 在 Attach Policy (連接政策) 中選擇 Next Step (下一步)。在下一個程序中,您將建立跨帳戶政策。完成

群組的建立。

步驟 2:建立政策並將使用者新增到 IAM 群組現在您有一個群組,請建立政策,以允許此群組的成員擔任可讓他們在 AccountA 中存取儲存庫的角色。然後,將 AccountB 中的 IAM 使用者新增至此群組,以允許他們在 AccountA 中的存取。

建立群組的政策並將使用者新增到群組

1. 在 IAM 主控台中,選擇 Groups (群組),然後選擇您剛建立的群組名稱 (例如,DevelopersWithCrossAccountRepositoryAccess)。

2. 選擇 Permissions (許可) 標籤。展開 Inline Policies (內嵌政策),然後選擇連結來建立內嵌政策。(如果您要設定的群組已有內嵌政策,請選擇 Create Group Policy (建立群組政策)。)

3. 選擇 Custom Policy (自訂政策),然後選擇 Select (選取)。4. 在 Policy Name (政策名稱) 中,輸入政策的名稱 (例如,AccessPolicyForSharedRepository)。5. 在 Policy Document (政策文件) 中,貼上以下政策。在 Resource

中,將 ARN 換成由 AccountA 的管理員所建立的政策 ARN (例如,arn:aws:iam::111122223333:role/MyCrossAccountRepositoryContributorRole),然

API 版本 2015-04-13123

Page 132: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南儲存庫的跨帳戶存取:AccountB

的儲存庫使用者所執行的動作

後選擇 Apply Policy (套用政策)。如需 AccountA 管理員所建立政策的詳細資訊,請參閱步驟 1:在AccountA 中建立儲存庫存取政策 (p. 121)。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/MyCrossAccountRepositoryContributorRole" }}

6. 選擇 Users (使用者) 索引標籤。選擇 Add Users to Group (將使用者新增到群組),然後新增 AccountBIAM 使用者。例如,您可以將使用者名稱為 Saanvi_Sarkar 的 IAM 使用者新增至群組。

Note

AccountB 中的使用者必須具備程式化存取權限 (包括存取金鑰和私密金鑰),才能設定自己的本機電腦來存取共用 CodeCommit 儲存庫。如果建立的是 IAM 使用者,請務必儲存存取金鑰和私密金鑰。為確保 AWS 帳戶的安全性,只有在建立私密存取金鑰時才能存取此金鑰。

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

主題• 步驟 1:設定 AWS CLI 和 Git 讓 AccountB 使用者存取 AccountA 中的儲存庫 (p. 124)• 步驟 2:複製和存取 AccountA 中的 CodeCommit 儲存庫 (p. 126)

步驟 1:設定 AWS CLI 和 Git 讓 AccountB 使用者存取 AccountA中的儲存庫您必須使用登入資料協助程式 (而非 SSH 金鑰或 Git 登入資料),才能存取另一個 AWS 帳戶中的儲存庫。AccountB 使用者必須將其電腦設定為利用登入資料協助程式,以存取 AccountA 中的共用 CodeCommit儲存庫。您無法使用 SSH 金鑰或 Git 登入資料來存取另一個 AWS 帳戶中的儲存庫。不過,在存取AccountB 中的儲存庫時,您可以繼續使用 SSH 金鑰或 Git 登入資料。

設定 AWS CLI 和 Git 以啟用跨帳戶存取

1. 在本機電腦上安裝 AWS CLI。請參閱安裝 AWS CLI 中適用於您作業系統的指示。2. 在本機電腦上安裝 Git。若要安裝 Git,建議可使用 Git Downloads 或 Git for Windows 等網站。

當您安裝 Git 時,請勿安裝 Git Credential Manager。Git Credential Manager 與 AWS CLI 隨附的登入資料協助程式不相容。

Note

CodeCommit 支援 Git 1.7.9 版和更新版本。 Git 是一種持續演進且定期更新的平台。有時,一項功能的改變,可能會影響此功能與 CodeCommit 運作的方式。如果您在特定版本的 Git 和CodeCommit 方面遇到問題,請檢閱故障診斷 (p. 239)中的資訊。

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

API 版本 2015-04-13124

Page 133: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南儲存庫的跨帳戶存取:AccountB

的儲存庫使用者所執行的動作

git config --local user.name "Saanvi Sarkar"git config --local user.email [email protected]

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

4. 執行 aws configure --profile 命令,設定連線至 AccountB 中的資源時要使用的預設描述檔。當出現提示時,請提供 IAM 使用者的存取金鑰和私密金鑰。

Note

若您已安裝 AWS CLI 並設定了描述檔,您可以跳過此步驟。

例如,執行以下命令來建立預設的 AWS CLI 描述檔,供您用來存取 US East (Ohio) (us-east-2) 的AccountA 中 AWS 資源:

aws configure

當出現提示時,請提供下列資訊:

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

5. 再次執行 aws configure --profile 命令,設定連線至 AccountA 中的儲存庫時要使用的指定描述檔。當出現提示時,請提供 IAM 使用者的存取金鑰和私密金鑰。例如,執行以下命令來建立名為MyCrossAccountAccessProfile 的 AWS CLI 描述檔,供您用來存取 US East (Ohio) (us-east-2)AccountA 中的儲存庫:

aws configure --profile MyCrossAccountAccessProfile

當出現提示時,請提供下列資訊:

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

6. 在純文字編輯器中,開啟 config 檔案,也稱為 AWS CLI 組態檔案。根據您的作業系統而定,這個檔案可能位於 Linux, macOS, or Unix 的 ~/.aws/config 中,或 Windows 的 drive:\Users\USERNAME\.aws\config 中。

7. 在檔案中,依照您剛才建立的 MyCrossAccountAccessProfile 描述檔,找出相對應的項目。其看起來與下列類似:

[profile MyCrossAccountAccessProfile]region = US East (Ohio)output = json

在描述檔組態中新增兩行:role_arn 和 source_profile。提供 AccountA 中的角色 ARN (您將擔任此角色以存取另一個帳戶中的儲存庫),以及 AccountB 中預設 AWS CLI 描述檔的名稱。例如:

[profile MyCrossAccountAccessProfile]region = US East (Ohio)role_arn = arn:aws:iam::111122223333:role/MyCrossAccountRepositoryContributorRolesource_profile = default

API 版本 2015-04-13125

Page 134: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南儲存庫的跨帳戶存取:AccountB

的儲存庫使用者所執行的動作

output = json

儲存您的變更並關閉純文字編輯器。8. 執行 git config 命令兩次:一次是將 Git 設定為使用 AWS CLI 登入資料協助程式,並搭配您剛建立的

AWS CLI 描述檔,另一次是使用 HTTP。例如:

git config --global credential.helper '!aws --profile MyCrossAccountAccessProfile codecommit credential-helper $@'

git config --global credential.UseHttpPath true

Note

第一個 git config 命令的語法將根據您的作業系統而略有不同。Linux, macOS, or Unix 使用者應該使用單引號 ('),而 Windows 使用者應該使用雙引號 (")。

9. 執行 git config -l 命令來驗證您的組態。成功的組態包含類似以下幾行:

user.name=Saanvi [email protected]=!aws --profile MyCrossAccountAccessProfile codecommit credential-helper [email protected]=true

Note

如果您在組態檔案中看到下一行,表示您的系統已設定另一個登入資料管理員,這可能導致AWS CLI 登入資料協助程式無法運作:

credential.helper=manager

若要修正此問題,請執行下列命令:

git config --system --unset credential.helper

步驟 2:複製和存取 AccountA 中的 CodeCommit 儲存庫執行 git clone、git push 和 git pull,以複製、推送到和提取自跨帳戶 CodeCommit 儲存庫。您也可以登入AWS 管理主控台、切換角色,並使用 CodeCommit 主控台來與另一個帳戶中的儲存庫互動。

Note

根據 IAM 角色的設定方式而定,您也許能夠在 CodeCommit 的預設頁面上檢視儲存庫。如果您無法檢視儲存庫,請請求儲存庫管理員以電子郵件將 URL 連結寄給您,讓您在 CodeCommit 主控台存取該儲存庫的 Code (程式碼) 頁面。URL 類似如下:

https://console.aws.amazon.com/codecommit/home?region=us-east-2#/repository/MySharedDemoRepo/browse/HEAD/--/

將跨帳戶儲存庫複製到本機電腦

1. 在命令列或終端機,在您要複製儲存庫的目錄中執行 git clone 命令,並指定 HTTPS 複製 URL。例如:

git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MySharedDemoRepo

API 版本 2015-04-13126

Page 135: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南刪除儲存庫

除非您另外指定,否則儲存庫會複製到與儲存庫同名的子目錄。2. 切換到複製的儲存庫所在的目錄,然後新增檔案或變更檔案。例如,您可以新增名為 NewFile.txt 的

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

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

如需詳細資訊,請參閱Git 與 AWS CodeCommit 教學 (p. 58)。

既然您已新增檔案,請移至 CodeCommit 主控台以檢視遞交、檢閱其他使用者對儲存庫所做的變更、參與提取請求等等。

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

1. 以已獲許可跨帳戶存取 AccountA 中的儲存庫的 IAM 使用者身分,登入 AccountB 中的 AWSManagement Console (888888888888)。

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

Note

如果您是第一次選取此選項,請檢閱頁面上的資訊,然後再次選擇 Switch Role (切換角色)。3. 在 Switch Role (切換角色) 頁面上,執行下列動作:

• 在 Account (帳戶) 中,輸入 AccountA 的帳戶 ID (例如,111122223333)。• 在 Role (角色) 中,輸入角色的名稱,以擔任該角色來存取 AccountA 中的儲存庫 (例

如,MyCrossAccountRepositoryContributorRole)。• 在 Display Name (顯示名稱) 中,輸入此角色的易記名稱。當您擔任此角色時,此名稱會出現在主控

台。您下次在主控台想要切換角色時,此名稱也會出現在擔任的角色清單中。• (選用) 在 Color (顏色) 中,選擇顯示名稱的標籤。• 選擇 Switch Role (切換角色)。

如需詳細資訊,請參閱切換到角色 (AWS Management Console)。4. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。

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

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

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

如需詳細資訊,請參閱AWS CodeCommit 入門教學 (p. 42)。

刪除 AWS CodeCommit 儲存庫您可以使用 CodeCommit 主控台或 AWS CLI 來刪除 CodeCommit 儲存庫。

API 版本 2015-04-13127

Page 136: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南刪除 CodeCommit 儲存庫 (主控台)

Note

刪除儲存庫不會刪除該儲存庫的任何本機副本 (本機儲存庫)。若要刪除 本機儲存庫,請使用本機電腦的目錄和檔案管理工具。

主題• 刪除 CodeCommit 儲存庫 (主控台) (p. 128)• 刪除本機儲存庫 (p. 128)• 刪除 CodeCommit 儲存庫 (AWS CLI) (p. 128)

刪除 CodeCommit 儲存庫 (主控台)請依照以下步驟,使用 CodeCommit 主控台來刪除 CodeCommit 儲存庫。

Important

刪除 CodeCommit 儲存庫之後,就無法再將它複製到任何 本機儲存庫或共用儲存庫。您也無法再從任何 本機儲存庫 或共用儲存庫,對此儲存庫提取資料或推送資料。這個操作無法復原。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要刪除的儲存庫名稱。3. 在導覽窗格中選擇 Settings (稅金設定)。4. 在 Repository settings (儲存庫設定) 頁面的 Delete repository (刪除儲存庫) 中,選擇 Delete repository

(刪除儲存庫)。輸入 delete,然後選擇 Delete (刪除)。就會永久刪除這個儲存庫。

Note

在 CodeCommit 中刪除儲存庫,不會刪除任何本機儲存庫。

刪除本機儲存庫使用本機電腦的目錄和檔案管理工具來刪除包含 本機儲存庫 的目錄。

刪除 本機儲存庫 不會刪除可能與其連線的任何 CodeCommit 儲存庫。

刪除 CodeCommit 儲存庫 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

若要使用 AWS CLI 來刪除 CodeCommit 儲存庫,請執行 delete-repository 命令,指定要刪除的CodeCommit 儲存庫名稱 (使用 --repository-name 選項)。

Important

刪除 CodeCommit 儲存庫之後,就無法再將它複製到任何 本機儲存庫或共用儲存庫。您也無法再從任何 本機儲存庫 或共用儲存庫,對此儲存庫提取資料或推送資料。這個操作無法復原。

Tip

若要取得 CodeCommit 儲存庫 的名稱,請執行 list-repositories (p. 112) 命令。

例如,若要刪除名為 MyDemoRepo 的儲存庫:

aws codecommit delete-repository --repository-name MyDemoRepo

API 版本 2015-04-13128

Page 137: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南刪除 CodeCommit 儲存庫 (AWS CLI)

如果成功,永久刪除的 CodeCommit 儲存庫 ID 會出現在輸出中:

{ "repositoryId": "f7579e13-b83e-4027-aaef-650c0EXAMPLE"}

刪除 CodeCommit 儲存庫不會刪除可能與其連線的任何本機儲存庫。

API 版本 2015-04-13129

Page 138: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

在 AWS CodeCommit 儲存庫中使用檔案

在 CodeCommit 中,檔案是一種受版本控制、獨立自足的資訊片段,可供您及存放檔案的儲存庫和分支的其他使用者使用。就像在電腦上一樣,您可以用目錄結構來組織儲存庫檔案。與電腦不同,CodeCommit 會自動追蹤檔案的所有變更。您可以比較檔案的各個版本,並將檔案的不同版本存放在不同的儲存庫分支中。

若要在儲存庫中新增或編輯檔案,您可以使用 Git 用戶端。您也可以使用 CodeCommit 主控台、AWS CLI 或CodeCommit API。

如需有關在 CodeCommit 中使用儲存庫其他部分的資訊,請參閱使用儲存庫 (p. 74)、使用提取請求 (p. 138)、使用分支 (p. 201)、使用遞交 (p. 170),以及處理使用者偏好設定 (p. 216)。

主題• 瀏覽 AWS CodeCommit 儲存庫中的檔案 (p. 131)• 建立檔案或將其新增至 AWS CodeCommit 儲存庫 (p. 132)

API 版本 2015-04-13130

Page 139: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南瀏覽儲存庫中的檔案

• 編輯 AWS CodeCommit 儲存庫中的檔案內容 (p. 134)

瀏覽 AWS CodeCommit 儲存庫中的檔案連接到 CodeCommit 儲存庫時,您可以將它複製到本機儲存庫或使用 CodeCommit 主控台來瀏覽其內容。本主題說明如何使用 CodeCommit 主控台來瀏覽 CodeCommit 儲存庫的內容。

Note

對於作用中的 CodeCommit 使用者,從 CodeCommit 主控台瀏覽程式碼不需任何費用。如需何時可能收費的詳細資訊,請參閱定價。

瀏覽 CodeCommit 儲存庫您可以使用 CodeCommit 主控台來檢閱儲存庫中包含的檔案或快速讀取檔案的內容。

瀏覽儲存庫的內容

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 頁面上,從儲存庫清單選擇您想要瀏覽的儲存庫。3. 在 Code (程式碼) 檢視中,瀏覽儲存庫預設分支的內容。

若要將檢視變更為不同的分支或標籤,請選擇檢視選取器按鈕。從下拉式清單選擇分支或標籤名稱,或是在篩選方塊中輸入分支或標籤的名稱,然後從清單中選擇它。

4. 請執行下列其中一項:

API 版本 2015-04-13131

Page 140: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立或新增檔案

• 若要檢視目錄的內容,從清單中選擇目錄。您可以在導覽清單中選擇任何目錄以回到該目錄檢視。您也可以使用目錄清單上方的向上箭頭。

• 若要檢視檔案的內容,從清單中選擇檔案。如果檔案大於遞交物件限制,就無法再顯示在主控台,必須改為在本機儲存庫中檢視。如需更多詳細資訊,請參閱 限制 (p. 297)。若要結束檔案檢視,請從程式碼導覽列中,選擇您要檢視的目錄。

Note

如果您選擇二進位檔案,會出現警告訊息,請求您確認是否要顯示內容。若要檢視檔案,請選擇 Show file contents (顯示檔案內容)。若不要檢視檔案,請從程式碼導覽列中,選擇您要檢視的目錄。如果您選擇 markdown 檔案 (.md),請使用 Rendered Markdown (轉譯的 Markdown) 和Markdown Source (Markdown 來源) 按鈕在轉譯和語法檢視之間切換。

建立檔案或將其新增至 AWS CodeCommit 儲存庫您可以使用 CodeCommit 主控台、AWS CLI 或 Git 用戶端來將檔案新增至儲存庫。您可以從您的本機電腦上傳檔案至儲存庫,或者您可以使用主控台中的程式碼編輯器來建立檔案。編輯器是新增簡單檔案 (例如readme.md 檔案) 至儲存庫中分支的一個快速且簡單的方式。

主題• 建立或上傳檔案 (主控台) (p. 133)• 新增檔案 (AWS CLI) (p. 133)

API 版本 2015-04-13132

Page 141: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立或上傳檔案 (主控台)

• 新增檔案 (Git) (p. 134)

建立或上傳檔案 (主控台)您可以使用 CodeCommit 主控台來建立檔案,並將它新增至 CodeCommit 儲存庫中的分支。在建立檔案時,您可以提供使用者名稱和電子郵件地址。您也可以新增遞交訊息,讓其他使用者了解是誰新增了該檔案,以及原因。您也可以直接從本機電腦將檔案上傳至儲存庫中的分支。

將檔案新增到儲存庫

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要新增檔案所在的儲存庫。3. 在 Code (程式碼) 檢視中,選擇您要新增檔案所在的分支。依預設,當您開啟 Code (程式碼) 檢視時,

會顯示預設分支的內容。

若要將檢視變更至不同的分支,請選擇檢視選取器按鈕。從下拉式清單選擇分支名稱,或是在篩選方塊中輸入分支的名稱,然後從清單中選擇它。

4. 選擇 Add file (新增檔案),然後選擇以下其中一個選項:

• 若要使用程式碼編輯器來建立檔案的內容,並將它新增至儲存庫,請選擇 Create file (建立檔案)。• 若要從您的本機電腦將檔案上傳至儲存庫,請選擇 Upload file (上傳檔案)。

5. 把將此檔案新增至儲存庫的人員和原因等相關資訊提供給其他使用者。

• 在 Author Name (作者名稱) 中,輸入名稱。此名稱會同時做為作者名稱和遞交資訊中的遞交名稱。CodeCommit 會預設為使用您的 IAM 使用者名稱或主控台登入的衍生做為作者名稱。

• 在 Email address (電子郵件地址) 中,輸入電子郵件地址,讓其他儲存庫使用者可以與您聯絡變更的相關事項。

• 在 Commit message (遞交訊息) 中,輸入簡短描述。此為選用步驟,但非常建議您加以執行。否則,會使用預設的遞交訊息。

6. 請執行下列其中一項:

• 如果您要上傳檔案,請從您的本機電腦選擇檔案。• 如果要建立檔案,請在程式碼編輯器中輸入您要新增的內容,並為檔案提供名稱。

7. 選擇 Commit changes (遞交變更)。

新增檔案 (AWS CLI)您可以使用 AWS CLI 和 put-file 命令,在 CodeCommit 儲存庫中新增檔案。您也可以使用 put-file 命令來為檔案新增目錄或路徑結構。

Note

要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

將檔案新增到儲存庫

1. 在您的本機電腦上,建立您要新增至 CodeCommit 儲存庫的檔案。2. 在終端機或命令列,執行 put-file 命令,指定:

• 您要新增檔案所在的儲存庫。• 您要新增檔案所在的分支。

API 版本 2015-04-13133

Page 142: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南新增檔案 (Git)

• 對該分支所進行最新遞交的完整遞交 ID,也稱為頂端或標頭遞交。• 檔案的本機位置。用於此位置的語法因您的本機作業系統而有所不同。• 您要新增的檔案名稱,包括已更新檔案在儲存庫中的存放路徑 (如果有)。• 要與此檔案建立關聯的使用者名稱和電子郵件。• 說明為何新增此檔案的遞交訊息。

使用者名稱、電子郵件地址和遞交訊息是選用的,但可協助其他使用者知道誰進行了變更以及原因。如果您不提供使用者名稱,CodeCommit 會預設為使用您的 IAM 使用者名稱或主控台登入的衍生做為作者名稱。

例如,若要將名為 ExampleSolution.py 的檔案新增至名為 MyDemoRepo 儲存庫中名為 feature-randomizationfeature 的分支,且其最近遞交的 ID 為 4c925148EXAMPLE,請執行下列動作:

aws codecommit put-file --repository-name MyDemoRepo --branch-name feature-randomizationfeature --file-content file://MyDirectory/ExampleSolution.py --file-path /solutions/ExampleSolution.py --parent-commit-id 4c925148EXAMPLE --name "María García" --email "maría_garcí[email protected]" --commit-message "I added a third randomization routine."

Note

新增二進位檔案時,請確定您使用 fileb:// 來指定本機檔案的位置。

如果此命令成功執行,您會看到類似如下的輸出傳回:

{ "blobId": "2eb4af3bEXAMPLE", "commitId": "317f8570EXAMPLE", "treeId": "347a3408EXAMPLE"}

新增檔案 (Git)您可以在本機儲存庫中新增檔案,然後將變更推送至 CodeCommit 儲存庫。如需詳細資訊,請參閱Git 與AWS CodeCommit 教學 (p. 58)。

編輯 AWS CodeCommit 儲存庫中的檔案內容您可以使用 CodeCommit 主控台、AWS CLI 或 Git 用戶端,以編輯 CodeCommit 儲存庫中的檔案內容。

API 版本 2015-04-13134

Page 143: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南編輯檔案 (主控台)

主題• 編輯檔案 (主控台) (p. 135)• 編輯或刪除一個檔案 (AWS CLI) (p. 136)• 編輯檔案 (Git) (p. 137)

編輯檔案 (主控台)您可以使用 CodeCommit 主控台來編輯已新增到 CodeCommit 儲存庫中某個分支的檔案。在編輯檔案時,您可以提供您的使用者名稱和電子郵件地址。您也可以新增遞交訊息,讓其他使用者了解是誰做此變更,以及變更原因。

編輯儲存庫中的檔案

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要編輯的檔案所在的儲存庫。3. 在 Code (程式碼) 檢視中,選擇您要編輯的檔案所在的分支。依預設,當您開啟 Code (程式碼) 檢視

時,會顯示預設分支的內容。

若要將檢視變更至不同的分支,請選擇檢視選取器按鈕。從下拉式清單選擇分支名稱,或是在篩選方塊中輸入分支的名稱,然後從清單中選擇它。

API 版本 2015-04-13135

Page 144: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南編輯或刪除一個檔案 (AWS CLI)

4. 導覽分支的內容,選擇您要編輯的檔案。在檔案檢視中,選擇 Edit (編輯)。

Note

如果您選擇二進位檔案,則會出現警告訊息,請求您確認是否要顯示內容。您不應該使用CodeCommit 主控台來編輯二進位檔案。

5. 編輯檔案,並將做此變更的使用者及變更原因等資訊提供給其他使用者。

• 在 Author Name (作者名稱) 中,輸入名稱。此名稱會同時做為作者名稱和遞交資訊中的遞交名稱。CodeCommit 會預設為使用您的 IAM 使用者名稱或主控台登入的衍生做為作者名稱。

• 在 Email address (電子郵件地址) 中,輸入電子郵件地址,讓其他儲存庫使用者可以與您聯絡變更的相關事項。

• 在 Commit message (遞交訊息) 中,輸入變更的簡短描述。6. 選擇 Commit changes (遞交變更),儲存您對檔案所做的變更,並將變更遞交到儲存庫。

編輯或刪除一個檔案 (AWS CLI)您可以使用 AWS CLI 和 put-file 命令,對 CodeCommit 儲存庫中的檔案進行奱更。若要將已變更的檔案存放在不同於原始檔案的位置,您也可以使用 put-file 命令為已變更的檔案新增目錄或路徑結構。如果您想要刪除整個檔案,可以使用 delete-file 命令。

Note

要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

編輯儲存庫中的檔案

1. 使用檔案的本機副本,進行您要新增到 CodeCommit 儲存庫的變更。2. 在終端機或命令列,執行 put-file 命令,指定:

• 要新增已編輯檔案的儲存庫。• 要新增已編輯檔案的分支。• 對該分支所進行最新遞交的完整遞交 ID,也稱為頂端或標頭遞交。• 檔案的本機位置。• 您要新增的已更新檔案名稱,包括已更新檔案在儲存庫中的存放路徑 (如果有)。• 要與此檔案變更建立關聯的使用者名稱和電子郵件。• 用以說明您所做變更的遞交訊息。

使用者名稱、電子郵件地址和遞交訊息是選用的,但可協助其他使用者知道誰進行了變更以及原因。如果您不提供使用者名稱,CodeCommit 會預設為使用您的 IAM 使用者名稱或主控台登入的衍生。

例如,若要將 ExampleSolution.py 檔案新增至 MyDemoRepo 儲存庫中的 feature-randomizationfeature 分支,且其最近遞交的 ID 為 4c925148EXAMPLE,請執行下列動作:

aws codecommit put-file --repository-name MyDemoRepo --branch-name feature-randomizationfeature --file-content file://MyDirectory/ExampleSolution.py --file-path /solutions/ExampleSolution.py --parent-commit-id 4c925148EXAMPLE --name "María García" --email "maría_garcí[email protected]" --commit-message "I fixed the bug Mary found."

Note

如果您想要新增已變更的二進位檔案,請務必使用 --file-content 搭配標記法fileb://MyDirectory/MyFile.raw。

API 版本 2015-04-13136

Page 145: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南編輯檔案 (Git)

如果此命令成功執行,您會看到類似如下的輸出傳回:

{ "blobId": "2eb4af3bEXAMPLE", "commitId": "317f8570EXAMPLE", "treeId": "347a3408EXAMPLE"}

若要刪除檔案,請使用 delete-file 命令。例如,想要在名為 MyDemoRepo 的儲存庫中擁有最近期遞交 IDc5709475EXAMPLE 且名為 master 的分支下,刪除名為 README.md 的檔案:

aws codecommit delete-file --repository-name MyDemoRepo --branch-name master --file-path README.md --parent-commit-id c5709475EXAMPLE

如果此命令成功執行,您會看到類似如下的輸出傳回:

{ "blobId":"559b44fEXAMPLE", "commitId":"353cf655EXAMPLE", "filePath":"README.md", "treeId":"6bc824cEXAMPLE"}

編輯檔案 (Git)您可以在本機儲存庫中編輯檔案,然後將變更推送至 CodeCommit 儲存庫。如需詳細資訊,請參閱Git 與AWS CodeCommit 教學 (p. 58)。

API 版本 2015-04-13137

Page 146: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

在 AWS CodeCommit 儲存庫中使用提取請求

為了讓您和其他儲存庫使用者可以檢閱程式碼變更、做註解,以及從一個分支合併到另一個分支,提取請求是主要方式。您可以使用提取請求來共同檢閱程式碼變更,以了解已發行軟體的次要變更或修正、新增的主要功能或新版本。以下是提取請求的一個可能的工作流程:

在名為 MyDemoRepo 的儲存庫中工作的開發人員 Li Juan,需要為即將發行的產品版本開發新功能。為了將她的工作與可正式運作的程式碼分開,她在預設分支以外再建立一個分支,並命名為 feature-randomizationfeature。 她撰寫程式碼、進行遞交,然後將新功能程式碼推送到這個分支。在將她的變更合併到預設分支之前,她希望其他儲存庫使用者能夠檢閱程式碼的品質。為了這樣做,她建立提取請求。提取請求包含她的工作分支與她想合併變更的程式碼分支 (在此案例中為預設分支) 之間的比較。其他使用者檢閱她的程式碼和變更,並新增註解和建議。她可能根據註解而以程式碼變更來多次更新她的工作分支。每當她在 CodeCommit 中將變更推送到該分支時,她的變更就會納入提取請求中。在提取請求已開啟的情況下,她也可能納入預定目的地分支中已發生的變更,讓使用者確信他們檢閱的是相關情境下所有提議的變更。當她和檢閱者都感到滿意後,她或其中一位檢閱者可合併程式碼並關閉提取請求。

提取請求需要兩個分支:來源分支 - 包含您希望檢閱的程式碼;目的地分支 - 在此處合併已檢閱的程式碼。來源分支包含「之後」遞交,此遞交包含您想要合併到目的地分支的變更。目的地分支包含「之前」遞交,這代表程式碼的「之前」狀態 (在提取請求分支合併到目的地分支之前)。合併策略的選擇會影響CodeCommit 主控台中,遞交在來源和目的地分支之間合併方式的詳細資訊。如需 CodeCommit 中合併策略的詳細資訊,請參閱合併提取請求 (主控台) (p. 155)。

API 版本 2015-04-13138

Page 147: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

提取請求會顯示建立提取請求時,在來源分支的頂端與目的地分支的最新遞交之間的差異,讓使用者可以檢視變更並做註解。您可以將變更遞交並推送到來源分支,以更新提取請求來回應註解。

檢閱您的程式碼之後,有幾種方式可以關閉提取請求:

• 在本機合併分支並推送您的變更。這會自動關閉請求。• 使用 AWS CodeCommit 主控台來關閉提取請求而不合併、解決合併中的衝突,或使用其中一個可用的合

併策略來關閉和合併分支 (如果沒有衝突)。• 使用 AWS CLI。

API 版本 2015-04-13139

Page 148: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立提取請求

在您建立提取請求之前:

• 請確定已將您希望檢閱的程式碼變更遞交並推送到分支 (來源分支)。• 為儲存庫設定通知,讓其他使用者收到有關提取請求及其變更的通知。(此為選用步驟,但建議執行。)

當您為 AWS 帳戶中的儲存庫使用者設定 IAM 使用者之後,提取請求會更有效果。可更輕易識別哪個使用者做出哪個註解。IAM 使用者還能夠使用 Git 登入資料來存取儲存庫。如需更多詳細資訊,請參閱 步驟 1:CodeCommit 的初始組態 (p. 7)。您可以對其他類型的使用者 (包括聯合身分存取使用者) 使用提取請求。

如需有關在 CodeCommit 中使用儲存庫其他部分的資訊,請參閱使用儲存庫 (p. 74)、使用檔案 (p. 130)、使用遞交 (p. 170)、使用分支 (p. 201),以及處理使用者偏好設定 (p. 216)。

主題• 建立提取請求 (p. 140)• 檢視 AWS CodeCommit 儲存庫中的提取請求 (p. 143)• 檢閱提取請求 (p. 146)• 更新提取請求 (p. 152)• 合併 AWS CodeCommit 儲存庫中的提取請求 (p. 155)• 解決 AWS CodeCommit 儲存庫中的提取請求衝突 (p. 159)• 關閉 AWS CodeCommit 儲存庫中的提取請求 (p. 167)

建立提取請求建立提取請求可協助其他使用者在您將程式碼變更合併到另一個分支之前,查看和檢閱您的程式碼變更。首先,您會為程式碼變更建立分支。這稱為提取請求的來源分支。在您將變更遞交和推送至儲存庫之後,您可以建立一個提取請求,該請求會在提取請求關閉之後,將該分支的內容 (來源分支) 與您要合併變更所在的分支 (目的地分支) 比較。

您可以使用 AWS CodeCommit 主控台或 AWS CLI 來建立儲存庫的提取請求。

主題• 建立提取請求 (主控台) (p. 140)• 建立提取請求 (AWS CLI) (p. 142)

建立提取請求 (主控台)您可以使用 CodeCommit 主控台在 CodeCommit 儲存庫中建立提取請求。如果您的儲存庫已設定通知 (p. 83),當您建立提取請求時,訂閱的使用者會收到一封電子郵件。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要建立提取請求所在儲存庫的名稱。3. 在導覽窗格中,選擇 Pull requests (提取請求)。

Tip

您也可以從 Branches (分支) 和 Code (程式碼) 建立提取請求。4. 選擇 Create pull request (建立提取請求)。

API 版本 2015-04-13140

Page 149: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立提取請求 (主控台)

5. 在 Create pull request (建立提取請求) 的 Source (來源) 中,選擇分支,其中包含您希望檢閱的變更。6. 在 Destination (目的地) 中,選擇您要在提取請求關閉時,合併程式碼變更所在的分支。7. 選擇 Compare (比較)。系統會就這兩個分支執行比較,並顯示它們之間的差異。也會執行分析來判斷在

提取請求關閉時,是否可自動合併這兩個分支。8. 檢閱比較詳細資訊和變更,以確認提取請求包含您希望檢閱的變更和遞交。如果未包含,請調整您的來

源和目的地分支選項,然後再次選擇 Compare (比較)。9. 當您對提取請求的比較結果感到滿意時,請在 Title (標題) 中為此檢閱輸入簡短但具描述性的標題。這是

在儲存庫的提取請求清單中顯示的標題。10. (選用) 在 Description (描述) 中,輸入此檢閱的詳細資訊,以及對檢閱者有用的任何其他資訊。11. 選擇 Create (建立)。

API 版本 2015-04-13141

Page 150: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立提取請求 (AWS CLI)

您的提取請求會出現在儲存庫的提取請求清單中。如果您已設定通知 (p. 83),Amazon SNS 主題的訂閱者會收到一封電子郵件,通知他們新建立的提取請求。

建立提取請求 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

使用 AWS CLI 在 CodeCommit 儲存庫中建立提取請求

1. 執行 create-pull-request 命令,並指定:

• 提取請求的名稱 (使用 --title 選項)。• 提取請求的描述(使用 --description 選項)。• create-pull-request 命令的目標清單,包括:

• 建立提取請求所在 CodeCommit 儲存庫 的名稱 (使用 repositoryName 屬性)。• 分支名稱,其中包含您希望檢閱的程式碼變更,也稱為來源分支 (使用 sourceReference 屬性)。• (選用) 您要合併程式碼變更所在的分支名稱,也稱為目的地分支 (如果您不想合併到預設分支) (使用

destinationReference 屬性)。• 唯一的用戶端產生冪等符記 (使用 --client-request-token 選項)。

例如,若要建立符合以下條件的提取請求:名為 紅紅紅紅紅紅、描述為紅紅紅紅紅紅紅紅紅紅紅紅紅、目標為MyNewBranch 來源分支,並且要合併至名為 MyDemoRepo 的 CodeCommit 儲存庫中的預設分支master:

aws codecommit create-pull-request --title "My Pull Request" --description "Please review these changes by Tuesday" --client-request-token 123Example --targets repositoryName=MyDemoRepo,sourceReference=MyNewBranch

API 版本 2015-04-13142

Page 151: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視提取請求

2. 如果此命令成功執行,您會看到類似如下的輸出產生:

{ "pullRequest": { "authorArn": "arn:aws:iam::111111111111:user/Jane_Doe", "clientRequestToken": "123Example", "creationDate": 1508962823.285, "description": "Please review these changes by Tuesday", "lastActivityDate": 1508962823.285, "pullRequestId": "42", "pullRequestStatus": "OPEN", "pullRequestTargets": [ { "destinationCommit": "5d036259EXAMPLE", "destinationReference": "refs/heads/master", "mergeMetadata": { "isMerged": false, }, "repositoryName": "MyDemoRepo", "sourceCommit": "317f8570EXAMPLE", "sourceReference": "refs/heads/MyNewBranch" } ], "title": "My Pull Request" }}

檢視 AWS CodeCommit 儲存庫中的提取請求您可以使用 AWS CodeCommit 主控台或 AWS CLI 來檢視儲存庫的提取請求。依預設,您只能看到開啟中的提取請求,但您可以變更篩選以檢視所有提取請求、僅關閉的請求、僅您建立的提取請求等等。

主題• 檢視提取請求 (主控台) (p. 143)• 檢視提取請求 (AWS CLI) (p. 144)

檢視提取請求 (主控台)您可以使用 AWS CodeCommit 主控台來檢視 CodeCommit 儲存庫中提取請求的清單。透過變更篩選,您可以將清單顯示變更為僅向您顯示特定的一組提取請求。例如,您可以檢視您建立、狀態為 Open (開啟中) 的提取請求清單,或您可以選擇不同的篩選並檢視您所建立、狀態為 Closed (關閉) 的提取請求。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要檢視提取請求所在儲存庫的名稱。3. 在導覽窗格中,選擇 Pull requests (提取請求)。4. 依預設,會顯示所有開啟的提取請求清單。

API 版本 2015-04-13143

Page 152: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視提取請求 (AWS CLI)

5. 若要變更顯示篩選,請從可用的篩選清單中選擇:

• Open pull requests (開啟中的提取請求) (預設):顯示狀態為 Open (開啟中) 的所有提取請求。• All pull requests (所有提取請求):顯示所有提取請求。• Closed pull requests (關閉的提取請求):顯示狀態為 Closed (關閉) 的所有提取請求。• My pull requests (我的提取請求):顯示您建立的所有提取請求,而不論狀態為何。它不會顯示您加上

評論或以其他方式參與的檢閱。• My open pull requests (我的開啟中提取請求):顯示您建立、狀態為 Open (開啟中) 的所有提取請

求。• My closed pull requests (我的關閉提取請求):顯示您建立、狀態為 Closed (關閉) 的所有提取請求。

6. 在顯示的清單中找到要檢視的提取請求時,請加以選擇。

檢視提取請求 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

請依照以下步驟,使用 AWS CLI 來檢視 CodeCommit 儲存庫 中的提取請求。

1. 若要檢視儲存庫中提取請求的清單,請執行 list-pull-requests 命令,指定:

• 您要檢視提取請求所在 CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。• (選用) 提取請求的狀態 (使用 --pull-request-status 選項)。• (選用) 建立提取請求之 IAM 使用者的 Amazon Resource Name (ARN) (使用 --author-arn 選項)。• (選用) 可用來傳回結果批次的列舉字符 (使用 --next-token 選項)。• (選用) 每個請求傳回結果的數量有限制 (使用 --max-results 選項)。

例如,若要列出名為 MyDemoRepo 的 CodeCommit 儲存庫中具有 ARNarn:aws:iam::111111111111:user/Li_Juan 和狀態 CLOSED (紅紅) 的 IAM 使用者建立的提取請求:

API 版本 2015-04-13144

Page 153: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視提取請求 (AWS CLI)

aws codecommit list-pull-requests --author-arn arn:aws:iam::111111111111:user/Li_Juan --pull-request-status CLOSED --repository-name MyDemoRepo

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "nextToken": "", "pullRequestIds": ["2","12","16","22","23","35","30","39","47"]}

提取請求 ID 會以最新活動的順序顯示。2. 若要檢視提取請求的詳細資訊,請執行 get-pull-request 命令加上 --pull-request-id 選項,指定提取請求

的 ID。例如,若要檢視 ID 為 42 之提取請求的詳細資訊:

aws codecommit get-pull-request --pull-request-id 42

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "pullRequest": { "authorArn": "arn:aws:iam::111111111111:user/Jane_Doe", "title": "Pronunciation difficulty analyzer" "pullRequestTargets": [ { "destinationReference": "refs/heads/master", "destinationCommit": "5d036259EXAMPLE", "sourceReference": "refs/heads/jane-branch" "sourceCommit": "317f8570EXAMPLE", "repositoryName": "MyDemoRepo", "mergeMetadata": { "isMerged": false, }, } ], "lastActivityDate": 1508442444, "pullRequestId": "42", "clientRequestToken": "123Example", "pullRequestStatus": "OPEN", "creationDate": 1508962823, "description": "A code review of the new feature I just added to the service.", }}

3. 若要檢視提取請求中的事件,請執行 describe-pull-request-events 命令加上 --pull-request-id 選項,指定提取請求的 ID。例如,若要檢視 ID 為 8 之提取請求的事件:

aws codecommit describe-pull-request-events --pull-request-id 8

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "pullRequestEvents": [ { "pullRequestId": "8", "pullRequestEventType": "PULL_REQUEST_CREATED", "eventDate": 1510341779.53, "actor": "arn:aws:iam::111111111111:user/Zhang_Wei"

API 版本 2015-04-13145

Page 154: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢閱提取請求

}, { "pullRequestStatusChangedEventMetadata": { "pullRequestStatus": "CLOSED" }, "pullRequestId": "8", "pullRequestEventType": "PULL_REQUEST_STATUS_CHANGED", "eventDate": 1510341930.72, "actor": "arn:aws:iam::111111111111:user/Jane_Doe" } ]}

4. 若要檢視提取請求是否有任何合併衝突,請執行 get-merge-conflicts 命令,指定:

• CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。• 要在合併評估中使用的變更來源的分支、標籤、HEAD 或其他完整參考 (使用 --source-commit-

specifier 選項)。• 要在合併評估中使用的變更目的地的分支、標籤、HEAD 或其他完整參考 (使用 --destination-commit-

specifier 選項)。• 要使用的合併選項 (使用 --merge-option 選項)

例如,若要檢視名為 MyDemoRepo 的儲存庫中名為 my-feature-branch 的來源分支和名為 master的目的地分支的頂端之間是否有任何合併衝突:

aws codecommit get-merge-conflicts --repository-name MyDemoRepo --source-commit-specifier my-feature-branch --destination-commit-specifier master --merge-option FAST_FORWARD_MERGE

如果此命令成功執行,您會看到類似如下的輸出傳回:

{ "destinationCommitId": "fac04518EXAMPLE", "mergeable": false, "sourceCommitId": "16d097f03EXAMPLE"}

檢閱提取請求您可以使用 AWS CodeCommit 主控台來檢閱提取請求中包含的變更。您可以對請求、檔案,以及個別的程式碼行新增評論。您也可以回覆其他使用者的評論。如果您的儲存庫已設定通知 (p. 83),當使用者回覆您的評論或是當使用者對提取請求加上評論時,您會收到電子郵件。

您可以使用 AWS CLI 來對提取請求進行評論和回覆評論。若要檢閱變更,您必須使用 git diff 命令或比較工具。

主題• 檢閱提取請求 (主控台) (p. 146)• 檢閱提取請求 (AWS CLI) (p. 149)

檢閱提取請求 (主控台)您可以使用 CodeCommit 主控台來檢閱 CodeCommit 儲存庫 中的提取請求。

API 版本 2015-04-13146

Page 155: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢閱提取請求 (主控台)

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇儲存庫的名稱。3. 在導覽窗格中,選擇 Pull requests (提取請求)。4. 依預設,會顯示所有開啟的提取請求清單。選擇您想要檢閱的開啟中提取請求。您也可以對關閉或合併

的提取請求進行評論。

5. 在提取請求中,選擇 Changes (變更)。6. 請執行下列其中一項:

• 若要新增一般評論,請在 Comments on changes (對變更加上評論) 中,於 New comment (新增評論)中,輸入評論,然後選擇 Submit (提交)。您可以使用 Markdown,或也可以純文字輸入您的評論。

• 若要對遞交中的檔案新增評論,請在 Changes (變更) 中找到檔案的名稱。選擇檔案名稱旁顯示的評論

氣泡 ,輸入評論,然後選擇 Save (儲存)。

API 版本 2015-04-13147

Page 156: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢閱提取請求 (主控台)

• 若要對提取請求中變更的行新增評論,在 Changes (變更) 中,移至您要加上評論的行。選擇評論氣

泡 ,輸入您的評論,然後選擇 Save (儲存)。

7. 若要回覆對遞交的評論,在 Changes (變更) 或 Activity (活動) 中,選擇 Reply (回覆)。

API 版本 2015-04-13148

Page 157: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢閱提取請求 (AWS CLI)

如果已設定通知 (p. 83),建立提取請求的使用者會收到有關評論的電子郵件。如果使用者回覆您的評論或提取請求已更新,您會收到電子郵件。

檢閱提取請求 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

使用 AWS CLI 來檢閱 CodeCommit 儲存庫中的提取請求

1. 若要將評論新增至儲存庫中的提取請求,請執行 post-comment-for-pull-request 命令,指定:

• 提取請求的 ID (使用 --pull-request-id 選項)。• 包含提取請求的儲存庫名稱 (使用 --repository-name 選項)。• 將合併提取請求所在目的地分支中遞交的完整遞交 ID (使用 --before-commit-id 選項)。

API 版本 2015-04-13149

Page 158: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢閱提取請求 (AWS CLI)

• 當您張貼評論時,為提取請求分支目前頂端的來源分支中遞交的完整遞交 ID (使用 --after-commit-id選項)。

• 唯一的用戶端產生冪等符記 (使用 --client-request-token 選項)。• 評論的內容 (使用 --content 選項)。• 可放置評論位置的清單位置相關資訊,包括:

• 要比較的檔案名稱,包括其副檔名和子目錄 (如果有) (使用 filePath 屬性)。• 比較檔案中變更的行號 (使用 filePosition 屬性)。• 對變更的評論在來源與目的地分支之間比較中為 "before" 或 "after" (使用 relativeFileVersion 屬

性)。

例如,若要將評論 "These don't appear to be used anywhere. (紅紅紅紅紅紅紅紅紅紅)Can weremove them?" (紅紅紅紅紅紅紅紅) 新增至對名為 MyDemoRepo 的儲存庫中 ID 為 47 的提取請求中ahs_count.py 檔案的變更:

aws codecommit post-comment-for-pull-request --pull-request-id "47" --repository-name MyDemoRepo --before-commit-id 317f8570EXAMPLE --after-commit-id 5d036259EXAMPLE --client-request-token 123Example --content ""These don't appear to be used anywhere. Can we remove them?"" --location filePath=ahs_count.py,filePosition=367,relativeFileVersion=AFTER

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "afterBlobId": "1f330709EXAMPLE", "afterCommitId": "5d036259EXAMPLE", "beforeBlobId": "80906a4cEXAMPLE", "beforeCommitId": "317f8570EXAMPLE", "comment": { "authorArn": "arn:aws:iam::111111111111:user/Saanvi_Sarkar", "clientRequestToken": "123Example", "commentId": "abcd1234EXAMPLEb5678efgh", "content": "These don't appear to be used anywhere. Can we remove them?", "creationDate": 1508369622.123, "deleted": false, "CommentId": "", "lastModifiedDate": 1508369622.123 } "location": { "filePath": "ahs_count.py", "filePosition": 367, "relativeFileVersion": "AFTER" }, "repositoryName": "MyDemoRepo", "pullRequestId": "47" }

2. 若要檢視提取請求的評論,請執行 get-comments-for-pull-request 命令,指定:

• CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。• 進行評論時,為分支頂端的來源分支中遞交的完整遞交 ID (使用 --after-commit-id option 選

項)。• 建立提取請求時,為分支頂端的目的地分支中遞交的完整遞交 ID (使用 --before-commit-id 選

項)。• (選用) 用來傳回下一個批次結果的列舉符記 (使用 --next-token 選項)。• (選用) 一個非負整數,用來限制傳回的結果 (使用 --max-results 選項)。

API 版本 2015-04-13150

Page 159: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢閱提取請求 (AWS CLI)

例如,若要檢視名為 MyDemoRepo 的儲存庫中提取請求的評論:

aws codecommit get-comments-for-pull-request --repository-name MyDemoRepo --before-commit-ID 317f8570EXAMPLE --after-commit-id 5d036259EXAMPLE

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "commentsForPullRequestData": [ { "afterBlobId": "1f330709EXAMPLE", "afterCommitId": "5d036259EXAMPLE", "beforeBlobId": "80906a4cEXAMPLE", "beforeCommitId": "317f8570EXAMPLE", "comments": [ { "authorArn": "arn:aws:iam::111111111111:user/Saanvi_Sarkar", "clientRequestToken": "", "commentId": "abcd1234EXAMPLEb5678efgh", "content": "These don't appear to be used anywhere. Can we remove them?", "creationDate": 1508369622.123, "deleted": false, "lastModifiedDate": 1508369622.123 }, { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "", "commentId": "442b498bEXAMPLE5756813", "content": "Good catch. I'll remove them.", "creationDate": 1508369829.104, "deleted": false, "commentId": "abcd1234EXAMPLEb5678efgh", "lastModifiedDate": 150836912.273 } ], "location": { "filePath": "ahs_count.py", "filePosition": 367, "relativeFileVersion": "AFTER" }, "repositoryName": "MyDemoRepo", "pullRequestId": "42" } ], "nextToken": "exampleToken"}

3. 若要對提取請求中的評論張貼回覆,請執行 post-comment-reply 命令,指定:

• 您要回覆的評論由系統產生的 ID (使用 --in-reply-to 選項)。• 唯一的用戶端產生冪等符記 (使用 --client-request-token 選項)。• 回覆的內容 (使用 --content 選項)。

例如,若要將 "Good catch. (紅紅紅紅)I'll remove them." (紅紅紅紅紅紅紅紅) 新增到系統產生的 ID為abcd1234EXAMPLEb5678efgh 的評論:

API 版本 2015-04-13151

Page 160: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南更新提取請求

aws codecommit post-comment-reply --in-reply-to abcd1234EXAMPLEb5678efgh --content "Good catch. I'll remove them." --client-request-token 123Example

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "comment": { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "123Example", "commentId": "442b498bEXAMPLE5756813", "content": "Good catch. I'll remove them.", "creationDate": 1508369829.136, "deleted": false, "CommentId": "abcd1234EXAMPLEb5678efgh", "lastModifiedDate": 150836912.221 } }

更新提取請求您可以使用本機 Git 用戶端來推送遞交至來源分支,如此會以程式碼變更更新提取請求。您可以以更多個遞交更新提取請求,因為:

• 您希望使用者檢閱您對來源分支程式碼的程式碼變更,以回應提取請求中的評論。• 從建立提取請求起,已對目的地分支進行一或多個遞交。您想要將這些變更納入來源分支 (向前整合)。這

會將提取請求的狀態變更為 Mergeable (可合併),並啟用透過主控台提取請求的合併和關閉。

您可以使用 AWS CodeCommit 主控台或 AWS CLI 來更新提取請求的標題或描述。您可能想要更新提取請求,因為:

• 其他使用者無法了解描述,或原始標題會誤導。• 您希望標頭或描述能反映對開啟中提取請求的來源分支進行的變更。

主題• 更新提取請求 (Git) (p. 152)• 更新提取請求 (主控台) (p. 153)• 更新提取請求 (AWS CLI) (p. 153)

更新提取請求 (Git)您可以使用 Git 來更新提取請求的來源分支,加上對程式碼的變更,以便:

• 新增更多程式碼至檢閱。• 在檢閱評論中納入建議的變更。• 將在目的地分支中所做的變更向前整合至來源分支。• 確保已在提取請求中檢閱要合併到目的地分支中的所有變更。

您在本機電腦上進行變更,然後遞交並將它們推送至來源分支。如果已對儲存庫設定通知 (p. 83),訂閱該主題的使用者會在您推送變更至開啟中提取請求的來源分支時收到電子郵件。

API 版本 2015-04-13152

Page 161: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南更新提取請求 (主控台)

更新來源分支加上程式碼變更

1. 從您的電腦上的本機儲存庫,在終端機或命令列中,確保您已提取對儲存庫的最新變更,然後執行 gitcheckout 命令,指定提取請求的來源分支。例如,若要檢查名為 pullrequestbranch 提取請求的來源分支:

git checkout pullrequestbranch

2. 進行您要檢閱的任何變更。例如,如果您要變更來源分支中的程式碼以回應使用者的評論,請編輯檔案加上這些變更。如果您想要將對目的地分支進行的變更整合到原始分支 (向前整合),請執行 git merge命令,指定目的地分支,以將這些變更合併到來源分支。

Tip

您可能想要使用比較工具或合併工具軟體,以協助檢視,以及選擇您想要整合到來源分支的變更。

3. 完成變更時,執行 git add 和 git commit 命令來暫置和遞交變更。

Tip

您可以單獨執行這些命令,或者您可以使用 -a 選項,自動將變更的檔案新增至遞交。例如,您可能會執行與下列類似的命令:

git commit -am "This is an example commit message."

如需詳細資訊,請參閱基本 Git 命令 (p. 311)或查詢您的 Git 文件。4. 執行 git push 命令來推送您的變更至 CodeCommit。您的提取請求會更新,加上您對來源分支所做的變

更。

更新提取請求 (主控台)您可以使用 CodeCommit 主控台來更新 CodeCommit 儲存庫 中提取請求的標題和描述。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要更新提取請求所在儲存庫的名稱。3. 在導覽窗格中,選擇 Pull requests (提取請求)。4. 依預設,會顯示所有開啟的提取請求清單。選擇您想要更新的開啟中提取請求。5. 在提取請求中,選擇 Details (詳細資訊),然後選擇 Edit details (編輯詳細資訊),以編輯標題或描述。

Note

您無法更新已關閉或合併的提取請求的標題或描述。

更新提取請求 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

使用 AWS CLI 來更新 CodeCommit 儲存庫中的提取請求

1. 若要更新儲存庫中提取請求的標題,請執行 update-pull-request-title 命令,指定:

• 提取請求的 ID (使用 --pull-request-id 選項)。• 提取請求的標題 (使用 --title 選項)。

API 版本 2015-04-13153

Page 162: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南更新提取請求 (AWS CLI)

例如,若要更新 ID 為 47 提取請求的標題:

aws codecommit update-pull-request-title --pull-request-id 47 --title "Consolidation of global variables - updated review"

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "pullRequest": { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "", "creationDate": 1508530823.12, "description": "Review the latest changes and updates to the global variables. I have updated this request with some changes, including removing some unused variables.", "lastActivityDate": 1508372657.188, "pullRequestId": "47", "pullRequestStatus": "OPEN", "pullRequestTargets": [ { "destinationCommit": "9f31c968EXAMPLE", "destinationReference": "refs/heads/master", "mergeMetadata": { "isMerged": false, }, "repositoryName": "MyDemoRepo", "sourceCommit": "99132ab0EXAMPLE", "sourceReference": "refs/heads/variables-branch" } ], "title": "Consolidation of global variables - updated review" }}

2. 若要更新提取請求的描述,請執行 update-pull-request-description 命令,指定:

• 提取請求的 ID (使用 --pull-request-id 選項)。• 描述 (使用 --description 選項)。

例如,若要更新 ID 為 47 提取請求的描述:

aws codecommit update-pull-request-description --pull-request-id 47 --description "Updated the pull request to remove unused global variable."

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "pullRequest": { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "", "creationDate": 1508530823.155, "description": "Updated the pull request to remove unused global variable.", "lastActivityDate": 1508372423.204, "pullRequestId": "47", "pullRequestStatus": "OPEN", "pullRequestTargets": [ { "destinationCommit": "9f31c968EXAMPLE",

API 版本 2015-04-13154

Page 163: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南合併提取請求

"destinationReference": "refs/heads/master", "mergeMetadata": { "isMerged": false, }, "repositoryName": "MyDemoRepo", "sourceCommit": "99132ab0EXAMPLE", "sourceReference": "refs/heads/variables-branch" } ], "title": "Consolidation of global variables" }}

合併 AWS CodeCommit 儲存庫中的提取請求完成程式碼的檢閱時,您可以透過數個方式中的一個來合併提取請求:

•在您的本機電腦上,您可以使用 git merge 命令來將來源分支合併到目的地分支,然後將合併的程式碼推送到目的地分支。如果使用向前快轉合併策略來合併提取請求,這將會自動關閉提取請求。git merge 命令也可讓您選擇 CodeCommit 主控台中未提供的合併選項或策略。如需 git merge 和合併選項的詳細資訊,請參閱 git-merge 或 Git 文件。

•在主控台中,您可以使用其中一個可用的合併策略將來源分支合併到目的地分支,它會自動關閉提取請求。您會看到提取請求可以合併的建議訊息。選擇 Merge (合併) 時,合併會使用您選擇的可用合併策略來執行。預設合併策略是使用向前快轉 (如果適用),這是 Git 的預設選項。根據來源和目的地分支中程式碼的狀態,該策略可能無法使用,但可能可以使用其他選項,例如 squash 或三向。

• 如果刪除了提取請求的來源或目的地分支,CodeCommit 會自動關閉提取請求。• 在 AWS CLI 中,您可以使用 AWS CLI 嘗試使用向前快轉、squash 或三向合併策略來合併和關閉提取請

求。

主題• 合併提取請求 (主控台) (p. 155)• 合併提取請求 (AWS CLI) (p. 157)

合併提取請求 (主控台)您可以使用 CodeCommit 主控台來合併 CodeCommit 儲存庫中的提取請求。提取請求的狀態變更為 Merged(已合併) 後,它就不會再顯示在開啟中提取請求清單。已合併的提取請求會歸類為已關閉。它無法變更回Open (開啟),但使用者仍然可以對變更進行評論並回覆評論。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇儲存庫的名稱。3. 在導覽窗格中,選擇 Pull requests (提取請求)。4. 依預設,會顯示所有開啟的提取請求清單。選擇您想要合併的開啟中提取請求。5. 在提取請求中,選擇可用的合併策略。無法套用的合併策略會變成灰色。如果沒有可用的合併策略,您

可以選擇在 CodeCommit 主控台中動解決衝突,或者使用 Git 用戶端在本機解決衝突。如需詳細資訊,請參閱解決 AWS CodeCommit 儲存庫中的提取請求衝突 (p. 159)。

API 版本 2015-04-13155

Page 164: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南合併提取請求 (主控台)

• 向前快轉合併會將目的地分支的參照向前移動到來源分支的最新遞交。這是 Git 的預設行為 (如果可能)。不會建立合併遞交,但來自來源分支的所有遞交歷史記錄都會保留,就像它們是在目的地分支發生的一樣。向前快轉合併不會在目的地分支歷史記錄的 Commit visualizer 檢視中顯示為分支合併,因為未建立合併遞交,而且來源分支的頂端已向前快轉至目的地分支的頂端。

API 版本 2015-04-13156

Page 165: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南合併提取請求 (AWS CLI)

• Squash 合併會建立一個遞交,其中包含來源分支的變更並套用該單一 squash 遞交至目的地分支。預設情況下,該 squash 遞交的遞交訊息會包含來源分支中變更的所有遞交訊息。不會保留分支變更的個別遞交歷史記錄。這可協助簡化您的儲存庫歷史記錄,同時仍在目的地分支歷史記錄的 Commitvisualizer 檢視中保留合併的圖形呈現方式。

• 三向合併會在目的地分支中建立合併的遞交訊息,同時也會在目的地分支的歷史記錄中保留對來源分支所做的個別遞交。這可協助保持儲存庫變更的完整歷史記錄。

6. 如果您選擇 squash 或三向合併策略,請檢閱自動產生的遞交訊息,如果您要變更資訊請加以修改。為遞交歷史記錄新增您的名稱和電子郵件。

7. 如有需要,可取消選取在合併時刪除來源分支的選項。預設選項是在合併提取請求時刪除來源分支。8. 選擇 Merge pull request (合併提取請求) 完成合併。

合併提取請求 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

使用 AWS CLI 來合併 CodeCommit 儲存庫中的提取請求

1. 若要使用向前快轉合併策略來合併和關閉提取請求,請執行 merge-pull-request-by-fast-forward 命令,指定:

• 提取請求的 ID (使用 --pull-request-id 選項)。• 來源分支頂端的完整遞交 ID (使用 --source-commit-id 選項)。• 儲存庫的名稱 (使用 --repository-name 選項)。

例如,若要在名為 MyDemoRepo 的儲存庫中合併和關閉 ID 為 47 和來源遞交 ID 為99132ab0EXAMPLE 的提取請求:

aws codecommit merge-pull-request-by-fast-forward --pull-request-id 47 --source-commit-id 99132ab0EXAMPLE --repository-name MyDemoRepo

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "pullRequest": { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "", "creationDate": 1508530823.142, "description": "Review the latest changes and updates to the global variables", "lastActivityDate": 1508887223.155, "pullRequestId": "47", "pullRequestStatus": "CLOSED", "pullRequestTargets": [ { "destinationCommit": "9f31c968EXAMPLE", "destinationReference": "refs/heads/master", "mergeMetadata": { "isMerged": true, "mergedBy": "arn:aws:iam::111111111111:user/Mary_Major" }, "repositoryName": "MyDemoRepo", "sourceCommit": "99132ab0EXAMPLE", "sourceReference": "refs/heads/variables-branch" } ], "title": "Consolidation of global variables"

API 版本 2015-04-13157

Page 166: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南合併提取請求 (AWS CLI)

}}

2. 若要使用 squash 合併策略來合併和關閉提取請求,請執行 merge-pull-request-by-squash 命令,指定:

• 提取請求的 ID (使用 --pull-request-id 選項)。• 來源分支頂端的完整遞交 ID (使用 --source-commit-id 選項)。• 儲存庫的名稱 (使用 --repository-name 選項)。• 您想要使用的衝突細節層次 (使用 --conflict-detail-level 選項)。如果未指定,會使用預設的FILE_LEVEL。

• 您要使用的衝突解決策略 (使用 --conflict-resolution-strategy 選項)。如果未指定,此值預設為 NONE,且必須手動解決衝突。

• 要包含的遞交訊息 (使用 --commit-message 選項)。• 用於遞交的名稱 (使用 --name 選項)。• 用於遞交的電子郵件地址 (使用 --email 選項)。• 是否保留任何空資料夾 (使用 --keep-empty-folders 選項)。

例如,若要在名為 MyDemoRepo 的儲存庫中,使用 LINE_LEVEL 的衝突細節以及 ACCEPT_SOURCE 的衝突解決策略,來合併和關閉 ID 為 47 和來源遞交 ID 為 99132ab0EXAMPLE 的提取請求:

aws codecommit merge-pull-request-by-squash --pull-request-id 47 --source-commit-id 99132ab0EXAMPLE --repository-name MyDemoRepo --conflict-detail-level LINE_LEVEL --conflict-resolution-strategy ACCEPT_SOURCE --name "Jorge Souza" --email "[email protected]" --commit-message "Merging pull request 47 by squash and accepting source in merge conflicts"

如果成功,這個命令會產生與透過向前快轉合併相同的輸出類型,輸出類似於以下內容:

{ "pullRequest": { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "", "creationDate": 1508530823.142, "description": "Review the latest changes and updates to the global variables", "lastActivityDate": 1508887223.155, "pullRequestId": "47", "pullRequestStatus": "CLOSED", "pullRequestTargets": [ { "destinationCommit": "9f31c968EXAMPLE", "destinationReference": "refs/heads/master", "mergeMetadata": { "isMerged": true, "mergedBy": "arn:aws:iam::111111111111:user/Jorge_Souza" }, "repositoryName": "MyDemoRepo", "sourceCommit": "99132ab0EXAMPLE", "sourceReference": "refs/heads/variables-branch" } ], "title": "Consolidation of global variables" }}

3. 若要使用三向合併策略來合併和關閉提取請求,請執行 merge-pull-request-by-three-way 命令,指定:

• 提取請求的 ID (使用 --pull-request-id 選項)。API 版本 2015-04-13

158

Page 167: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南解決提取請求中的衝突

• 來源分支頂端的完整遞交 ID (使用 --source-commit-id 選項)。• 儲存庫的名稱 (使用 --repository-name 選項)。• 您想要使用的衝突細節層次 (使用 --conflict-detail-level 選項)。如果未指定,會使用預設的FILE_LEVEL。

• 您要使用的衝突解決策略 (使用 --conflict-resolution-strategy 選項)。如果未指定,此值預設為 NONE,且必須手動解決衝突。

• 要包含的遞交訊息 (使用 --commit-message 選項)。• 用於遞交的名稱 (使用 --name 選項)。• 用於遞交的電子郵件地址 (使用 --email 選項)。• 是否保留任何空資料夾 (使用 --keep-empty-folders 選項)。

例如,若要在名為 MyDemoRepo 的儲存庫中,使用衝突細節和衝突解決策略的的預設選項,來合併和關閉 ID 為 47 和來源遞交 ID 為 99132ab0EXAMPLE 的提取請求:

aws codecommit merge-pull-request-by-fast-forward --pull-request-id 47 --source-commit-id 99132ab0EXAMPLE --repository-name MyDemoRepo --name "Maria Garcia" --email "[email protected]" --commit-message "Merging pull request 47 by three-way with default options"

如果成功,這個命令會產生與透過向前快轉合併相同的輸出類型,類似於以下內容:

{ "pullRequest": { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "", "creationDate": 1508530823.142, "description": "Review the latest changes and updates to the global variables", "lastActivityDate": 1508887223.155, "pullRequestId": "47", "pullRequestStatus": "CLOSED", "pullRequestTargets": [ { "destinationCommit": "9f31c968EXAMPLE", "destinationReference": "refs/heads/master", "mergeMetadata": { "isMerged": true, "mergedBy": "arn:aws:iam::111111111111:user/Maria_Garcia" }, "repositoryName": "MyDemoRepo", "sourceCommit": "99132ab0EXAMPLE", "sourceReference": "refs/heads/variables-branch" } ], "title": "Consolidation of global variables" }}

解決 AWS CodeCommit 儲存庫中的提取請求衝突如果您的提取請求有衝突且無法合併,您可以使用多種方式來嘗試解決衝突:

• 在您的本機電腦,可以使用 git diff 命令來尋找兩個分支之間的衝突並進行變更來解決衝突。您也可以使用不同的工具或其他軟體,協助您尋找和解決差異。解決問題並感到滿意後,您可以推送包含已解決衝突之變更的來源分支,來更新提取請求。如需 git diff 和 git difftool 的詳細資訊,請參閱 Git 文件。

API 版本 2015-04-13159

Page 168: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南解決提取請求中的衝突 (主控台)

• 在主控台,您可以選擇 Resolve conflicts (解決衝突)。這會開啟純文字編輯器,以類似 git diff 命令的方式來顯示衝突。您可以手動檢閱每個檔案中的衝突、進行變更,然後以您的變更來更新提取請求。

• 在 AWS CLI 中,您可以使用 AWS CLI 取得合併衝突的相關資訊,並建立未參照的合併遞交來測試合併。

主題• 解決提取請求中的衝突 (主控台) (p. 160)• 解決提取請求中的衝突 (AWS CLI) (p. 162)

解決提取請求中的衝突 (主控台)您可以使用 CodeCommit 主控台,解決 CodeCommit 儲存庫中提取請求的衝突。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇儲存庫的名稱。3. 在導覽窗格中,選擇 Pull requests (提取請求)。4. 依預設,會顯示所有開啟的提取請求清單。選擇您想要合併但包含衝突的開啟中提取請求。5. 在提取請求中,選擇 Resolve conflicts (解決衝突)。提取請求中有必須解決然後才能合併的衝突時,才

會顯示此選項。

6. 會開啟衝突解決視窗,列出有必須解決之衝突的每個檔案。選擇清單中的每個檔案來檢閱衝突,並進行任何必要的變更,直到所有衝突都解決。

API 版本 2015-04-13160

Page 169: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南解決提取請求中的衝突 (主控台)

• 您可以選擇使用來源檔案內容、目的地檔案內容,或者如果檔案不是二進位檔案,則手動編輯檔案內容來讓其只包含您想要的變更。標準 git diff 標記用來顯示檔案中目的地 (HEAD) 和來源分支之間的衝突。

• 如果檔案是二進位檔案、Git 子模組,或是有檔案/資料夾名稱衝突,您必須選擇使用來源檔案或目的地檔案來解決衝突。您無法在 CodeCommit 主控台中檢視或編輯二進位檔案。

• 如果有檔案模式衝突,您可透過選擇來源檔案的檔案模式和目的地檔案的檔案模式,來查看可解決該衝突的選項。

API 版本 2015-04-13161

Page 170: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南解決提取請求中的衝突 (AWS CLI)

• 如果您決定要放棄對檔案的變更並恢復為衝突狀態,請選擇 Reset file (重設檔案)。這可讓您以不同的方法來解決衝突。

7. 對所做的變更感到滿意之後,請選擇 Update pull request (更新提取請求)。Note

您必須先解決檔案中的所有衝突,然後才能使用您的變更來成功更新提取請求。8. 提取請求會根據您的變更加以更新並變成可合併。您將會看到合併頁面。您可以選擇立即合併提取請

求,也可以返回提取請求清單。

解決提取請求中的衝突 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

沒有單一 AWS CLI 命令可讓您解決提取請求中的衝突和合併該請求。不過,您可以使用個別命令來探索衝突、嘗試解決問題,並測試提取請求是否可以合併。您可以使用:

• get-merge-options,來了解針對兩個遞交指標之間的合併,可使用哪些合併選項。• get-merge-conflicts,傳回在兩個遞交指標之間的合併中具有合併衝突的檔案清單。• batch-describe-merge-conflicts,使用指定的合併策略,取得在兩個遞交之間的合併中檔案的所有合併衝

突相關資訊。• describe-merge-conflicts,使用指定的合併策略,取得在兩個遞交之間特定檔案的合併衝突詳細資訊。• create-unreferenced-merge-commit,使用指定的合併策略,測試合併兩個遞交指標的結果。

1.為了探索兩個遞交指標之間的合併有哪些可用的合併選項,請執行 get-merge-options 命令,指定:

• 合併來源的遞交指標 (使用 --source-commit-specifier 選項)。• 合併目的地的遞交指標 (使用 --destination-commit-specifier 選項)。• 儲存庫的名稱 (使用 --repository-name 選項)。• (選用) 要使用的衝突解決策略 (使用 --conflict-resolution-strategy 選項)。• (選用) 所需的任何衝突的細節層次 (使用 --conflict-detail-level 選項)。

例如,若要判斷在名為 MyDemoRepo 的儲存庫中,可用於合併名為 bugfix-1234 之來源分支和名為master 之目的地分支的合併策略:

aws codecommit get-merge-options --source-commit-specifier bugfix-1234 --destination-commit-specifier master --repository-name MyDemoRepo

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "mergeOptions": [ "FAST_FORWARD_MERGE", "SQUASH_MERGE", "THREE_WAY_MERGE" ], "sourceCommitId": "d49940adEXAMPLE", "destinationCommitId": "86958e0aEXAMPLE", "baseCommitId": "86958e0aEXAMPLE"}

2.

API 版本 2015-04-13162

Page 171: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南解決提取請求中的衝突 (AWS CLI)

若要取得包含兩個遞交指標間合併之合併衝突的檔案清單,請執行 get-merge-conflicts 命令,指定:

• 合併來源的遞交指標 (使用 --source-commit-specifier 選項)。• 合併目的地的遞交指標 (使用 --destination-commit-specifier 選項)。• 儲存庫的名稱 (使用 --repository-name 選項)。• 您想要使用的合併選項 (使用 --merge-option 選項)。• (選用) 所需的任何衝突的細節層次 (使用 --conflict-detail-level 選項)。• (選用) 要使用的衝突解決策略 (使用 --conflict-resolution-strategy 選項)。• (選用) 傳回的含衝突檔案數目上限 (使用 --max-conflict-files 選項)。

例如,若要在名為 MyDemoRepo 的儲存庫中,使用三向合併策略,取得包含名為 feature-randomizationfeature 之來源分支和名為 master 之目的地分支之間合併衝突的檔案清單:

aws codecommit get-merge-conflicts --source-commit-specifier feature-randomizationfeature --destination-commit-specifier master --merge-option THREE_WAY_MERGE --repository-name MyDemoRepo

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "mergeable": false, "destinationCommitId": "86958e0aEXAMPLE", "sourceCommitId": "6ccd57fdEXAMPLE", "baseCommitId": "767b6958EXAMPLE", "conflictMetadataList": [ { "filePath": "readme.md", "fileSizes": { "source": 139, "destination": 230, "base": 85 }, "fileModes": { "source": "NORMAL", "destination": "NORMAL", "base": "NORMAL" }, "objectTypes": { "source": "FILE", "destination": "FILE", "base": "FILE" }, "numberOfConflicts": 1, "isBinaryFile": { "source": false, "destination": false, "base": false }, "contentConflict": true, "fileModeConflict": false, "objectTypeConflict": false, "mergeOperations": { "source": "M", "destination": "M" } } ]}

API 版本 2015-04-13163

Page 172: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南解決提取請求中的衝突 (AWS CLI)

3.若要取得兩個遞交指標之間的合併中,所有檔案或部分檔案之合併衝突的相關資訊,請執行 batch-describe-merge-conflicts 命令,指定:

• 合併來源的遞交指標 (使用 --source-commit-specifier 選項)。• 合併目的地的遞交指標 (使用 --destination-commit-specifier 選項)。• 您想要使用的合併選項 (使用 --merge-option 選項)。• 儲存庫的名稱 (使用 --repository-name 選項)。• (選用) 要使用的衝突解決策略 (使用 --conflict-resolution-strategy 選項)。• (選用) 所需的任何衝突的細節層次 (使用 --conflict-detail-level 選項)。• (選用) 傳回的合併 hunk 數目上限 (使用 --max-merge-hunks 選項)。• (選用) 傳回的含衝突檔案數目上限 (使用 --max-conflict-files 選項)。• (選用) 目標檔案路徑,用來描述衝突 (使用 --file-paths 選項)。

例如,若要判斷在名為 MyDemoRepo 的儲存庫中,使用 THREE_WAY_MERGE 策略,合併名為feature-randomizationfeature 之來源分支與名為 master 之目的地分支的合併衝突:

aws codecommit batch-describe-merge-conflicts --source-commit-specifier feature-randomizationfeature --destination-commit-specifier master --merge-option THREE_WAY_MERGE --repository-name MyDemoRepo

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "conflicts": [ { "conflictMetadata": { "filePath": "readme.md", "fileSizes": { "source": 139, "destination": 230, "base": 85 }, "fileModes": { "source": "NORMAL", "destination": "NORMAL", "base": "NORMAL" }, "objectTypes": { "source": "FILE", "destination": "FILE", "base": "FILE" }, "numberOfConflicts": 1, "isBinaryFile": { "source": false, "destination": false, "base": false }, "contentConflict": true, "fileModeConflict": false, "objectTypeConflict": false, "mergeOperations": { "source": "M", "destination": "M" } }, "mergeHunks": [ { API 版本 2015-04-13

164

Page 173: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南解決提取請求中的衝突 (AWS CLI)

"isConflict": true, "source": { "startLine": 0, "endLine": 3, "hunkContent": "VGhpcyBpEXAMPLE==" }, "destination": { "startLine": 0, "endLine": 1, "hunkContent": "VXNlIHRoEXAMPLE=" } } ] } ], "errors": [], "destinationCommitId": "86958e0aEXAMPLE", "sourceCommitId": "6ccd57fdEXAMPLE", "baseCommitId": "767b6958EXAMPLE"}

4.若要取得兩個遞交指標之間的合併中,特定檔案之任何合併衝突的相關資訊,請執行 describe-merge-conflicts 命令,指定:

• 合併來源的遞交指標 (使用 --source-commit-specifier 選項)。• 合併目的地的遞交指標 (使用 --destination-commit-specifier 選項)。• 您想要使用的合併選項 (使用 --merge-option 選項)。• 目標檔案路徑,用來描述衝突 (使用 --file-path 選項)。• 儲存庫的名稱 (使用 --repository-name 選項)。• (選用) 要使用的衝突解決策略 (使用 --conflict-resolution-strategy 選項)。• (選用) 所需的任何衝突的細節層次 (使用 --conflict-detail-level 選項)。• (選用) 傳回的合併 hunk 數目上限 (使用 --max-merge-hunks 選項)。• (選用) 傳回的含衝突檔案數目上限 (使用 --max-conflict-files 選項)。

例如,若要判斷在名為 MyDemoRepo 的儲存庫中,使用 THREE_WAY_MERGE 策略時,在名為readme.md 的檔案中 (此檔案位在名為 feature-randomizationfeature 的來源分支,並與名為master 的目的地分支合併) 的合併衝突:

aws codecommit describe-merge-conflicts --source-commit-specifier feature-randomizationfeature --destination-commit-specifier master --merge-option THREE_WAY_MERGE --file-path readme.md --repository-name MyDemoRepo

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "conflictMetadata": { "filePath": "readme.md", "fileSizes": { "source": 139, "destination": 230, "base": 85 }, "fileModes": { "source": "NORMAL", "destination": "NORMAL", "base": "NORMAL" },

API 版本 2015-04-13165

Page 174: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南解決提取請求中的衝突 (AWS CLI)

"objectTypes": { "source": "FILE", "destination": "FILE", "base": "FILE" }, "numberOfConflicts": 1, "isBinaryFile": { "source": false, "destination": false, "base": false }, "contentConflict": true, "fileModeConflict": false, "objectTypeConflict": false, "mergeOperations": { "source": "M", "destination": "M" } }, "mergeHunks": [ { "isConflict": true, "source": { "startLine": 0, "endLine": 3, "hunkContent": "VGhpcyBpEXAMPLE==" }, "destination": { "startLine": 0, "endLine": 1, "hunkContent": "VXNlIHRoEXAMPLE=" } } ], "destinationCommitId": "86958e0aEXAMPLE", "sourceCommitId": "6ccd57fdEXAMPLE", "baseCommitId": "767b69580EXAMPLE"}

5.若要建立未參照遞交來代表合併兩個遞交指標的結果,請執行 create-unreferenced-merge-commit 命令,指定:

• 合併來源的遞交指標 (使用 --source-commit-specifier 選項)。• 合併目的地的遞交指標 (使用 --destination-commit-specifier 選項)。• 您想要使用的合併選項 (使用 --merge-option 選項)。• 儲存庫的名稱 (使用 --repository-name 選項)。• (選用) 要使用的衝突解決策略 (使用 --conflict-resolution-strategy 選項)。• (選用) 所需的任何衝突的細節層次 (使用 --conflict-detail-level 選項)。• (選用) 要包含的遞交訊息 (使用 --commit-message 選項)。• (選用) 用於遞交的名稱 (使用 --name 選項)。• (選用) 用於遞交的電子郵件地址 (使用 --email 選項)。• (選用) 是否保留任何空資料夾 (使用 --keep-empty-folders 選項)。

例如,若要判斷在名為 MyDemoRepo 的儲存庫中,使用 ACCEPT_SOURCE 策略,合併名為bugfix-1234 之來源分支和名為 master 之目的地分支的合併衝突:

aws codecommit create-unreferenced-merge-commit --source-commit-specifier bugfix-1234 --destination-commit-specifier master --merge-option THREE_WAY_MERGE --repository-

API 版本 2015-04-13166

Page 175: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南關閉提取請求

name MyDemoRepo --name "Maria Garcia" --email "[email protected]" --commit-message "Testing the results of this merge."

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "commitId": "4f178133EXAMPLE", "treeId": "389765daEXAMPLE"}

關閉 AWS CodeCommit 儲存庫中的提取請求如果您想關閉提取請求而不合併程式碼,您有多種方式可以使用:

• 在主控台中,您可以關閉提取請求而不需合併程式碼。如果您想要使用 git merge 命令來手動合併分支,或如果提取請求來源分支中的程式碼,不是您要合併到目的地分支的程式碼,則可能想要這樣做。

• 您可以刪除提取請求中指定的來源分支。如果刪除了提取請求的來源或目的地分支,CodeCommit 會自動關閉提取請求。

• 在 AWS CLI 中,您可以將提取請求的狀態從 OPEN 更新為 CLOSED。這將會關閉提取請求而不合併程式碼。

主題• 關閉提取請求 (主控台) (p. 167)• 關閉提取請求 (AWS CLI) (p. 168)

關閉提取請求 (主控台)您可以使用 CodeCommit 主控台來關閉 CodeCommit 儲存庫中的提取請求。提取請求的狀態變更為 Closed(已關閉) 後,就無法再變更回 Open (開啟),但使用者仍然可以對變更進行評論並回覆評論。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇儲存庫的名稱。3. 在導覽窗格中,選擇 Pull requests (提取請求)。4. 依預設,會顯示所有開啟的提取請求清單。選擇您想要關閉的開啟中提取請求。

API 版本 2015-04-13167

Page 176: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南關閉提取請求 (AWS CLI)

5. 在提取請求中,選擇 Close pull request (關閉提取請求)。此選項會關閉提取請求,而不會嘗試將來源分支合併到目的地分支。此選項不會提供方式在關閉提取請求時刪除來源分支,但您可以在請求關閉之後自行執行該動作。

關閉提取請求 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

使用 AWS CLI 來關閉 CodeCommit 儲存庫中的提取請求

• 若要將儲存庫中提取請求的狀態從 OPEN 更新為 CLOSED,請執行 update-pull-request-status 命令,指定:

• 提取請求的 ID (使用 --pull-request-id 選項)。• 提取請求的狀態 (使用 --pull-request-status 選項)。

例如,若要在名為 MyDemoRepo 的 CodeCommit 儲存庫中,將 ID 為 42 的提取請求之狀態更新為CLOSED (紅紅紅):

aws codecommit update-pull-request-status --pull-request-id 42 --pull-request-status CLOSED

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "pullRequest": { "authorArn": "arn:aws:iam::111111111111:user/Jane_Doe", "clientRequestToken": "123Example", "creationDate": 1508962823.165, "description": "A code review of the new feature I just added to the service.", "lastActivityDate": 1508442444.12,

API 版本 2015-04-13168

Page 177: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南關閉提取請求 (AWS CLI)

"pullRequestId": "42", "pullRequestStatus": "CLOSED", "pullRequestTargets": [ { "destinationCommit": "5d036259EXAMPLE", "destinationReference": "refs/heads/master", "mergeMetadata": { "isMerged": false, }, "repositoryName": "MyDemoRepo", "sourceCommit": "317f8570EXAMPLE", "sourceReference": "refs/heads/jane-branch" } ], "title": "Pronunciation difficulty analyzer" }}

API 版本 2015-04-13169

Page 178: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

在 AWS CodeCommit 儲存庫中使用遞交

遞交是儲存庫的內容和內容變更的快照。每當使用者遞交和推送變更時,該資訊就會儲存和存放起來。因此,儲存的資訊也包括誰遞交變更、遞交的日期和時間,以及在遞交時所做的變更。您也可以將遞交加上標籤,以輕鬆地識別特定的遞交。在 CodeCommit 中,您可以:

• 檢閱遞交。• 在圖表中檢視遞交的歷史記錄。• 將遞交與其父系或另一個指標做比較。• 對遞交新增註解,並回覆其他人所做的註解。

您必須設定本機電腦來連接至儲存庫,才能將遞交推送至 CodeCommit。如需最簡單的方式,請參閱適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7)。

如需有關在 CodeCommit 中使用儲存庫其他部分的資訊,請參閱使用儲存庫 (p. 74)、使用檔案 (p. 130)、使用提取請求 (p. 138)、使用分支 (p. 201),以及處理使用者偏好設定 (p. 216)。

主題• 在 AWS CodeCommit 中建立遞交 (p. 171)• 在 AWS CodeCommit 中檢視遞交詳細資訊 (p. 175)• 比較 AWS CodeCommit 中的遞交 (p. 184)• 對 AWS CodeCommit 中遞交的評論 (p. 188)• 在 AWS CodeCommit 中建立 Git 標籤 (p. 197)

API 版本 2015-04-13170

Page 179: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立遞交

• 在 AWS CodeCommit 中檢視 Git 標籤詳細資訊 (p. 197)• 在 AWS CodeCommit 中刪除 Git 標籤 (p. 200)

在 AWS CodeCommit 中建立遞交您可以使用 Git 或 AWS CLI 在 CodeCommit 儲存庫中建立遞交。如果 本機儲存庫已連接到 CodeCommit 儲存庫,您可以使用 Git 來將遞交從 本機儲存庫推送至 CodeCommit 儲存庫。若要直接在 CodeCommit 主控台中建立遞交,請參閱建立檔案或將其新增至 AWS CodeCommit 儲存庫 (p. 132)和編輯 AWS CodeCommit儲存庫中的檔案內容 (p. 134)。

Note

如果使用 AWS CLI,請確定您已安裝較新的版本,以確保您使用的版本包含 create-commit 命令。

主題• 使用 Git 用戶端建立遞交 (p. 171)• 使用 AWS CLI 建立遞交 (p. 173)

使用 Git 用戶端建立遞交您可以使用本機電腦上安裝的 Git 用戶端來建立遞交,然後將這些遞交推送到您的 CodeCommit 儲存庫。

1. 完成必要條件,包括設定 (p. 5)。

Important

如果尚未完成設定,您無法使用 Git 連接到或遞交至儲存庫。2. 確定您是在正確的分支中建立遞交。若要查看可用的分支清單,並了解您目前設定使用的分支,請執行

git branch。將會顯示所有分支。您目前的分支旁會顯示星號 (*)。若要切換到不同的分支,請執行 gitcheckout branch-name。

3. 對分支進行變更 (例如,新增、修改或刪除檔案)。

例如,在 本機儲存庫 中,建立名為 bird.txt 含有下列文字的檔案:

bird.txt--------Birds (class Aves or clade Avialae) are feathered, winged, two-legged, warm-blooded, egg-laying vertebrates.

4. 執行 git status,應該會指出 bird.txt 尚未在任何擱置中包含的遞交:

... Untracked files: (use "git add <file>..." to include in what will be committed) bird.txt

5. 執行 git add bird.txt 以在擱置中遞交中包含新的檔案。6. 如果您再次執行 git status,應該會看到類似如下的輸出:這表示 bird.txt 現在已屬於擱置中遞交或

暫存供遞交:

...Changes to be committed: (use "git reset HEAD <file>..." to unstage)

API 版本 2015-04-13171

Page 180: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南使用 Git 用戶端建立遞交

new file: bird.txt

7. 若要完成遞交,請執行 git commit 搭配 -m 選項 (例如, git commit -m "Adding bird.txt to therepository.")。-m 選項會建立遞交訊息。

8. 如果您再次執行 git status,應該會看到類似如下的輸出:這表示遞交已準備好可從 本機儲存庫 推送到CodeCommit 儲存庫:

... nothing to commit, working directory clean

9. 將完成的遞交從 本機儲存庫推送至 CodeCommit 儲存庫之前,您可以執行 git diff --stat remote-name/branch-name 來查看您要推送的項目,其中的 remote-name 是 本機儲存庫用於 CodeCommit儲存庫的別名,而 branch-name 是要比較的分支名稱。

Tip

若要取得別名,請執行 git remote。若要取得分支名稱的清單,請執行 git branch。目前的分支旁會顯示星號 (*)。您也可以執行 git status 以取得目前的分支名稱。

Note

如果您複製了儲存庫,從 本機儲存庫 的觀點,remote-name 不是 CodeCommit 儲存庫 的名稱。複製儲存庫時,remote-name 會自動設定為 origin。

例如,git diff --stat origin/master 會顯示與下列類似的輸出:

bird.txt | 1 +1 file changed, 1 insertion(+)

當然,輸出會假設您已將 本機儲存庫 連接至 CodeCommit 儲存庫。(如需指示,請參閱連接到儲存庫 (p. 77)。)

10. 當您已準備好要將遞交從 本機儲存庫 推送到 CodeCommit 儲存庫 時,請執行 git push remote-name branch-name,其中的 remote-name 是 本機儲存庫 用於 CodeCommit 儲存庫 的別名,以及branch-name 是要推送至 CodeCommit 儲存庫 的分支名稱。

例如,執行 git push origin master 會顯示與下列類似的輸出:

針對 HTTPS:

Counting objects: 7, done.Delta compression using up to 4 threads.Compressing objects: 100% (4/4), done.Writing objects: 100% (5/5), 516 bytes | 0 bytes/s, done.Total 5 (delta 2), reused 0 (delta 0)remote:To https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo b9e7aa6..3dbf4dd master -> master

針對 SSH:

Counting objects: 7, done.Delta compression using up to 4 threads.Compressing objects: 100% (4/4), done.Writing objects: 100% (5/5), 516 bytes | 0 bytes/s, done.Total 5 (delta 2), reused 0 (delta 0)remote:To ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo b9e7aa6..3dbf4dd master -> master

API 版本 2015-04-13172

Page 181: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南使用 AWS CLI 建立遞交

Tip

如果您將 -u 選項新增至 git push (例如,git push -u origin master),則未來只需執行 gitpush,因為已設定上游追蹤資訊。若要取得上游追蹤資訊,請執行 git remote show remote-name (例如,git remote show origin)。

如需更多選項,請參閱您的 Git 文件。

使用 AWS CLI 建立遞交您可以使用 AWS CLI 和 create-commit 命令,在指定分支的頂端為儲存庫建立遞交。您也可以建立未參照的合併遞交來代表合併兩個遞交指標的結果。如需詳細資訊,請參閱建立未參照遞交 (p. 166)。

Note

要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

建立遞交

1. 在您的本機電腦上,進行您要遞交至 CodeCommit 儲存庫的變更。2. 在終端機或命令列,執行 create-commit 命令,指定:

• 您要遞交變更的儲存庫。• 您要遞交變更的分支。• 對該分支所進行最新遞交的完整遞交 ID,也稱為頂端或標頭遞交,或父遞交 ID。• 如果您所做的變更會刪除資料夾的內容,是否保留任何空的資料夾。根據預設,此值為 false。• 您想要新增、變更或刪除的檔案的相關資訊。• 要與這些變更建立關聯的使用者名稱和電子郵件。• 用以說明您為什麼做這些變更的遞交訊息。

使用者名稱、電子郵件地址和遞交訊息是選用的,但可協助其他使用者知道進行變更的人員及原因。如果您不提供使用者名稱,CodeCommit 會預設為使用您的 IAM 使用者名稱或主控台登入的衍生做為作者名稱。

例如,若要為儲存庫建立初始遞交,而在 master 分支中將 readme.md 檔案新增到名為 MyDemoRepo的儲存庫:

aws codecommit create-commit --repository-name MyDemoRepo --branch-name master --put-files "filePath=readme.md,fileContent='Welcome to our team repository.'"

如果此命令成功執行,您會看到類似如下的輸出傳回:

{ "commitId": "4df8b524-EXAMPLE", "treeId": "55b57003-EXAMPLE", "filesAdded": [ { "blobId": "5e1c309d-EXAMPLE", "absolutePath": "readme.md", "fileMode": "NORMAL" } ], "filesDeleted": [], "filesUpdated": []

API 版本 2015-04-13173

Page 182: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南使用 AWS CLI 建立遞交

}

若要建立遞交來變更名為 file1.py 和 file2.py 的檔案,將檔案從 picture.png 重新命名為 image1.png,並將它從名為 pictures 的目錄移到名為 images 的目錄,以及在名為MyFeatureBranch 且最新遞交的 ID 為 4c925148EXAMPLE ID 的分支上,在名為 MyDemoRepo 的儲存庫中刪除名為 ExampleSolution.py 的檔案:

aws codecommit create-commit --repository-name MyDemoRepo --branch-name MyFeatureBranch --parent-commit-id 4c925148EXAMPLE --name "Saanvi Sarkar" --email "[email protected]" --commit-message "I'm creating this commit to update a variable name in a number of files." --keep-empty-folders false --put-files '{"filePath": "file1.py", "fileMode": "EXECUTABLE", "fileContent": "bucket_name = sys.argv[1] region = sys.argv[2]"}''{"filePath": "file2.txt", "fileMode": "NORMAL", "fileContent": "//Adding a comment to explain the variable changes in file1.py"}' '{"filePath": "images/image1.png","fileMode": "NORMAL", "sourceFile": {"filePath": "pictures/picture.png", "isMove": true}}' --delete-files filePath="ExampleSolution.py"

Note

--put-files 區段的語法會根據您的作業系統而略有不同。上述範例針對 Linux, macOS, or Unix使用者和具有 Bash 模擬器的 Windows 使用者進行了最佳化。採用命令列或 Powershell 的Windows 使用者,應該使用該系統適用的語法。

如果此命令成功執行,您會看到類似如下的輸出傳回:

{ "commitId": "317f8570EXAMPLE", "treeId": "347a3408EXAMPLE", "filesAdded": [ { "absolutePath": "images/image1.png", "blobId": "d68ba6ccEXAMPLE", "fileMode": "NORMAL" } ], "filesUpdated": [ { "absolutePath": "file1.py", "blobId": "0a4d55a8EXAMPLE", "fileMode": "EXECUTABLE" }, { "absolutePath": "file2.txt", "blobId": "915766bbEXAMPLE", "fileMode": "NORMAL" } ], "filesDeleted": [ { "absolutePath": "ExampleSolution.py", "blobId": "4f9cebe6aEXAMPLE", "fileMode": "EXECUTABLE" }, { "absolutePath": "pictures/picture.png", "blobId": "fb12a539EXAMPLE", "fileMode": "NORMAL" } ]}

API 版本 2015-04-13174

Page 183: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視遞交詳細資訊

在 AWS CodeCommit 中檢視遞交詳細資訊您可以使用 AWS CodeCommit 主控台來瀏覽儲存庫中遞交的歷史記錄。這可協助您識別儲存庫中進行的變更,包括:

• 變更何時以及由誰進行。• 特定遞交何時合併到分支。

檢視分支遞交的歷史記錄可能也有助於了解分支之間的差異。如果您使用標記,也可以快速地檢視加上標籤的遞交和該標記遞交的父項。在命令列,您可以使用 Git 來檢視 本機儲存庫或 CodeCommit 儲存庫中遞交的詳細資訊。

瀏覽儲存庫中的遞交您可以使用 AWS CodeCommit 主控台來瀏覽對儲存庫中遞交的歷史記錄。您也可以隨著時間檢視儲存庫中遞交及其分支的圖表。這可協助您了解儲存庫的歷史記錄,包括進行變更的時間。

Note

使用 git rebase 命令來重設儲存庫的基準會變更儲存庫的歷史記錄,這可能造成遞交不按順序顯示。如需詳細資訊,請參閱 Git 分支重設基準或您的 Git 文件。

主題• 瀏覽儲存庫的遞交歷史記錄 (p. 175)• 檢視儲存庫遞交歷史記錄的圖表 (p. 176)

瀏覽儲存庫的遞交歷史記錄您可以瀏覽特定分支或儲存庫標籤的遞交歷史記錄,包含遞交者和遞交訊息的詳細資訊。您也可以檢視遞交的程式碼。

瀏覽遞交的歷史記錄

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要檢閱遞交歷史記錄的儲存庫。3. 在導覽窗格中,選擇 Commits (遞交)。在遞交歷史記錄檢視中,會顯示預設分支中儲存庫遞交的歷史記

錄,以遞交日期的相反時間順序顯示。日期與時間採用國際標準時間 (UTC)。您可以檢視不同分支遞交的歷史記錄,方法是選擇檢視選取器按鈕,然後從清單中選擇分支。如果您使用的是您的儲存庫中的標籤,您可以透過在檢視選取器按鈕中選擇該標籤,以檢視具有特定標籤的遞交和及父系。

API 版本 2015-04-13175

Page 184: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南瀏覽儲存庫中的遞交

4. 若要檢視遞交與其父系之間的差異,並選擇遞交的 ID 來查看對於變更的相關評論。如需更多詳細資訊,請參閱 將遞交與其父系比較 (p. 184) 及 對遞交的評論 (p. 188)。若要檢視遞交與任何其他遞交指標(包括分支、標籤或遞交 ID) 之間的差異,請參閱比較任兩個遞交指標 (p. 186)。

5. 執行下列其中一項或多項:

• 若要檢視進行變更的日期和時間,請將滑鼠的游標移到遞交日期上。• 若要檢視完整遞交 ID,請複製然後將它貼到文字編輯器或其他位置。若要進行複製,請選擇 Copy ID

(複製 ID)。• 若要檢視程式碼在遞交時的狀態,請選擇 Browse (瀏覽)。儲存庫在該遞交時的內容會顯示在 Code

(程式碼) 檢視中。檢視選取器按鈕會顯示縮寫的遞交 ID 而非分支或標籤。

檢視儲存庫遞交歷史記錄的圖表您可以檢視對儲存庫所做的遞交圖表。Commit Visualizer 檢視是對儲存庫的分支所進行所有遞交的有向無環圖 (DAG) 呈現。此圖形呈現可協助您了解新增或合併遞交和關聯功能的時間。它也可以協助您了解與其他變更相關的變更是何時進行。

Note

在遞交圖表中,使用向前快轉方法合併的遞交不會以單獨線條的形式顯示。

檢視遞交的圖表

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要檢視遞交圖表的儲存庫。3. 在導覽窗格中,選擇 Commits (遞交),然後選擇 Commit visualizer (遞交視覺化工具) 索引標籤。

API 版本 2015-04-13176

Page 185: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南瀏覽儲存庫中的遞交

在遞交圖表中,每個遞交訊息的縮寫遞交 ID 和主旨會顯示在圖表中的該點旁邊。

Note

圖表在一頁上最多可以顯示 35 個分支。如果超過 35 個分支,則圖表會太複雜而無法顯示。您可以透過兩個方式將檢視簡化:

• 使用檢視選取器按鈕來顯示特定分支的圖形。• 透過貼上完整的遞交 ID 至搜尋方塊,從該遞交轉譯圖形。

4. 若要從遞交轉譯圖形,請在圖形中選擇與該遞交對應的點。檢視選取器按鈕會變更為縮寫的遞交 ID。

API 版本 2015-04-13177

Page 186: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視遞交詳細資訊 (AWS CLI)

檢視遞交詳細資訊 (AWS CLI)Git 可讓您檢視遞交的詳細資訊。您也可以使用 AWS CLI 來檢視 本機儲存庫或 CodeCommit 儲存庫中遞交的詳細資訊,方法是執行下列命令:

• 若要檢視遞交的詳細資訊,請執行 aws codecommit get-commit (p. 178)。• 若要檢視合併遞交的相關資訊,請執行 aws codecommit get-merge-commit (p. 179)。• 若要檢視遞交指標 (分支、標籤、HEAD 或其他完整參考如遞交 ID) 的變更的相關資訊,請執行 aws

codecommit get-differences (p. 181)。• 若要檢視儲存庫中 Git Blob 物件的 base64 編碼內容,請執行 aws codecommit get-blob (p. 181)。

檢視遞交的詳細資訊1. 執行 aws codecommit get-commit 命令,並指定:

• CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。• 完整遞交 ID。

例如,若要檢視名為 MyDemoRepo 的 CodeCommit 儲存庫中 ID 為 317f8570EXAMPLE 遞交的相關資訊:

aws codecommit get-commit --repository-name MyDemoRepo --commit-id 317f8570EXAMPLE

2. 如果成功,此命令的輸出包含下列:

• 遞交作者 (如 Git 所設定) 的詳細資訊,包括採用時間戳記格式的日期和國際標準時間 (UTC) 位移。• 遞交者 (如 Git 所設定) 的詳細資訊,包括採用時間戳記格式的日期和 UTC 位移。

API 版本 2015-04-13178

Page 187: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視遞交詳細資訊 (AWS CLI)

• 遞交存在位置的 Git 樹狀目錄 ID。• 父遞交的遞交 ID。• 遞交訊息。

以下是基於上述範例命令的一些範例輸出:

{ "commit": { "additionalData": "", "committer": { "date": "1484167798 -0800", "name": "Mary Major", "email": "[email protected]" }, "author": { "date": "1484167798 -0800", "name": "Mary Major", "email": "[email protected]" }, "treeId": "347a3408EXAMPLE", "parents": [ "4c925148EXAMPLE" ], "message": "Fix incorrect variable name" }}

檢視合併遞交的相關資訊1. 執行 get-merge-commit 命令,並指定:

• 合併來源的遞交指標 (使用 --source-commit-specifier 選項)。• 合併目的地的遞交指標 (使用 --destination-commit-specifier 選項)。• 您想要使用的合併選項 (使用 --merge-option 選項)。• 儲存庫的名稱 (使用 --repository-name 選項)。

例如,若要在名為 MyDemoRepo 的儲存庫中,檢視針對名為 bugfix-bug1234 的來源分支以及名為master 的目的地分支,使用 THREE_WAY_MERGE 策略之合併遞交的相關資訊:

aws codecommit get-merge-commit --source-commit-specifier bugfix-bug1234 --destination-commit-specifier master --merge-option THREE_WAY_MERGE --repository-name MyDemoRepo

2. 如果成功,此命令的輸出會傳回類似如下的資訊:

{ "sourceCommitId": "c5709475EXAMPLE", "destinationCommitId": "317f8570EXAMPLE", "baseCommitId": "fb12a539EXAMPLE", "mergeCommitId": "ffc4d608eEXAMPLE"}

檢視多個遞交的相關資訊1. 執行 batch-get-commits 命令,並指定:

API 版本 2015-04-13179

Page 188: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視遞交詳細資訊 (AWS CLI)

• CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。• 您要檢視其資訊的每個遞交的完整遞交 ID 清單。

例如,若要檢視名為 MyDemoRepo 的 CodeCommit 儲存庫 中,ID 為 317f8570EXAMPLE 和4c925148EXAMPLE 之遞交的相關資訊:

aws codecommit batch-get-commits --repository-name MyDemoRepo --commit-ids 317f8570EXAMPLE 4c925148EXAMPLE

2. 如果成功,此命令的輸出包含下列:

• 遞交作者 (如 Git 所設定) 的詳細資訊,包括採用時間戳記格式的日期和國際標準時間 (UTC) 位移。• 遞交者 (如 Git 所設定) 的詳細資訊,包括採用時間戳記格式的日期和 UTC 位移。• 遞交存在位置的 Git 樹狀目錄 ID。• 父遞交的遞交 ID。• 遞交訊息。

以下是基於上述範例命令的一些範例輸出:

{ "commits": [ { "additionalData": "", "committer": { "date": "1508280564 -0800", "name": "Mary Major", "email": "[email protected]" }, "author": { "date": "1508280564 -0800", "name": "Mary Major", "email": "[email protected]" }, "commitId": "317f8570EXAMPLE", "treeId": "1f330709EXAMPLE", "parents": [ "6e147360EXAMPLE" ], "message": "Change variable name and add new response element" }, { "additionalData": "", "committer": { "date": "1508280542 -0800", "name": "Li Juan", "email": "[email protected]" }, "author": { "date": "1508280542 -0800", "name": "Li Juan", "email": "[email protected]" }, "commitId": "4c925148EXAMPLE", "treeId": "1f330709EXAMPLE", "parents": [ "317f8570EXAMPLE" ], "message": "Added new class" }

API 版本 2015-04-13180

Page 189: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視遞交詳細資訊 (AWS CLI)

}

檢視遞交指標變更的詳細資訊1. 執行 aws codecommit get-differences 命令,並指定:

• CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。• 您要取得資訊的遞交指標。只有 --after-commit-specifier 為必要。如果您不指定 --before-commit-specifier,將會顯示在 --after-commit-specifier 時當時的所有檔案。

例如,若要檢視名為 MyDemoRepo 的 CodeCommit 儲存庫中 ID 為 317f8570EXAMPLE 和4c925148EXAMPLE 的遞交之間差異的相關資訊:

aws codecommit get-differences --repository-name MyDemoRepo --before-commit-specifier 317f8570EXAMPLE --after-commit-specifier 4c925148EXAMPLE

2. 如果成功,此命令的輸出包含下列:

• 差異的清單,包含變更類型 (A 代表已新增,D 代表已刪除,或 M 代表已修改)。• 檔案變更類型的模式。• 包含變更的 Git Blob 物件 ID。

以下是基於上述範例命令的一些範例輸出:

{ "differences": [ { "afterBlob": { "path": "blob.txt", "blobId": "2eb4af3bEXAMPLE", "mode": "100644" }, "changeType": "M", "beforeBlob": { "path": "blob.txt", "blobId": "bf7fcf28fEXAMPLE", "mode": "100644" } } ]}

檢視 Git Blob 物件的詳細資訊1. 執行 aws codecommit get-blob 命令,並指定:

• CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。• Git Blob 的 ID (使用 --blob-id 選項)。

例如,若要檢視名為 MyDemoRepo 的 CodeCommit 儲存庫中 ID 為 2eb4af3bEXAMPLE Git Blob 的相關資訊:

API 版本 2015-04-13181

Page 190: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視遞交詳細資訊 (Git)

aws codecommit get-blob --repository-name MyDemoRepo --blob-id 2eb4af3bEXAMPLE

2. 如果成功,此命令的輸出包含下列:

• Blob 的 base64 編碼內容,通常是一個檔案。

例如,前一個命令的輸出應類似以下:

{ "content": "QSBCaW5hcnkgTGFyToEXAMPLE="}

檢視遞交詳細資訊 (Git)依照以下步驟之前,您應該已經將 本機儲存庫 連接 CodeCommit 儲存庫 並遞交變更。如需指示,請參閱連接到儲存庫 (p. 77)。

若要顯示對儲存庫最近遞交的變更,請執行 git show 命令。

git show

此命令會產生類似下列的輸出:

commit 4f8c6f9dAuthor: Mary Major <[email protected]>Date: Mon May 23 15:56:48 2016 -0700

Added bumblebee.txt

diff --git a/bumblebee.txt b/bumblebee.txtnew file mode 100644index 0000000..443b974--- /dev/null+++ b/bumblebee.txt@@ -0,0 +1 @@+A bumblebee, also written bumble bee, is a member of the bee genus Bombus, in the family Apidae.\ No newline at end of file

Note

在此範例和以下範例中,遞交 ID 已縮寫。不會顯示完整的遞交 ID。

若要檢視發生的變更,請使用 git show 命令搭配遞交 ID:

git show 94ba1e60

commit 94ba1e60Author: John Doe <[email protected]>Date: Mon May 23 15:39:14 2016 -0700

Added horse.txt

diff --git a/horse.txt b/horse.txtnew file mode 100644index 0000000..080f68f

API 版本 2015-04-13182

Page 191: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視遞交詳細資訊 (Git)

--- /dev/null+++ b/horse.txt@@ -0,0 +1 @@+The horse (Equus ferus caballus) is one of two extant subspecies of Equus ferus.

若要查看兩個遞交之間的差異,請執行 git diff 命令並包含兩個遞交的 ID。

git diff ce22850d 4f8c6f9d

在此範例中,這兩個遞交之間的差異是已新增了兩個檔案。此命令會產生類似下列的輸出:

diff --git a/bees.txt b/bees.txtnew file mode 100644index 0000000..cf57550--- /dev/null+++ b/bees.txt@@ -0,0 +1 @@+Bees are flying insects closely related to wasps and ants, and are known for their role in pollination and for producing honey and beeswax.diff --git a/bumblebee.txt b/bumblebee.txtnew file mode 100644index 0000000..443b974--- /dev/null+++ b/bumblebee.txt@@ -0,0 +1 @@+A bumblebee, also written bumble bee, is a member of the bee genus Bombus, in the family Apidae.\ No newline at end of file

若要使用 Git 來檢視 本機儲存庫 中遞交的詳細資訊,請執行 git log 命令:

git log

如果此命令成功執行,您會看到類似如下的輸出產生:

commit 94ba1e60Author: John Doe <[email protected]>Date: Mon May 23 15:39:14 2016 -0700

Added horse.txt

commit 4c925148Author: Jane Doe <[email protected]>Date: Mon May 22 14:54:55 2014 -0700

Added cat.txt and dog.txt

若只要顯示遞交 ID 和訊息,請執行 git log --pretty=oneline 命令:

git log --pretty=oneline

如果此命令成功執行,您會看到類似如下的輸出產生:

94ba1e60 Added horse.txt4c925148 Added cat.txt and dog.txt

如需更多選項,請參閱您的 Git 文件。

API 版本 2015-04-13183

Page 192: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南比較遞交

比較 AWS CodeCommit 中的遞交您可以使用 CodeCommit 主控台來檢視 CodeCommit 儲存庫中遞交指標之間的差異。您可以快速檢視遞交與其父系之間的差異。您也可以比較任兩個參考,包括遞交 ID。

主題• 將遞交與其父系比較 (p. 184)• 比較任兩個遞交指標 (p. 186)

將遞交與其父系比較您可以快速檢視遞交與其父系之間的差異,以檢閱遞交訊息、遞交者和變更內容。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 頁面上,選擇您要檢視遞交與其父系之間差異所在的儲存庫。3. 在導覽窗格中,選擇 Commits (遞交)。4. 選擇清單中任何縮寫的遞交 ID。檢視會變更為顯示其遞交的詳細資訊,包括它與其父遞交之間的差異。

您可以透過左右並排 (Split (分割) 檢視) 或內嵌 (Unified (統一) 檢視) 來顯示變更。您也可以隱藏或顯示空格的變更。您也可以新增評論。如需更多詳細資訊,請參閱 對遞交的評論 (p. 188)。

Note

用於檢視程式碼的偏好設定及其他主控台設定只要有變動,就會儲存為瀏覽器 Cookie。如需更多詳細資訊,請參閱 處理使用者偏好設定 (p. 216)。

API 版本 2015-04-13184

Page 193: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將遞交與其父系比較

API 版本 2015-04-13185

Page 194: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南比較任兩個遞交指標

Note

根據行結尾樣式,您的程式碼編輯器和其他因素,您可能看見新增或刪除整行,而不是行中的特定變更。詳細資訊層級符合 git show 或 git diff 命令中傳回的內容。

5. 若要將遞交與其父系比較,請從 Commit visualize (遞交視覺化工具) 索引標籤,選擇縮寫的遞交 ID。將顯示遞交詳細資訊,包括遞交與其父系之間的變更。

比較任兩個遞交指標您可以在 CodeCommit 主控台中檢視任兩個遞交指標之間的差異。遞交指標為參考,例如分支、標籤和遞交ID。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 頁面上,選擇您要比較遞交、分支或附加標籤之遞交所在的儲存庫。3. 在導覽窗格中,選擇 Commits (遞交),然後選擇 Compare commits (比較遞交)。

API 版本 2015-04-13186

Page 195: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南比較任兩個遞交指標

4. 使用方塊來比較兩個遞交指標。

• 若要比較分支的頂端,請從清單中選擇分支名稱。這會從用於比較的該分支選取最新的遞交。• 若要將遞交與關聯的特定標籤比較,請從清單選擇標籤名稱 (如果有)。這會選取用於比較的之加上標

籤的遞交。• 若要比較特定的遞交,請在方塊中輸入或貼上遞交 ID。若要取得完整的遞交 ID,請選擇導覽列中的

Commits (遞交),並從清單複製遞交 ID。在 Compare commits (比較遞交) 頁面上,於文字方塊中貼上完整的遞交 ID,然後選擇 Use commit ID (使用遞交 ID)。

5. 選取指標之後,選擇 Compare (比較)。

API 版本 2015-04-13187

Page 196: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南對遞交的評論

您可以透過左右並排 (Split (分割) 檢視) 或內嵌 (Unified (統一) 檢視) 來顯示差異。您也可以隱藏或顯示空格的變更。

6. 若要清除您的比較選項,請選擇 Cancel (取消)。

對 AWS CodeCommit 中遞交的評論您可以使用 CodeCommit 主控台來對儲存庫中的遞交進行評論,以及檢視和回覆其他使用者對遞交的評論。這可協助您討論對儲存庫中進行的變更,包括:

• 為什麼進行變更。• 是否需要更多變更。• 是否應將變更合併到另一個分支。

您可以對整體遞交、對遞交中的檔案或檔案內的特定行或變更進行評論。

Note

為了獲得最佳結果,以 IAM 使用者身分登入時請使用評論功能。未針對使用根帳戶登入資料、聯合存取或臨時登入資料登入的使用者最佳化評論功能。

主題• 檢視儲存庫中對遞交的評論 (p. 189)• 新增和回覆對儲存庫中遞交的評論 (p. 189)

API 版本 2015-04-13188

Page 197: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視儲存庫中對遞交的評論

• 檢視、新增、更新和回覆評論 (AWS CLI) (p. 193)

檢視儲存庫中對遞交的評論您可以使用 CodeCommit 主控台來檢視對遞交的評論。

檢視對遞交的評論

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要檢閱對遞交評論的儲存庫。3. 在導覽窗格中,選擇 Commits (遞交)。選擇您想要檢視任何評論的遞交之遞交 ID。

隨即會顯示該遞交的頁面,以及任何評論。

新增和回覆對儲存庫中遞交的評論您可以使用 CodeCommit 主控台來將評論新增至遞交與父系的比較,或是兩個指定遞交之間的比較。您也可以回覆評論。

新增和回覆對遞交的評論 (主控台)您也可以新增和回覆對遞交的評論。您的評論會標示為屬於您用來登入主控台的 IAM 使用者或角色。

新增和回覆對遞交的評論

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要對遞交評論所在的儲存庫。3. 在導覽窗格中,選擇 Commits (遞交)。選擇您想要新增或回覆評論所在的遞交之遞交 ID。

隨即會顯示該遞交的頁面,以及任何評論。4. 若要新增評論,請執行以下其中一項:

• 若要新增一般評論,請在 Comments on changes (對變更加上評論) 中,輸入評論,然後選擇 Save(儲存)。您可以使用 Markdown,或也可以純文字輸入評論。

• 若要對遞交中的檔案新增評論,請找到檔案的名稱。選擇 Comment on file (對檔案加上評論),輸入您的評論,然後選擇 Save (儲存)。

API 版本 2015-04-13189

Page 198: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南新增和回覆對儲存庫中遞交的評論

•若要對遞交中變更的一行新增評論,請前往變更出現的行。選擇評論氣泡 ,輸入您的評論,然後選擇 Save (儲存)。

Note

在儲存評論之後,您可以編輯評論,但無法從 CodeCommit 主控台刪除它。考慮為您的評論使用 Preview markdown (預覽 Markdown) 模式,之後再進行儲存。

5. 若要回覆對遞交的評論,請選擇 Reply (回覆)。

API 版本 2015-04-13190

Page 199: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南新增和回覆對儲存庫中遞交的評論

比較兩個遞交指標時新增和回覆評論您可以對分支、標籤或遞交之間的比較新增評論。

比較遞交指標時新增和回覆評論

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要比較遞交、分支或附加標籤之遞交所在的儲存庫。3. 在導覽窗格中,選擇 Commits (遞交),然後選擇 Compare commits (比較遞交) 索引標籤。

API 版本 2015-04-13191

Page 200: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南新增和回覆對儲存庫中遞交的評論

4. 使用 Destination (目的地) 和 Source (來源) 欄位來比較兩個遞交指標。使用下拉式清單或貼上遞交 ID。選擇 Compare (比較)。

5. 執行下列其中一項或多項:

•若要將新增評論到檔案或行,請選擇評論氣泡 。

API 版本 2015-04-13192

Page 201: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視、新增、更新和回覆評論 (AWS CLI)

• 若要對比較的變更新增一般評論,請移至 Comments on changes (對變更的評論)。

檢視、新增、更新和回覆評論 (AWS CLI)您可以透過執行下列命令來檢視、新增、回覆、更新和刪除評論的內容:

• 若要檢視兩個遞交間比較的評論,請執行 get-comments-for-compared-commit (p. 193)。• 若要檢視評論的詳細資訊,請執行 get-comment (p. 194)。• 若要刪除您建立的評論內容,請執行 delete-comment-content (p. 194)。• 若要對兩個遞交間的比較建立評論,請執行 post-comment-for-compared-commit (p. 195)。• 若要更新評論,請執行 update-comment (p. 195)。• 若要回覆評論,請執行 post-comment-reply (p. 196)。

檢視對遞交的評論1. 執行 get-comments-for-compared-commit 命令,並指定:

• CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。• 之後遞交的完整遞交 ID,以建立比較的方向性 (使用 --after-commit-id option)。• 之前遞交的完整遞交 ID,以建立比較的方向性 (使用 --before-commit-id 選項)。• (選用) 用來傳回下一個批次結果的列舉符記 (使用 --next-token 選項)。• (選用) 一個非負整數,用來限制傳回的結果 (使用 --max-results 選項)。

例如,若要檢視對儲存庫中名為 MyDemoRepo 的兩個遞交之間的比較進行之評論:

aws codecommit get-comments-for-compared-commit --repository-name MyDemoRepo --before-commit-ID 6e147360EXAMPLE --after-commit-id 317f8570EXAMPLE

2. 如果此命令成功執行,您會看到類似如下的輸出產生:

{ "commentsForComparedCommitData": [ { "afterBlobId": "1f330709EXAMPLE", "afterCommitId": "317f8570EXAMPLE", "beforeBlobId": "80906a4cEXAMPLE", "beforeCommitId": "6e147360EXAMPLE", "comments": [ { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "123Example", "commentId": "ff30b348EXAMPLEb9aa670f", "content": "Whoops - I meant to add this comment to the line, not the file, but I don't see how to delete it.", "creationDate": 1508369768.142, "deleted": false, "CommentId": "123abc-EXAMPLE", "lastModifiedDate": 1508369842.278 }, { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "123Example", "commentId": "553b509bEXAMPLE56198325", "content": "Can you add a test case for this?", "creationDate": 1508369612.240,

API 版本 2015-04-13193

Page 202: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視、新增、更新和回覆評論 (AWS CLI)

"deleted": false, "commentId": "456def-EXAMPLE", "lastModifiedDate": 1508369612.240 } ], "location": { "filePath": "cl_sample.js", "filePosition": 1232, "relativeFileVersion": "after" }, "repositoryName": "MyDemoRepo" } ], "nextToken": "exampleToken"}

檢視對遞交評論的詳細資訊1. 執行 get-comment 命令,指定系統產生的評論 ID。例如:

aws codecommit get-comment --comment-id ff30b348EXAMPLEb9aa670f

2. 如果此命令成功執行,您會看到類似如下的輸出傳回:

{ "comment": { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "123Example", "commentId": "ff30b348EXAMPLEb9aa670f", "content": "Whoops - I meant to add this comment to the line, but I don't see how to delete it.", "creationDate": 1508369768.142, "deleted": false, "commentId": "", "lastModifiedDate": 1508369842.278 }}

刪除對遞交評論的內容1. 執行 delete-comment-content 命令,指定系統產生的評論 ID。例如:

aws codecommit delete-comment-content --comment-id ff30b348EXAMPLEb9aa670f

Note

您只能刪除您所建立評論的內容。2. 如果此命令成功執行,您會看到類似如下的輸出產生:

{ "comment": { "creationDate": 1508369768.142, "deleted": true, "lastModifiedDate": 1508369842.278, "clientRequestToken": "123Example", "commentId": "ff30b348EXAMPLEb9aa670f", "authorArn": "arn:aws:iam::111111111111:user/Li_Juan"

API 版本 2015-04-13194

Page 203: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視、新增、更新和回覆評論 (AWS CLI)

}}

建立對遞交的評論1. 執行 post-comment-for-compared-commit 命令,並指定:

• CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。• 之後遞交的完整遞交 ID,以建立比較的方向性 (使用 --after-commit-id 選項)。• 之前遞交的完整遞交 ID,以建立比較的方向性 (使用 --before-commit-id 選項)。• 唯一的用戶端產生冪等符記 (使用 --client-request-token 選項)。• 評論的內容 (使用 --content 選項)。• 可放置評論位置的清單位置相關資訊,包括:

• 要比較的檔案名稱,包括其副檔名和子目錄 (如果有) (使用 filePath 屬性)。• 比較檔案內變更的行號 (使用 filePosition 屬性)。• 對變更的評論在來源與目的地分支之間的比較中為之前或之後 (使用 relativeFileVersion 屬性)。

例如,若要對存放庫中名為 MyDemoRepo 的兩個遞交之間的比較,對 cl_sample.js 檔案的變更新增評論 "Can you add a test case for this?" (紅紅紅紅紅紅紅紅紅紅紅紅紅紅)

aws codecommit post-comment-for-compared-commit --repository-name MyDemoRepo --before-commit-id 317f8570EXAMPLE --after-commit-id 5d036259EXAMPLE --client-request-token 123Example --content "Can you add a test case for this?" --location filePath=cl_sample.js,filePosition=1232,relativeFileVersion=AFTER

2. 如果此命令成功執行,您會看到類似如下的輸出產生:

{ "afterBlobId": "1f330709EXAMPLE", "afterCommitId": "317f8570EXAMPLE", "beforeBlobId": "80906a4cEXAMPLE", "beforeCommitId": "6e147360EXAMPLE", "comment": { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "", "commentId": "553b509bEXAMPLE56198325", "content": "Can you add a test case for this?", "creationDate": 1508369612.203, "deleted": false, "commentId": "abc123-EXAMPLE", "lastModifiedDate": 1508369612.203 }, "location": { "filePath": "cl_sample.js", "filePosition": 1232, "relativeFileVersion": "AFTER" }, "repositoryName": "MyDemoRepo" }

更新對遞交的評論1. 執行 update-comment 命令,指定系統產生的評論 ID 和您要用來取代任何現有內容的內容。

API 版本 2015-04-13195

Page 204: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視、新增、更新和回覆評論 (AWS CLI)

Note

您只能更新您所建立評論的內容。

例如,若要將內容 "Fixed as requested. (紅紅紅紅紅紅紅)I'll update the pullrequest." (紅紅紅紅紅紅紅紅紅) 新增至 ID 為 442b498bEXAMPLE5756813 的評論:

aws codecommit update-comment --comment-id 442b498bEXAMPLE5756813 --content "Fixed as requested. I'll update the pull request."

2. 如果此命令成功執行,您會看到類似如下的輸出產生:

{ "comment": { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "", "commentId": "442b498bEXAMPLE5756813", "content": "Fixed as requested. I'll update the pull request.", "creationDate": 1508369929.783, "deleted": false, "lastModifiedDate": 1508369929.287 } }

回覆對遞交的評論1. 若要對提取請求中的評論張貼回覆,請執行 post-comment-reply 命令,指定:

• 您要回覆的評論由系統產生的 ID (使用 --in-reply-to 選項)。• 唯一的用戶端產生冪等符記 (使用 --client-request-token 選項)。• 回覆的內容 (使用 --content 選項)。

例如,若要將 "Good catch. (紅紅紅紅)I'll remove them." (紅紅紅紅紅紅紅紅) 新增到系統產生的 ID為abcd1234EXAMPLEb5678efgh 的評論:

aws codecommit post-comment-reply --in-reply-to abcd1234EXAMPLEb5678efgh --content "Good catch. I'll remove them." --client-request-token 123Example

2. 如果此命令成功執行,您會看到類似如下的輸出產生:

{ "comment": { "authorArn": "arn:aws:iam::111111111111:user/Li_Juan", "clientRequestToken": "123Example", "commentId": "442b498bEXAMPLE5756813", "content": "Good catch. I'll remove them.", "creationDate": 1508369829.136, "deleted": false, "CommentId": "abcd1234EXAMPLEb5678efgh", "lastModifiedDate": 150836912.221 } }

API 版本 2015-04-13196

Page 205: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立 Git 標籤

在 AWS CodeCommit 中建立 Git 標籤您可以使用 Git 標籤來標記遞交,以協助其他儲存庫使用者了解其重要性。若要在 CodeCommit 儲存庫中建立 Git 標籤,您可以從連接到 CodeCommit 儲存庫的 本機儲存庫使用 Git。在 本機儲存庫 中建立 Git 標籤之後,您可以使用 git push --tags 來將它推送至 CodeCommit 儲存庫。

如需更多詳細資訊,請參閱 檢視標籤詳細資訊 (p. 197)。

使用 Git 來建立標籤請依照以下步驟,從 本機儲存庫使用 Git 在 CodeCommit 儲存庫中建立 Git 標籤。

在這些步驟中,我們假設您已將 本機儲存庫連線至 CodeCommit 儲存庫。如需指示,請參閱連接到儲存庫 (p. 77)。

1. 執行 git tag new-tag-name commit-id 命令,其中 new-tag-name 是新的 Git 標籤名稱,以及commit-id 是要與 Git 標籤關聯的遞交的 ID。

例如,以下命令會建立名為 beta 的 Git 標籤,並將它與遞交 ID dc082f9a...af873b88 建立關聯:

git tag beta dc082f9a...af873b88

2. 若要將新的 Git 標籤從 本機儲存庫 推送至 CodeCommit 儲存庫,請執行 git push remote-name new-tag-name 命令,其中 remote-name 是 CodeCommit 儲存庫 的名稱,以及 new-tag-name 是新的Git 標籤的名稱。

例如,若要將名為 beta 的新的 Git 標籤推送到名為 origin 的 CodeCommit 儲存庫:

git push origin beta

Note

若要將您的 本機儲存庫 的所有新的 Git 標籤推送至 CodeCommit 儲存庫,請執行 git push --tags。為了確保使用 CodeCommit 儲存庫 中的所有 Git 標籤更新您的 本機儲存庫,請執行 git fetch 後面接著 git fetch --tags。

如需更多選項,請參閱您的 Git 文件。

在 AWS CodeCommit 中檢視 Git 標籤詳細資訊在 Git 中,標籤是一個標記,可套用到參考 (例如遞交),以將它標示為對其他儲存庫使用者可能重要的資訊。例如,您可以使用標籤 beta 來標記屬於專案 Beta 版發行點的遞交。如需詳細資訊,請參閱使用 Git 來建立標籤 (p. 197)。Git 標籤與儲存庫標籤不同。如需有關如何使用儲存庫標籤的詳細資訊,請參閱 新增標籤至儲存庫 (p. 88)。

您可以使用 AWS CodeCommit 主控台來檢視儲存庫中 Git 標籤的詳細資訊,包括每個 Git 標籤參考之遞交日期和遞交訊息。從主控台,您可以使用儲存庫的預設分支標頭來比較標籤參考的遞交。如同任何其他遞交,您也可以檢視該 Git 標籤時間點的程式碼。

您也可以從終端機或命令列使用 Git 來檢視 本機儲存庫 中 Git 標籤的詳細資訊。

主題• 檢視標籤詳細資訊 (主控台) (p. 198)• 檢視 Git 標籤詳細資訊 (Git) (p. 198)

API 版本 2015-04-13197

Page 206: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視標籤詳細資訊 (主控台)

檢視標籤詳細資訊 (主控台)使用 AWS CodeCommit 主控台來快速檢視儲存庫 Git 標籤的清單,以及 Git 標籤參考之遞交的詳細資訊。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要檢視標籤所在的儲存庫名稱。3. 在導覽窗格中,選擇 Git tags (Git 標籤)。

4. 請執行下列其中一項:

• 若要檢視程式碼在遞交時的狀態,請選擇 Git 標籤名稱。• 若要檢視遞交的詳細資訊 (包括完整的遞交訊息、遞交者和作者),請選擇縮寫的遞交 ID。

檢視 Git 標籤詳細資訊 (Git)若要使用 Git 來檢視 本機儲存庫 中 Git 標籤的詳細資訊,請執行下列其中一個命令:

• git tag (p. 199) 可檢視 Git 標籤名稱的清單。• git show (p. 199) 可檢視特定 Git 標籤的詳細資訊。• git ls-remote (p. 199) 可檢視 CodeCommit 儲存庫中 Git 標籤的相關資訊。

Note

為了確保使用 CodeCommit 儲存庫 中的所有 Git 標籤更新您的 本機儲存庫,請執行 git fetch 後面接著 git fetch --tags。

API 版本 2015-04-13198

Page 207: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視 Git 標籤詳細資訊 (Git)

在下列步驟中,我們假設您已將 本機儲存庫連接至 CodeCommit 儲存庫。如需說明,請參閱 連接到儲存庫 (p. 77)。

檢視 本機儲存庫 中 Git 標籤清單1. 執行 git tag 命令:

git tag

2. 如果此命令成功執行,您會看到類似如下的輸出產生:

betarelease

Note

如果沒有定義任何標籤,git tag 不會傳回任何內容。

如需更多選項,請參閱您的 Git 文件。

檢視 本機儲存庫 中 Git 標籤的詳細資訊1. 執行 git show tag-name 命令。例如,若要檢視名為 beta Git 標籤的詳細資訊,請執行:

git show beta

2. 如果此命令成功執行,您會看到類似如下的輸出產生:

commit 317f8570...ad9e3c09Author: John Doe <[email protected]>Date: Tue Sep 23 13:49:51 2014 -0700

Added horse.txt

diff --git a/horse.txt b/horse.txtnew file mode 100644index 0000000..df42ff1--- /dev/null+++ b/horse.txt@@ -0,0 +1 @@+The horse (Equus ferus caballus) is one of two extant subspecies of Equus ferus\ No newline at end of file

Note

若要結束 Git 標籤資訊的輸出,請輸入 :q。

如需更多選項,請參閱您的 Git 文件。

檢視 CodeCommit 儲存庫 中 Git 標籤的相關資訊1. 執行 git ls-remote --tags 命令。

git ls-remote --tags

2. 如果成功,此命令的產生會輸出 CodeCommit 儲存庫 中 Git 標籤的清單:

API 版本 2015-04-13199

Page 208: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南刪除標籤

129ce87a...70fbffba refs/tags/beta785de9bd...59b402d8 refs/tags/release

如果沒有定義任何 Git 標籤,git ls-remote --tags 會傳回空白的行。

如需更多選項,請參閱您的 Git 文件。

在 AWS CodeCommit 中刪除 Git 標籤若要在 CodeCommit 儲存庫中刪除 Git 標籤,請從連接到 CodeCommit 儲存庫 的 本機儲存庫使用 Git。。

使用 Git 刪除 Git 標籤請依照以下步驟,使用 Git 從 本機儲存庫刪除 CodeCommit 儲存庫中的 Git 標籤。

這些步驟的撰寫是假設您已將 本機儲存庫 連線到 CodeCommit 儲存庫。如需指示,請參閱連接到儲存庫 (p. 77)。

1. 若要從 本機儲存庫 刪除 Git 標籤,請執行 git tag -d tag-name 命令,其中 tag-name 是您要刪除的Git 標籤名稱。

Tip

若要取得 Git 標籤名稱的清單,請執行 git tag。

例如,若要刪除 本機儲存庫 中名為 beta 的 Git 標籤:

git tag -d beta

2. 若要從 CodeCommit 儲存庫刪除 Git 標籤,請執行 git push remote-name --delete tag-name 命令,其中 remote-name 是本機儲存庫用於 CodeCommit 儲存庫的別名,tag-name 是您要從CodeCommit 儲存庫 刪除的 Git 標籤名稱。

Tip

若要取得 CodeCommit 儲存庫 名稱以及其 URL的清單,請執行 git remote -v 命令。

例如,若要在名為 origin 的 CodeCommit 儲存庫中刪除 beta Git 標籤:

git push origin --delete beta

API 版本 2015-04-13200

Page 209: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

在 AWS CodeCommit 儲存庫中使用分支

什麼是分支? 在 Git 中,分支只是遞交的指標或參考。在開發時,分支可讓您的組織工作更輕鬆。對於新的或不同版本的檔案,您可以使用分支來區隔工作,而不影響其他分支中的工作。您可以使用分支來開發新功能、存放來自特定遞交的特定專案版本等等。

在 CodeCommit 中,您可以變更儲存庫的預設分支。當使用者複製儲存庫時,此預設分支即本機儲存庫中的基本或預設分支。您也可以建立和刪除分支,以及檢視分支的詳細資訊。您可以快速比較某個分支和預設分支 (或任何兩個分支) 的差異。若要檢視儲存庫中分支和合併的歷史記錄,您可以使用 CommitVisualizer (p. 176)。

如需有關在 CodeCommit 中使用儲存庫其他部分的資訊,請參閱使用儲存庫 (p. 74)、使用檔案 (p. 130)、使用提取請求 (p. 138)、使用遞交 (p. 170),以及處理使用者偏好設定 (p. 216)。

主題• 在 AWS CodeCommit 中建立分支 (p. 202)• 在 AWS CodeCommit 中限制對分支的推送和合併 (p. 205)• 在 AWS CodeCommit 中檢視分支詳細資訊 (p. 207)• 在 AWS CodeCommit中比較和合併分支 (p. 210)• 在 AWS CodeCommit 中變更分支設定 (p. 213)• 在 AWS CodeCommit 中刪除分支 (p. 214)

API 版本 2015-04-13201

Page 210: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立分支

在 AWS CodeCommit 中建立分支您可以使用 CodeCommit 主控台或 AWS CLI 來為儲存庫建立分支。這是要區隔新的或不同版本的檔案,而不影響預設分支中工作的快速方式。在 CodeCommit 主控台中建立分支之後,您必須將該變更提取到 本機儲存庫。或者,您可以在本機建立分支,然後從連接到 CodeCommit 儲存庫的 本機儲存庫,使用 Git 來推送該變更。

主題• 建立分支 (主控台) (p. 202)• 建立分支 (Git) (p. 203)• 建立分支 (AWS CLI) (p. 204)

建立分支 (主控台)您可以使用 CodeCommit 主控台在 CodeCommit 儲存庫中建立分支。當使用者下一次從儲存庫提取變更之後,他們會看到新的分支。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要建立分支所在儲存庫的名稱。3. 在導覽窗格中,選擇 Branches (分支)。4. 選擇 Create branch (建立分支)。

API 版本 2015-04-13202

Page 211: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立分支 (Git)

在 Branch name (分支名稱) 中,輸入分支的名稱。在 Branch from (分支來源) 中,從清單中選擇分支或標籤,或貼上遞交 ID。選擇 Create branch (建立分支)。

建立分支 (Git)請依照以下步驟,使用 Git 從 本機儲存庫 在 本機儲存庫 中建立分支,然後將該分支推送到 CodeCommit 儲存庫。

這些步驟的撰寫是假設您已將 本機儲存庫 連線到 CodeCommit 儲存庫。如需指示,請參閱連接到儲存庫 (p. 77)。

1. 在 本機儲存庫 中建立分支,方法是執行 git checkout -b new-branch-name 命令,其中 new-branch-name 是新分支的名稱。

例如,下列命令會在 本機儲存庫 中建立名為 MyNewBranch 的分支:

git checkout -b MyNewBranch

API 版本 2015-04-13203

Page 212: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立分支 (AWS CLI)

2. 若要從 本機儲存庫 將新分支推送到 CodeCommit 儲存庫,請執行 git push 命令,同時指定 remote-name 和 new-branch-name。

例如,若要將 本機儲存庫 中名為 MyNewBranch 的新分支推送到別名為 origin 的 CodeCommit 儲存庫:

git push origin MyNewBranch

Note

如果您將 -u 選項新增至 git push (例如,git push -u origin master),那麼,在未來您可以執行 gitpush 而不帶 remote-name branch-name。上游追蹤資訊即已設定。若要取得上游追蹤資訊,請執行 git remote show remote-name (例如,git remote show origin)。若要查看所有本機和遠端追蹤分支的清單,請執行 git branch --all。若要在 CodeCommit 儲存庫中設定分支來連接到 本機儲存庫中的分支,請執行 git checkoutremote-branch-name。

如需更多選項,請參閱您的 Git 文件。

建立分支 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

請依照以下步驟,以使用 AWS CLI 在 CodeCommit 儲存庫中建立分支,然後將該分支推送到 CodeCommit儲存庫。

1. 執行 create-branch 命令,並指定:

• 建立分支所在 CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。Note

若要取得 CodeCommit 儲存庫 的名稱,請執行 list-repositories (p. 112) 命令。• 新分支的名稱 (使用 --branch-name 選項)。• 新分支指向的遞交 ID (使用 --commit-id 選項)。

例如,若要建立名為 MyNewBranch 的分支,其指向 CodeCommit 儲存庫中名為 MyDemoRepo 的遞交ID 317f8570EXAMPLE:

aws codecommit create-branch --repository-name MyDemoRepo --branch-name MyNewBranch --commit-id 317f8570EXAMPLE

只有在發生錯誤時,此命令才會產生輸出。2. 若要使用新遠端分支名稱更新您的 本機儲存庫 中可用 CodeCommit 儲存庫 分支的清單,請執行 git

remote update remote-name。

例如,若要使用別名 origin 更新 CodeCommit 儲存庫 可用分支的清單:

git remote update origin

Note

或者,您也可以執行 git fetch 命令。您也可以執行 git branch --all 來檢視所有遠端分支,但在您更新 本機儲存庫 的清單之前,您建立的遠端分支不會顯示在清單中。

API 版本 2015-04-13204

Page 213: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南限制對分支的推送和合併

如需更多選項,請參閱您的 Git 文件。3. 若要在連接到 CodeCommit 儲存庫 中新分支的 本機儲存庫 中設定分支,請執行 git checkout remote-

branch-name。

Note

若要取得 CodeCommit 儲存庫 名稱以及其 URL的清單,請執行 git remote -v 命令。

在 AWS CodeCommit 中限制對分支的推送和合併依預設,具有足夠許可能夠將程式碼推送至儲存庫的任何 CodeCommit 儲存庫使用者,可以對該儲存庫中的任何分支進行貢獻。無論您將分支新增到儲存庫的方式為何:使用主控台、命令列或 Git,都是如此。不過,您可能想要設定分支,使得只有部分儲存庫使用者可以將程式碼推送或合併至該分支。例如,您可能想要設定用於生產程式碼的一個分支,使得只有一組資深開發人員可以將變更推送或合併至該分支。其他開發人員仍可以從分支提取、製作自己的分支,以及建立提取請求,但無法將變更推送或合併至該分支。您可以透過為 IAM 中的一或多個分支建立使用內容金鑰的條件式政策來設定此存取。

Note

若要完成此主題中的一些程序,您必須使用具有足夠許可能夠設定和套用 IAM 政策的管理使用者的身分登入。如需詳細資訊,請參閱建立 IAM 管理員使用者和群組。

主題• 設定 IAM 政策以限制對分支的推送和合併 (p. 205)• 將 IAM 政策套用至 IAM 群組或角色 (p. 206)• 測試政策 (p. 207)

設定 IAM 政策以限制對分支的推送和合併您可以在 IAM 中建立一個政策,防止使用者更新分支,包括將遞交推送至分支與將提取請求合併至分支。若要這樣做,您的政策會使用條件式陳述式,使得只有在符合條件時,才會套用 Deny 陳述式的效果。您在Deny 陳述式中包含的 API 會決定不允許的動作。您可以設定僅將此政策套用到儲存庫中的一個分支,套用到儲存庫中的許多分支,或是到 AWS 帳戶的所有儲存庫中符合條件的所有分支。

為分支建立條件式政策

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

2. 在導覽窗格上選擇 Policies (政策)。3. 選擇 Create policy (建立政策)。4. 選擇 JSON,然後將下列範例政策貼上。將 Resource 的值取代為包含您要限制存取分支儲存庫的

ARN。將 codecommit:References 的值以您要限制存取之一或多個分支的參考取代。例如,此政策會拒絕推送遞交、合併分支、合併提取請求與新增檔案至名為 MyDemoRepo 的儲存庫中,名為 master的分支和名為 prod 的分支。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:GitPush",

API 版本 2015-04-13205

Page 214: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將 IAM 政策套用至 IAM 群組或角色

"codecommit:DeleteBranch", "codecommit:PutFile", "codecommit:MergeBranchesByFastForward", "codecommit:MergeBranchesBySquash", "codecommit:MergeBranchesByThreeWay", "codecommit:MergePullRequestByFastForward", "codecommit:MergePullRequestBySquash", "codecommit:MergePullRequestByThreeWay" ], "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/master", "refs/heads/prod" ] }, "Null": { "codecommit:References": false } } } ]}

Git 中的分支只是標頭遞交 SHA-1 值的指標 (參考),這是條件使用 References 的原因。在效果為Deny 且 GitPush 是其中一個動作的任何政策中,Null 陳述式為必要。因為從本機儲存庫將變更推送至 CodeCommit 時 Git 和 git-receive-pack 的運作方式,這為必要。

Tip

若要建立可套用至 AWS 帳戶之所有儲存庫中指定主機的所有分支,請將 Resource 的值從儲存庫 ARN 變更為星號 (*)。

5. 選擇 Review policy (檢閱政策)。更正政策陳述式中的任何錯誤,然後繼續 Create policy (建立政策)。6. 當 JSON 經過驗證,隨即會顯示 Create policy (建立政策) 頁面。Summary (摘要) 區段中會出現警告,

建議您此政策將不會授予許可。這是預期的行為。

• 在 Name (名稱) 中,輸入此政策的名稱,例如 DenyChangesToMaster。• 在 Description (描述) 中,輸入政策目的之描述。此為選用操作,但建議您採用。• 選擇 Create policy (建立政策)。

將 IAM 政策套用至 IAM 群組或角色您已建立政策,可限制對分支的推送和合併,但在您將政策套用至 IAM 使用者、群組或角色之前,政策不會有效果。做為最佳實務,請考慮將政策套用至 IAM 群組或角色。將政策套用至個別 IAM 使用者未正確擴展。

將條件式政策套用至群組或角色

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

2. 在導覽窗格中,如果您要將政策套用至 IAM 群組,請選擇 Groups (群組)。如果您要將政策套用至使用者擔任的角色,請選擇 Role (角色)。選擇群組或角色的名稱。

3. 在 [權限] 索引標籤上,選擇 [連接政策]。4. 選取您從策略清單建立的條件政策,然後選擇 Attach policy (附加政策)。

如需詳細資訊,請參閱附加和解除附加 IAM 政策。

API 版本 2015-04-13206

Page 215: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南測試政策

測試政策您應該測試您對群組或角色套用政策的效果,以確保它可如預期運作。您有很多種方法可以執行此操作。例如,若要測試類似以上所示的政策,您可以:

• 以套用了政策的 IAM 群組成員或擔任的角色已套用政策的 IAM 使用者身分登入 CodeCommit 主控台。在主控台中,於套用限制的分支上新增檔案。嘗試將檔案儲存或上傳到該分支時,您應該會看到錯誤訊息。將檔案新增到不同分支。操作應該會成功。

• 以套用了政策的 IAM 群組成員或擔任的角色已套用政策的 IAM 使用者身分登入 CodeCommit 主控台。建立提取請求,其將合併到限制適用所在的分支。您應該可以建立提取請求,但在嘗試合併它時發生錯誤。

• 從終端機或命令列,在適用限制的分支上建立遞交,然後將該遞交推送至 CodeCommit 儲存庫。您應該會看到錯誤訊息。從其他分支進行的遞交和推送應該可以照常運作。

在 AWS CodeCommit 中檢視分支詳細資訊您可以使用 CodeCommit 主控台來檢視 CodeCommit 儲存庫中分支的詳細資訊。您可以檢視上次對分支遞交的日期、遞交訊息等等。您也可以從連接到 CodeCommit 儲存庫的 本機儲存庫使用 AWS CLI 或 Git。

主題• 檢視分支詳細資訊 (主控台) (p. 207)• 檢視分支詳細資訊 (Git) (p. 208)• 檢視分支詳細資訊 (AWS CLI) (p. 209)

檢視分支詳細資訊 (主控台)使用 CodeCommit 主控台來快速檢視您的儲存庫分支的清單,以及分支的詳細資訊。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要檢視分支詳細資訊所在儲存庫的名稱。3. 在導覽窗格中,選擇 Branches (分支)。

API 版本 2015-04-13207

Page 216: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視分支詳細資訊 (Git)

4. 用作儲存庫預設值的分支名稱會顯示在 Default branch (預設分支) 旁。若要查看對分支的最新遞交的詳細資訊,請選擇該分支,然後選擇 View last commit (檢視上次的遞交)。若要檢視分支中的檔案和程式碼,請選擇分支名稱。

檢視分支詳細資訊 (Git)若要從 本機儲存庫使用 Git 來檢視 CodeCommit 儲存庫的本機和遠端追蹤分支的詳細資訊,請執行 gitbranch 命令。

以下步驟的撰寫是假設您已將 本機儲存庫 連線到 CodeCommit 儲存庫。如需指示,請參閱連接到儲存庫 (p. 77)。

1. 執行 git branch 命令,指定 --all 選項:

git branch --all

2. 如果此命令成功執行,您會看到類似如下的輸出傳回:

MyNewBranch* master remotes/origin/MyNewBranch remotes/origin/master

星號 (*) 會顯示在目前所開啟分支的名稱旁。後面的項目為遠端追蹤參考。

Tip

git branch 顯示本機分支。git branch -r 顯示遠端分支。

API 版本 2015-04-13208

Page 217: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南檢視分支詳細資訊 (AWS CLI)

git checkout existing-branch-name 會切換至指定的分支名稱,並且,如果之後立即執行git branch,顯示它時會加上星號 (*)。git remote update remote-name 會更新您的 本機儲存庫,加上可用 CodeCommit 儲存庫 分支的清單。(若要取得 CodeCommit 儲存庫 名稱的清單,以及其 URL,請執行 git remote -v 命令。)

如需更多選項,請參閱您的 Git 文件。

檢視分支詳細資訊 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

若要使用 AWS CLI 來檢視 CodeCommit 儲存庫中分支的詳細資訊,請執行下列一或多個命令:

• 若要檢視分支名稱的清單,請執行 list-branches (p. 209)。• 若要檢視特定分支的相關資訊,請執行 get-branch (p. 209)。

檢視分支名稱的清單1. 執行 list-branches 命令,指定 CodeCommit 儲存庫 的名稱 (使用 --repository-name 選項)。

Tip

若要取得 CodeCommit 儲存庫 的名稱,請執行 list-repositories (p. 112) 命令。

例如,若要檢視名為 MyDemoRepo 的 CodeCommit 儲存庫中分支的詳細資訊:

aws codecommit list-branches --repository-name MyDemoRepo

2. 如果成功,此命令會輸出 branchNameList 物件,每個分支一個項目。

以下是基於上述範例命令的一些範例輸出:

{ "branches": [ "MyNewBranch", "master" ]}

檢視特定分支的詳細資訊1. 執行 get-branch 命令,並指定:

• 儲存庫名稱 (使用 --repository-name 選項)。• 分支名稱 (使用 --branch-name 選項)。

例如,若要檢視名為 MyDemoRepo 的 CodeCommit 儲存庫中名為 MyNewBranch 的分支的相關資訊:

aws codecommit get-branch --repository-name MyDemoRepo --branch-name MyNewBranch

2. 如果成功,此命令會輸出分支的名稱和上次對分支進行遞交的 ID。API 版本 2015-04-13

209

Page 218: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南比較和合併分支

以下是基於上述範例命令的一些範例輸出:

{ "branch": { "branchName": "MyNewBranch", "commitID": "317f8570EXAMPLE" }}

在 AWS CodeCommit中比較和合併分支您可以使用 CodeCommit 主控台在 CodeCommit 儲存庫中比較分支。比較分支有助於快速檢視某個分支和預設分支的差異,或檢視任兩個分支間的差異。

主題• 將分支與預設分支比較 (p. 210)• 比較兩個特定分支 (p. 210)• 合併兩個分支 (AWS CLI) (p. 211)

將分支與預設分支比較使用 CodeCommit 主控台可快速檢視儲存庫的某個分支和預設分支的差異。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要比較分支所在儲存庫的名稱。3. 在導覽窗格中,選擇 Commits (遞交),然後選擇 Compare commits (比較遞交) 索引標籤。4. 在 Destination (目的地) 中,選擇預設分支的名稱。在 Source (來源) 中,選擇您想要與預設分支比較的

分支。選擇 Compare (比較)。

比較兩個特定分支使用 CodeCommit 主控台以檢視要比較之兩個分支之間的差異。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要比較分支所在儲存庫的名稱。3. 在導覽窗格中,選擇 Commits (遞交),然後選擇 Compare commits (比較遞交) 索引標籤。4. 在 Destination (目的地) 和 Source (來源) 中,選擇要比較的兩個分支,然後選擇 Compare (比較)。若要

檢視變更的檔案清單,請展開變更的檔案清單。您可以透過左右並排 (分割檢視) 或內嵌 (統一檢視) 來檢視檔案中的變更。

Note

如果是以 IAM 使用者的身分登入,您可以設定和儲存偏好設定,以用於檢視程式碼和其他主控台設定。如需更多詳細資訊,請參閱 處理使用者偏好設定 (p. 216)。

API 版本 2015-04-13210

Page 219: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南合併兩個分支 (AWS CLI)

合併兩個分支 (AWS CLI)您可以使用其中一個可用的合併策略,來使用 AWS CLI 合併 CodeCommit 儲存庫中的兩個分支,方法是執行下列其中一個命令:

• 若要使用向前快轉合併策略來合併兩個分支,請執行 merge-branches-by-fast-forward (p. 211) 命令。• 若要使用 squash 合併策略來合併兩個分支,請執行 merge-branches-by-squash (p. 212) 命令。• 若要使用三向合併策略來合併兩個分支,請執行 merge-branches-by-three-way (p. 212) 命令。

您也可以執行 create-unreferenced-merge-commit 命令來測試合併。如需詳細資訊,請參閱解決提取請求中的衝突 (p. 166)。

Note

要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

使用 AWS CLI 合併 CodeCommit 儲存庫中的兩個分支

1.若要使用向前快轉合併策略來合併兩個分支,請執行 merge-branches-by-fast-forward 命令,並指定:

• 包含您要合併之變更的來源分支名稱 (使用 --source-commit-specifier 選項)。• 您要合併變更的目的地分支名稱 (使用 --destination-commit-specifier 選項)。• 儲存庫的名稱 (使用 --repository-name 選項)。

API 版本 2015-04-13211

Page 220: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南合併兩個分支 (AWS CLI)

例如,若要將名為 bugfix-1234 的來源分支合併到名為 preprod 的目的地分支 (位於名為MyDemoRepo 的儲存庫中):

aws codecommit merge-branches-by-fast-forward --source-commit-specifier bugfix-bug1234 --destination-commit-specifier preprod --repository-name MyDemoRepo

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "commitId": "4f178133EXAMPLE", "treeId": "389765daEXAMPLE"}

2.若要使用 squash 合併策略來合併兩個分支,請執行 merge-branches-by-squash 命令,指定:

• 包含您要合併之變更的來源分支名稱 (使用 --source-commit-specifier 選項)。• 您要合併變更的目的地分支名稱 (使用 --destination-commit-specifier 選項)。• 儲存庫的名稱 (使用 --repository-name 選項)。• 要包含的遞交訊息 (使用 --commit-message 選項)。• 用於遞交的名稱 (使用 --name 選項)。• 用於遞交的電子郵件地址 (使用 --email 選項)。

例如,若要將名為 bugfix-1234 的來源分支合併到名為 bugfix-quarterly 的目的地分支 (位於名為 MyDemoRepo 的儲存庫中):

aws codecommit merge-branches-by-squash --source-commit-specifier bugfix-bug1234 --destination-commit-specifier bugfix-quarterly --author-name "Maria Garcia" --email "[email protected]" --commit-message "Merging in fix branches to prepare for a general patch." --repository-name MyDemoRepo

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "commitId": "4f178133EXAMPLE", "treeId": "389765daEXAMPLE"}

3.若要使用三向合併策略來合併兩個分支,請執行 merge-branches-by-three-way 命令,並指定:

• 包含您要合併之變更的來源分支名稱 (使用 --source-commit-specifier 選項)。• 您要合併變更的目的地分支名稱 (使用 --destination-commit-specifier 選項)。• 儲存庫的名稱 (使用 --repository-name 選項)。• 要包含的遞交訊息 (使用 --commit-message 選項)。• 用於遞交的名稱 (使用 --name 選項)。• 用於遞交的電子郵件地址 (使用 --email 選項)。

例如,若要將名為 master 的來源分支合併到名為 bugfix-1234 的目的地分支 (位於名為MyDemoRepo 的儲存庫中):

API 版本 2015-04-13212

Page 221: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南變更分支設定

aws codecommit merge-branches-by-three-way --source-commit-specifier master --destination-commit-specifier bugfix-bug1234 --author-name "Jorge Souza" --email "[email protected]" --commit-message "Merging changes from master to bugfix branch before additional testing." --repository-name MyDemoRepo

如果此命令成功執行,您會看到類似如下的輸出產生:

{ "commitId": "4f178133EXAMPLE", "treeId": "389765daEXAMPLE"}

在 AWS CodeCommit 中變更分支設定-您可以變更要在 AWS CodeCommit 主控台中使用的預設分支。您可以使用 AWS CLI 來變更儲存庫的預設分支。若要變更其他分支設定,您可以透過與 CodeCommit 儲存庫 連接的 本機儲存庫 使用 Git。

主題• 變更預設分支 (主控台) (p. 213)• 變更預設分支 (AWS CLI) (p. 213)

變更預設分支 (主控台)您可以指定哪些分支是在 CodeCommit 主控台 AWS CodeCommit 儲存庫中的預設分支。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要變更設定所在的儲存庫名稱。3. 在導覽窗格中選擇 Settings (稅金設定)。4. 在 Default branch (預設分支) 中選擇分支下拉式清單,然後選擇不同的分支。選擇 Save (儲存)。

變更預設分支 (AWS CLI)要搭配 CodeCommit 使用 AWS CLI,請安裝 AWS CLI。如需詳細資訊,請參閱「命令列參考 (p. 308)」。

若要使用 AWS CLI 在 CodeCommit 儲存庫中變更儲存庫的分支設定,請執行下列命令:

• update-default-branch (p. 213)以變更預設的分支。

變更預設的分支1. 執行 update-default-branch 命令,並指定:

• 將更新預設分支所在 CodeCommit 儲存庫的名稱 (使用 --repository-name 選項)。

Tip

若要取得 CodeCommit 儲存庫 的名稱,請執行 list-repositories (p. 112) 命令。• 新預設分支的名稱 (使用 --default-branch-name 選項)。

API 版本 2015-04-13213

Page 222: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南刪除分支

Tip

若要取得分支的名稱,請執行 list-branches (p. 209) 命令。2. 例如,若要在名為 MyDemoRepo 的 CodeCommit 儲存庫中將預設分支變更為 MyNewBranch:

aws codecommit update-default-branch --repository-name MyDemoRepo --default-branch-name MyNewBranch

只有在發生錯誤時,此命令才會產生輸出。

如需更多選項,請參閱您的 Git 文件。

在 AWS CodeCommit 中刪除分支您可以使用 CodeCommit 主控台來刪除儲存庫中的分支。在 CodeCommit 中刪除分支不會刪除 本機儲存庫中的該分支,因此使用者可以繼續使用該分支的副本,直到下次提取變更為止。若要在本機刪除分支並將該變更推送至 CodeCommit 儲存庫,請從連接到 CodeCommit 儲存庫 的 本機儲存庫 使用 Git。

刪除分支不會刪除任何遞交,但會刪除對該分支中遞交的所有參考。如果您刪除分支 (其中包含尚未合併到儲存庫中另一個分支的遞交),除非您有其完整的遞交 ID,否則無法擷取這些遞交。

Note

您不能使用這個主題中的指示來刪除儲存庫的預設分支。如果您要刪除預設分支,必須建立分支,讓新分支成為預設分支,然後刪除舊分支。如需詳細資訊,請參閱建立分支 (p. 202)及變更分支設定 (p. 213)。

主題• 刪除分支 (主控台) (p. 214)• 刪除分支 (AWS CLI) (p. 214)• 刪除分支 (Git) (p. 215)

刪除分支 (主控台)您可以使用 CodeCommit 主控台來刪除 CodeCommit 儲存庫中的分支。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,選擇您要刪除分支所在的儲存庫名稱。3. 在導覽窗格中,選擇 Branches (分支)。4. 尋找您要刪除的分支名稱,然後選擇 Delete branch (刪除分支) 並確認您的選擇。

刪除分支 (AWS CLI)您可以使用 AWS CLI 來刪除 CodeCommit 儲存庫中的分支 (如果該分支不是儲存庫中的預設分支)。如需安裝和使用 AWS CLI 的詳細資訊,請參閱命令列參考 (p. 308)。

1. 在終端機或命令列,執行 delete-branch 命令,指定:

• 將刪除分支所在 CodeCommit 儲存庫的名稱 (使用 --repository-name 選項)。

API 版本 2015-04-13214

Page 223: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南刪除分支 (Git)

Tip

若要取得 CodeCommit 儲存庫 的名稱,請執行 list-repositories (p. 112) 命令。• 要刪除的分支的名稱 (使用 branch-name 選項)。

Tip

若要取得分支的名稱,請執行 list-branches (p. 209) 命令。2. 例如,若要刪除名為 MyDemoRepo 的 CodeCommit 儲存庫 中名為 MyNewBranch 的分支:

aws codecommit delete-branch --repository-name MyDemoRepo --branch-name MyNewBranch

此命令會傳回有關已刪除分支的詳細資訊,包括已刪除的分支名稱和屬於分支標頭之遞交的完整遞交ID。例如:

"deletedBranch": { "branchName": "MyNewBranch", "commitId": "317f8570EXAMPLE"}

刪除分支 (Git)請依照以下步驟,使用 Git 從 本機儲存庫刪除 CodeCommit 儲存庫中的分支。

這些步驟的撰寫是假設您已將 本機儲存庫 連線到 CodeCommit 儲存庫。如需指示,請參閱連接到儲存庫 (p. 77)。

1. 若要從 本機儲存庫 刪除分支,請執行 git branch -D branch-name 命令,其中 branch-name 是您要刪除的分支名稱。

Tip

若要取得分支名稱的清單,請執行 git branch --all。

例如,若要刪除 本機儲存庫 中名為 MyNewBranch 的分支:

git branch -D MyNewBranch

2. 若要從 CodeCommit 儲存庫 刪除分支,請執行 git push remote-name --delete branch-name 命令,其中 remote-name 是 本機儲存庫 用於 CodeCommit 儲存庫 的別名,以及 tag-name 是您要從CodeCommit 儲存庫 刪除的分支名稱。

Tip

若要取得 CodeCommit 儲存庫 名稱以及其 URL的清單,請執行 git remote -v 命令。

例如,若要刪除名為 origin 的 CodeCommit 儲存庫 中名為 MyNewBranch 的分支:

git push origin --delete MyNewBranch

Tip

如果分支是預設分支,則此命令不會刪除該分支。

如需更多選項,請參閱您的 Git 文件。

API 版本 2015-04-13215

Page 224: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

處理使用者偏好設定您可以使用 AWS CodeCommit 主控台來設定部分預設設定。例如,您可以將檢視程式碼變更的偏好設定,變更為內嵌或以分割檢視。當您變更其中一項設定時,AWS CodeCommit 主控台會在瀏覽器中設定 Cookie,並在您每次使用主控台時自動存放和套用您的選擇。只要您使用該瀏覽器來存取 AWSCodeCommit 主控台,這些偏好設定就會套用到所有區域中的所有儲存庫。這些偏好設定不專屬於特定儲存庫或特定區域。這些偏好設定完全不影響您與 AWS CLI、AWS CodeCommit API 或其他與 AWSCodeCommit 互動的服務進行互動。

Note

使用者偏好設定 Cookie 專屬於特定瀏覽器。如果您從瀏覽器清除 Cookie,則會清除偏好設定。同樣地,如果您使用不同的瀏覽器來存取儲存庫,該瀏覽器將無法存取其他瀏覽器的 Cookie。不會保留您的偏好設定。

使用者偏好設定包括:

• 當檢視程式碼的變更時,是否使用 Unified (統一) 或 Split (分割) 檢視,以及是否顯示或隱藏空格變更。• 當檢視、編輯或編寫程式碼時,在程式碼編輯器視窗中是否使用淺色背景或深色背景。

偏好設定並沒有設定頁面。反之,每當您在主控台變更偏好設定時,例如,如何檢視程式碼變更,該變更就會儲存並適時套用。

API 版本 2015-04-13216

Page 225: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將 Git 儲存庫遷移至 AWS CodeCommit

遷移至 AWS CodeCommit有一些方法可以將 Git 儲存庫遷移到 CodeCommit 儲存庫:複製、鏡射、遷移所有或僅某些分支等等。您也可以將電腦上的本機、無版本控制的內容遷移到 CodeCommit。

下列主題示範一些可用來遷移儲存庫的方式。您的步驟可能會有所不同,這取決於儲存庫的類型、樣式或複雜度,以及您對於要遷移的儲存庫和遷移方式所做的決策。對於非常大型的儲存庫,您可以考慮漸進遷移 (p. 231)。

Note

您可以從其他版本控制系統 (例如 Perforce、Subversion 或 TFS) 遷移到 CodeCommit,但必須先遷移到 Git。如需更多選項,請參閱您的 Git 文件。或者,您可以檢閱 Pro Git 一書 (作者為 Scott Chacon 和 Ben Straub) 中有關遷移至 Git 的資訊。

主題• 將 Git 儲存庫遷移至 AWS CodeCommit (p. 217)• 將本機或無版本控制的內容遷移到 AWS CodeCommit (p. 224)• 漸進遷移儲存庫 (p. 231)

將 Git 儲存庫遷移至 AWS CodeCommit您可以將現有的 Git 儲存庫遷移到 CodeCommit 儲存庫。此主題中的程序將說明如何將於另一個 Git 儲存庫託管的專案遷移到 CodeCommit。隨著此程序,您會完成:

• 完成 CodeCommit 所需的初始設定。• 建立 CodeCommit 儲存庫。• 複製儲存庫並推送到 CodeCommit。• 檢視 CodeCommit 儲存庫中的檔案。• 與團隊共用 CodeCommit 儲存庫。

主題• 步驟 0:存取 CodeCommit 所需的設定 (p. 218)

API 版本 2015-04-13217

Page 226: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 0:存取 CodeCommit 所需的設定

• 步驟 1:建立 CodeCommit 儲存庫 (p. 220)• 步驟 2:複製儲存庫並推送至 CodeCommit 儲存庫 (p. 222)• 步驟 3:在 CodeCommit 中檢視檔案 (p. 222)• 步驟 4:共享 CodeCommit 儲存庫 (p. 223)

步驟 0:存取 CodeCommit 所需的設定您必須先為 CodeCommit 建立和設定 IAM 使用者,並設定本機電腦的存取,才能將儲存庫遷移到CodeCommit。您也應該安裝 AWS CLI 來管理 CodeCommit。雖然不需要 AWS CLI 就可以執行大多數CodeCommit 任務,但它讓您在命令列或終端機中使用 Git 時很有彈性。

如果您已經設定 CodeCommit,則可以直接跳到步驟 1:建立 CodeCommit 儲存庫 (p. 220)。

建立和設定 IAM 使用者以存取 CodeCommit

1. 移至 http://aws.amazon.com 並選擇 Sign Up (註冊),以建立 AWS 帳戶。2. 在您的 AWS 帳戶中,建立 IAM 使用者或使用現有的使用者。請確定您具有與該 IAM 使用者相關聯的存

取金鑰 ID 和私密存取金鑰。如需詳細資訊,請參閱在 AWS 帳戶中建立 IAM 使用者。

Note

CodeCommit 需要 AWS Key Management Service。如果您使用現有的 IAM 使用者,請確定連接到使用者的政策沒有明確拒絕 CodeCommit 所需的 AWS KMS 動作。如需更多詳細資訊,請參閱 AWS KMS 和加密 (p. 302)。

3. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

4. 在 IAM 主控台的導覽窗格中,選擇 Users (使用者),然後選擇您要設定用於存取 CodeCommit 的 IAM使用者。

5. 在 Permissions (許可) 標籤上,選擇 Add Permissions (新增許可)。6. 在 Grant permissions (授予許可) 中,選擇 Attach existing policies directly (直接連接現有政策)。7. 從政策清單中,選取 AWSCodeCommitFullAccess,或另一個用於存取 CodeCommit 的受管政策。如需

詳細資訊,請參閱 CodeCommit 的 AWS 受管 (預先定義) 政策 (p. 262)。

選取您要連接的政策之後,選擇 Next: Review (下一步:檢閱),以檢閱將連接到 IAM 使用者的政策清單。如果清單正確,請選擇 Add permissions (新增許可)。

如需有關 CodeCommit 受管政策及分享儲存庫存取權給其他群組和使用者的詳細資訊,請參閱共用儲存庫 (p. 79)和 AWS CodeCommit 的身份驗證與存取控制 (p. 254)。

安裝及設定 AWS CLI

1. 在本機電腦上,下載並安裝 AWS CLI。這是從命令列與 CodeCommit 互動的必要步驟。如需詳細資訊,請參閱開始設定 AWS 命令列界面。

Note

CodeCommit 只能與 AWS CLI 版本 1.7.38 版和更新版本 一起使用。若要判斷您已安裝的AWS CLI 版本,請執行 aws --version 命令。若要將舊版的 AWS CLI 更新為最新版本,請參閱安裝 AWS Command Line Interface。

2. 執行此命令來驗證已安裝 AWS CLI 的 CodeCommit 命令:

aws codecommit help

此命令會傳回 CodeCommit 命令清單。

API 版本 2015-04-13218

Page 227: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 0:存取 CodeCommit 所需的設定

3. 使用 configure 命令來設定 AWS CLI,如下所示:

aws configure

出現提示時,請針對要用於 CodeCommit 的 IAM 使用者,指定其 AWS 存取金鑰和 AWS 私密存取金鑰。此外,請務必指定儲存庫所在的 AWS 區域,例如 us-east-2。系統提示您輸入預設輸出格式時,請指定 json。例如:

AWS Access Key ID [None]: Type your target AWS access key ID here, and then press EnterAWS Secret Access Key [None]: Type your target AWS secret access key here, and then press EnterDefault region name [None]: Type a supported region for CodeCommit here, and then press EnterDefault output format [None]: Type json here, and then press Enter

若要連接到另一個 AWS 區域中的儲存庫或資源,您必須以預設區域名稱來重新設定 AWSCLI。CodeCommit 支援的預設區域名稱包括:

• us-east-2• us-east-1• eu-west-1• us-west-2• ap-northeast-1• ap-southeast-1• ap-southeast-2• eu-central-1• ap-northeast-2• sa-east-1• us-west-1• eu-west-2• ap-south-1• ca-central-1• us-gov-west-1• us-gov-east-1• eu-north-1• me-south-1

如需 CodeCommit 和 AWS 區域的詳細資訊,請參閱區域和 Git 連線端點 (p. 289)。如需 IAM、存取金鑰和私密金鑰的詳細資訊,請參閱如何取得登入資料?和管理 IAM 使用者的存取金鑰。

接著,您必須安裝 Git。

• 如果是 Linux, macOS, or Unix:

要使用 CodeCommit 儲存庫中的檔案、認可和其他資訊,您必須在本機電腦上安裝 Git。CodeCommit 支援 Git 1.7.9 版和更新版本。

要安裝 Git,建議可使用 Git Downloads 等網站。

API 版本 2015-04-13219

Page 228: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 1:建立 CodeCommit 儲存庫

Note

Git 是一種持續演進且定期更新的平台。有時,一項功能的改變,可能會影響此功能與CodeCommit 運作的方式。如果您在特定版本的 Git 和 CodeCommit 遇到問題,請查看 故障診斷 (p. 239) 的資訊。

• 用於 Windows:

要使用 CodeCommit 儲存庫中的檔案、認可和其他資訊,您必須在本機電腦上安裝 Git。CodeCommit 支援 Git 1.7.9 版和更新版本。

要安裝 Git,建議可使用 Git for Windows 等網站。如果使用此連結安裝 Git,您可以接受所有的安裝預設設定,除了以下項目之外:• 在 Adjusting your PATH environment (調整您的 PATH 環境) 步驟收到提示時,選擇從命令列使用 Git 選

項。• (選用) 如果您預計藉由 AWS CLI 包含的登入資料協助程式使用 HTTPS,而非設定用於 CodeCommit

的 Git 登入資料,請確認在 Configuring extra options (設定額外選項) 頁面上的 Enable Git CredentialManager (啟用 Git 登入資料管理員) 選項已清除。如果 IAM 使用者設定 Git 登入資料,則 Git CredentialManager 只與 CodeCommit 相容。如需更多詳細資訊,請參閱 適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7) 及 適用於 Windows 的 Git:我已安裝適用於 Windows 的 Git,但現在拒絕我存取儲存庫(403) (p. 247)。

Note

Git 是一種持續演進且定期更新的平台。有時,一項功能的改變,可能會影響此功能與CodeCommit 運作的方式。如果您遇到特定版本的 Git 和 CodeCommit 方面的問題,請檢閱 故障診斷 (p. 239) 中的資訊。

CodeCommit 支援 HTTPS 和 SSH 身份驗證。若要完成設定,您必須設定 CodeCommit 的 Git 登入資料 (對大多數使用者,建議使用 HTTPS)、存取 CodeCommit 時要使用的 SSH 金鑰對 (SSH),或 AWS CLI 中包含的登入資料協助程式 (HTTPS)。

• 關於所有支援作業系統上的 Git 登入資料,請參閱步驟 3:為 CodeCommit 的 HTTPS 連線建立 Git 登入資料 (p. 8)。

• 關於 Linux, macOS, or Unix 上的 SSH,請參閱 SSH 和 Linux, macOS, or Unix:設定 Git 和CodeCommit 的公有和私有金鑰 (p. 26)。

• 關於 Windows 上的 SSH,請參閱 SSH 和 Windows:設定 Git 和 CodeCommit 的公有和私有金鑰 (p. 30)。

• 關於 Linux, macOS, or Unix 上的登入資料協助程式,請參閱設定登入資料協助程式 (Linux, macOS, orUnix) (p. 35)。

• 關於 Windows 上的登入資料協助程式,請參閱設定登入資料協助程式 (Windows) (p. 40)。

步驟 1:建立 CodeCommit 儲存庫在本節中,您會使用 CodeCommit 主控台來建立 CodeCommit 儲存庫,以用於本教學的剩餘部分。若要使用 AWS CLI 來建立儲存庫,請參閱建立儲存庫 (AWS CLI) (p. 76)。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇您要在其中建立儲存庫的 AWS 區域。如需詳細資訊,請參閱區域和 Git 連線端

點 (p. 289)。3. 請在 Repositories (儲存庫) 頁面上,選擇 Create repository (建立儲存庫)。4. 在 Create repository (建立儲存庫) 頁面的 Repository name (儲存庫名稱) 中,輸入儲存庫的名稱。

API 版本 2015-04-13220

Page 229: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 1:建立 CodeCommit 儲存庫

Note

儲存庫名稱需區分大小寫。在您的 AWS 帳戶的 AWS 區域中,名稱必須是唯一的。5. (選用) 在 Description (描述) 中,輸入儲存庫的描述。這可協助您和其他使用者識別儲存庫的用途。

Note

描述欄位會在主控台中顯示 Markdown,並接受所有的 HTML 字元和所有有效 Unicode 字元。如果您是使用 GetRepository 或 BatchGetRepositories API 的應用程式開發人員,並且計劃要在網頁瀏覽器中顯示儲存庫描述欄位,請參閱 CodeCommit API 參考。

6. (選用) 選擇 Add tag (新增標籤),以新增一或多個儲存庫標籤 (自訂屬性標籤,可協助您整理和管理您的AWS 資源) 到您的儲存庫。如需詳細資訊,請參閱 在 AWS CodeCommit 中標記儲存庫 (p. 88)。

7. 選擇 Create (建立)。

建立儲存庫之後,該儲存庫會出現在 Repositories (儲存庫) 清單中。在 URL 欄中,選擇複製圖示,然後選擇要用來連接到 CodeCommit 的通訊協定 (SSH 或 HTTPS)。複製 URL。

例如,如果您將儲存庫命名為 MyClonedRepository,並在 US West (Oregon) 區域中使用 Git 登入資料搭配 HTTPS,則 URL 如下所示:

API 版本 2015-04-13221

Page 230: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 2:複製儲存庫並推送至 CodeCommit 儲存庫

https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository

稍後在步驟 2:複製儲存庫並推送至 CodeCommit 儲存庫 (p. 222)中,您需要用到此 URL。

步驟 2:複製儲存庫並推送至 CodeCommit 儲存庫在本節中,您會將 Git 儲存庫複製到本機電腦,建立所謂的本機儲存庫。然後您會將本機儲存庫的內容推送至先前建立的 CodeCommit 儲存庫。

1. 從本機電腦上的終端機或命令提示字元中,執行 git clone 命令並指定 --mirror 選項,將遠端儲存庫的裸機副本複製到名為 aws-codecommit-demo 的新資料夾中。這是一個僅用於遷移的裸機儲存庫。它不是用於與 CodeCommit 中遷移的儲存庫互動的本機儲存庫。您可以在遷移到 CodeCommit 完成之後再建立該儲存庫。

以下範例會將託管於 GitHub 的示範應用程式 (https://github.com/awslabs/aws-demo-php-simple-app.git),複製到本機儲存庫中名為 aws-codecommit-demo 的目錄。

git clone --mirror https://github.com/awslabs/aws-demo-php-simple-app.git aws-codecommit-demo

2. 將目錄變更為您進行複製的目錄。

cd aws-codecommit-demo

3. 執行 git push 命令,並指定 CodeCommit 儲存庫的 URL 和名稱及 --all 選項。(這是您在步驟 1:建立CodeCommit 儲存庫 (p. 220)中複製的 URL)。

例如,如果您將儲存庫命名為 MyClonedRepository,並設定為使用 HTTPS,則應該執行下列命令:

git push https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository --all

Note

--all 選項只會推送儲存庫的所有分支。不會推送其他參考,例如標籤。如果您想要推送標籤,請等候到初始推送完成,然後再推送一次,但這次使用 --tags 選項:

git push ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository --tags

如需詳細資訊,請參閱 Git 網站上的 Git 推送。如需有關推送大型儲存庫的資訊,尤其是一次推送所有參考 (例如,使用 --mirror 選項),請參閱以增進的方式遷移儲存庫 (p. 231)。

將儲存庫遷移到 CodeCommit 之後,您可以刪除 aws-codecommit-demo 資料夾及其內容。若要以所有正確的參考來建立本機儲存庫,以便於 CodeCommit 中使用儲存庫,請執行 git clone 命令,但不要指定--mirror 選項:

git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository

步驟 3:在 CodeCommit 中檢視檔案推送目錄的內容之後,您可以使用 CodeCommit 主控台快速檢視該儲存庫中的所有檔案。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。

API 版本 2015-04-13222

Page 231: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:共享 CodeCommit 儲存庫

2. 在 Repositories (儲存庫) 中,選擇儲存庫的名稱 (例如,MyClonedRepository)。3. 檢視儲存庫中的檔案,以查看分支、複製 URL、設定等等。

步驟 4:共享 CodeCommit 儲存庫當您在 CodeCommit 中建立儲存庫時會產生兩個端點:一個用於 HTTPS 連線,另一個用於 SSH 連線。兩者都提供網路上的安全連線。您的使用者可以使用任一通訊協定。無論您建議使用者採用哪個通訊協定,這兩個端點都保持在作用中。您必須建立 IAM 政策來允許其他使用者存取儲存庫,才能與其他人共用儲存庫。提供這些存取指示給您的使用者。

為您的儲存庫建立客戶受管政策

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

2. 在 Dashboard (儀表板) 導覽區域中,選擇 Policies (政策),然後選擇 Create Policy (建立政策)。3. 在 Create Policy (建立政策) 頁面的 Copy an AWS Managed Policy (複製 受管政策) 旁,選擇 Select (選

取)。4. 在 Copy an AWS Managed Policy (複製 AWS 受管政策) 頁面中的 Search Policies (搜尋政策) 中,輸入

AWSCodeCommitPowerUser。選擇政策名稱旁的 Select (選取)。5. 在 Review Policy (檢閱政策) 頁面的 Policy Name (政策名稱) 中,輸入政策的新名稱 (例如

AWSCodeCommitPowerUser-MyDemoRepo)。

在 Policy Document (政策文件) 中,將 Resource 行的 "*" 部分取代為 CodeCommit 儲存庫的 AmazonResource Name (ARN),如下所示:

"Resource": [ "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo" ]

Tip

若要尋找 CodeCommit 儲存庫的 ARN,請移至 CodeCommit 主控台,然後從清單中選擇儲存庫名稱。如需詳細資訊,請參閱檢視儲存庫詳細資訊 (p. 110)。

如果您希望此政策套用到多個儲存庫,請指定儲存庫的 ARN,將每個儲存庫新增為資源。在每個資源陳述式之間包含逗號,如下所示:

API 版本 2015-04-13223

Page 232: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南將內容遷移到 CodeCommit

"Resource": [ "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "arn:aws:codecommit:us-east-2:111111111111:MyOtherDemoRepo" ]

6. 選擇 Validate Policy (驗證政策)。在政策經過驗證後,選擇 Create Policy (建立政策)。

若要管理對您的儲存庫的存取,請為其使用者建立 IAM 群組,新增 IAM 使用者至該使用者群組,然後將您在上一個步驟中建立的客戶受管政策附加至該群組。附加存取所需的任何其他政策,例如 IAMUserSSHKeys或 IAMSelfManageServiceSpecificCredentials。

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

2. 在 Dashboard (儀表板) 導覽區域中,選擇 Groups (群組),然後選擇 Create New Group (建立新的群組)。

3. 在 Set Group Name (設定群組名稱) 頁面的 Group Name (群組名稱) 中,輸入群組的名稱 (例如,MyDemoRepoGroup),然後選擇 Next Step (下一步)。請考慮將儲存庫名稱包含於群組名稱中。

Note

此名稱在 AWS 帳戶中必須是唯一的。4. 選取您在上一節建立的客戶受管政策旁的方塊 (例如,AWSCodeCommitPowerUser-MyDemoRepo)。5. 在 Review (檢閱) 頁面上,選擇 Create Group (建立群組)。IAM 會建立此群組並將指定的政策連接。此

群組將會出現在與您的 AWS 帳戶相關聯的群組清單中。6. 從清單中選擇您的群組。7. 在群組摘要頁面上,選擇 Users (使用者) 標籤,然後選擇 Add Users to Group (新增使用者到群組)。在

清單中 (顯示與您的 AWS 帳戶相關聯的所有使用者),選取您要允許存取 CodeCommit 儲存庫的使用者旁的方塊,然後選擇 Add Users (新增使用者)。

Tip

您可以使用 [Search (搜尋)] 方塊,依名稱快速尋找使用者。8. 新增使用者之後,關閉 IAM 主控台。

使用您設定的政策群組和政策來建立存取 CodeCommit 所用的 IAM 使用者之後,請將連接到儲存庫所需的連線資訊傳送給該使用者。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇已建立儲存庫的 AWS 區域。儲存庫為 AWS 區域特有的。如需詳細資訊,請參

閱區域和 Git 連線端點 (p. 289)。3. 在 Repositories (儲存庫) 頁面上,尋找您要分享的儲存庫名稱。4. 在 Clone URL (複製 URL) 中,選擇使用者所要使用的通訊協定 (HTTPS 或 SSH)。這樣會複製該連線通

訊協定的複製 URL。5. 將複製 URL 連同其他任何指示傳送給使用者,例如安裝 AWS CLI、設定描述檔或安裝 Git。請務必包含

連線通訊協定的組態資訊 (例如,對於 HTTPS,設定 Git 的登入資料協助程式)。

將本機或無版本控制的內容遷移到 AWSCodeCommit

此主題中的程序說明如何將電腦上現有的專案或本機內容遷移到 CodeCommit 儲存庫。隨著此程序,您會完成:

API 版本 2015-04-13224

Page 233: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 0:存取 CodeCommit 所需的設定

• 完成 CodeCommit 所需的初始設定。• 建立 CodeCommit 儲存庫。• 將本機資料夾置於 Git 版本控制下,並將該資料夾的內容推送至 CodeCommit 儲存庫。• 檢視 CodeCommit 儲存庫中的檔案。• 與團隊共用 CodeCommit 儲存庫。

主題• 步驟 0:存取 CodeCommit 所需的設定 (p. 225)• 步驟 1:建立 CodeCommit 儲存庫 (p. 228)• 步驟 2:將本機內容遷移到 CodeCommit 儲存庫 (p. 229)• 步驟 3:在 CodeCommit 中檢視檔案 (p. 230)• 步驟 4:共享 CodeCommit 儲存庫 (p. 230)

步驟 0:存取 CodeCommit 所需的設定您必須先為 CodeCommit 建立和設定 IAM 使用者,並設定本機電腦的存取,才能將本機內容遷移到CodeCommit。您也應該安裝 AWS CLI 來管理 CodeCommit。雖然不需要 AWS CLI 就可以執行大多數CodeCommit 任務,但它讓您在使用 Git 時很有彈性。

如果您已經設定 CodeCommit,則可以直接跳到步驟 1:建立 CodeCommit 儲存庫 (p. 228)。

建立和設定 IAM 使用者以存取 CodeCommit

1. 移至 http://aws.amazon.com 並選擇 Sign Up (註冊),以建立 AWS 帳戶。2. 在您的 AWS 帳戶中,建立 IAM 使用者或使用現有的使用者。請確定您具有與該 IAM 使用者相關聯的存

取金鑰 ID 和私密存取金鑰。如需詳細資訊,請參閱在 AWS 帳戶中建立 IAM 使用者。Note

CodeCommit 需要 AWS Key Management Service。如果您使用現有的 IAM 使用者,請確定連接到使用者的政策沒有明確拒絕 CodeCommit 所需的 AWS KMS 動作。如需更多詳細資訊,請參閱 AWS KMS 和加密 (p. 302)。

3. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

4. 在 IAM 主控台的導覽窗格中,選擇 Users (使用者),然後選擇您要設定用於存取 CodeCommit 的 IAM使用者。

API 版本 2015-04-13225

Page 234: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 0:存取 CodeCommit 所需的設定

5. 在 Permissions (許可) 標籤上,選擇 Add Permissions (新增許可)。6. 在 Grant permissions (授予許可) 中,選擇 Attach existing policies directly (直接連接現有政策)。7. 從政策清單中,選取 AWSCodeCommitFullAccess,或另一個用於存取 CodeCommit 的受管政策。如需

詳細資訊,請參閱 CodeCommit 的 AWS 受管 (預先定義) 政策 (p. 262)。

選取您要連接的政策之後,選擇 Next: Review (下一步:檢閱),以檢閱將連接到 IAM 使用者的政策清單。如果清單正確,請選擇 Add permissions (新增許可)。

如需有關 CodeCommit 受管政策及分享儲存庫存取權給其他群組和使用者的詳細資訊,請參閱共用儲存庫 (p. 79)和 AWS CodeCommit 的身份驗證與存取控制 (p. 254)。

安裝及設定 AWS CLI

1. 在本機電腦上,下載並安裝 AWS CLI。這是從命令列與 CodeCommit 互動的必要步驟。如需詳細資訊,請參閱開始設定 AWS 命令列界面。

Note

CodeCommit 只能與 AWS CLI 版本 1.7.38 版和更新版本 一起使用。若要判斷您已安裝的AWS CLI 版本,請執行 aws --version 命令。若要將舊版的 AWS CLI 更新為最新版本,請參閱安裝 AWS Command Line Interface。

2. 執行此命令來驗證已安裝 AWS CLI 的 CodeCommit 命令:

aws codecommit help

此命令會傳回 CodeCommit 命令清單。3. 使用 configure 命令來設定 AWS CLI,如下所示:

aws configure

出現提示時,請針對要用於 CodeCommit 的 IAM 使用者,指定其 AWS 存取金鑰和 AWS 私密存取金鑰。此外,請務必指定儲存庫所在的 AWS 區域,例如 us-east-2。系統提示您輸入預設輸出格式時,請指定 json。例如:

AWS Access Key ID [None]: Type your target AWS access key ID here, and then press EnterAWS Secret Access Key [None]: Type your target AWS secret access key here, and then press EnterDefault region name [None]: Type a supported region for CodeCommit here, and then press EnterDefault output format [None]: Type json here, and then press Enter

若要連接到另一個 AWS 區域中的儲存庫或資源,您必須以預設區域名稱來重新設定 AWSCLI。CodeCommit 支援的預設區域名稱包括:

• us-east-2• us-east-1• eu-west-1• us-west-2• ap-northeast-1• ap-southeast-1• ap-southeast-2• eu-central-1• ap-northeast-2

API 版本 2015-04-13226

Page 235: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 0:存取 CodeCommit 所需的設定

• sa-east-1• us-west-1• eu-west-2• ap-south-1• ca-central-1• us-gov-west-1• us-gov-east-1• eu-north-1• me-south-1

如需 CodeCommit 和 AWS 區域的詳細資訊,請參閱區域和 Git 連線端點 (p. 289)。如需 IAM、存取金鑰和私密金鑰的詳細資訊,請參閱如何取得登入資料?和管理 IAM 使用者的存取金鑰。

接著,您必須安裝 Git。

• 如果是 Linux, macOS, or Unix:

要使用 CodeCommit 儲存庫中的檔案、認可和其他資訊,您必須在本機電腦上安裝 Git。CodeCommit 支援 Git 1.7.9 版和更新版本。

要安裝 Git,建議可使用 Git Downloads 等網站。

Note

Git 是一種持續演進且定期更新的平台。有時,一項功能的改變,可能會影響此功能與CodeCommit 運作的方式。如果您在特定版本的 Git 和 CodeCommit 遇到問題,請查看 故障診斷 (p. 239) 的資訊。

• 用於 Windows:

要使用 CodeCommit 儲存庫中的檔案、認可和其他資訊,您必須在本機電腦上安裝 Git。CodeCommit 支援 Git 1.7.9 版和更新版本。

要安裝 Git,建議可使用 Git for Windows 等網站。如果使用此連結安裝 Git,您可以接受所有的安裝預設設定,除了以下項目之外:• 在 Adjusting your PATH environment (調整您的 PATH 環境) 步驟收到提示時,選擇從命令列使用 Git 選

項。• (選用) 如果您預計藉由 AWS CLI 包含的登入資料協助程式使用 HTTPS,而非設定用於 CodeCommit

的 Git 登入資料,請確認在 Configuring extra options (設定額外選項) 頁面上的 Enable Git CredentialManager (啟用 Git 登入資料管理員) 選項已清除。如果 IAM 使用者設定 Git 登入資料,則 Git CredentialManager 只與 CodeCommit 相容。如需更多詳細資訊,請參閱 適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7) 及 適用於 Windows 的 Git:我已安裝適用於 Windows 的 Git,但現在拒絕我存取儲存庫(403) (p. 247)。

Note

Git 是一種持續演進且定期更新的平台。有時,一項功能的改變,可能會影響此功能與CodeCommit 運作的方式。如果您遇到特定版本的 Git 和 CodeCommit 方面的問題,請檢閱 故障診斷 (p. 239) 中的資訊。

CodeCommit 支援 HTTPS 和 SSH 身份驗證。若要完成設定,您必須設定用於 CodeCommit 的 Git 登入資料 (對大多數使用者,建議使用 HTTPS)、存取 CodeCommit 時要使用的 SSH 金鑰對 (SSH),或在 AWSCLI 中包含的登入資料協助程式。

API 版本 2015-04-13227

Page 236: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 1:建立 CodeCommit 儲存庫

• 關於所有支援作業系統上的 Git 登入資料,請參閱步驟 3:為 CodeCommit 的 HTTPS 連線建立 Git 登入資料 (p. 8)。

• 關於 Linux, macOS, or Unix 上的 SSH,請參閱 SSH 和 Linux, macOS, or Unix:設定 Git 和CodeCommit 的公有和私有金鑰 (p. 26)。

• 關於 Windows 上的 SSH,請參閱 SSH 和 Windows:設定 Git 和 CodeCommit 的公有和私有金鑰 (p. 30)。

• 關於 Linux, macOS, or Unix 上的登入資料協助程式,請參閱設定登入資料協助程式 (Linux, macOS, orUnix) (p. 35)。

• 關於 Windows 上的登入資料協助程式,請參閱設定登入資料協助程式 (Windows) (p. 40)。

步驟 1:建立 CodeCommit 儲存庫在本節中,您會使用 CodeCommit 主控台來建立 CodeCommit 儲存庫,以用於本教學的剩餘部分。若要使用 AWS CLI 來建立儲存庫,請參閱建立儲存庫 (AWS CLI) (p. 76)。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇您要在其中建立儲存庫的 AWS 區域。如需詳細資訊,請參閱區域和 Git 連線端

點 (p. 289)。3. 請在 Repositories (儲存庫) 頁面上,選擇 Create repository (建立儲存庫)。4. 在 Create repository (建立儲存庫) 頁面的 Repository name (儲存庫名稱) 中,輸入儲存庫的名稱。

Note

儲存庫名稱需區分大小寫。在您的 AWS 帳戶的 AWS 區域中,名稱必須是唯一的。5. (選用) 在 Description (描述) 中,輸入儲存庫的描述。這可協助您和其他使用者識別儲存庫的用途。

Note

描述欄位會在主控台中顯示 Markdown,並接受所有的 HTML 字元和所有有效 Unicode 字元。如果您是使用 GetRepository 或 BatchGetRepositories API 的應用程式開發人員,並且計劃要在網頁瀏覽器中顯示儲存庫描述欄位,請參閱 CodeCommit API 參考。

6. (選用) 選擇 Add tag (新增標籤),以新增一或多個儲存庫標籤 (自訂屬性標籤,可協助您整理和管理您的AWS 資源) 到您的儲存庫。如需詳細資訊,請參閱 在 AWS CodeCommit 中標記儲存庫 (p. 88)。

7. 選擇 Create (建立)。

API 版本 2015-04-13228

Page 237: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 2:將本機內容遷移到 CodeCommit 儲存庫

建立儲存庫之後,該儲存庫會出現在 Repositories (儲存庫) 清單中。在 URL 欄中,選擇複製圖示,然後選擇要用來連接到 CodeCommit 的通訊協定 (HTTPS 或 SSH)。複製 URL。

例如,如果您將儲存庫命名為 MyFirstRepo 且使用 HTTPS,則 URL 如下所示:

https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyFirstRepo

稍後在步驟 2:將本機內容遷移到 CodeCommit 儲存庫 (p. 229)中,您需要用到此 URL。

步驟 2:將本機內容遷移到 CodeCommit 儲存庫現在您已經有 CodeCommit 儲存庫,您可以選擇本機電腦上的目錄來轉換為本機 Git 儲存庫。git init 命令可用於將現有的、無版本控制的內容轉換為 Git 儲存庫,或者,如果您尚無檔案或內容,則用於初始化新的空白儲存庫。

1. 從本機電腦上的終端機或命令列,將目錄變更到您要做為儲存庫來源的目錄。2. 執行 git init 命令,在此目錄中初始化 Git 版本控制。這會在目錄的根建立 .git 子目錄,以啟用版本控制

追蹤。此 .git 資料夾也包含儲存庫的所有必要中繼資料。

git init

3. 新增您要加入版本控制中的檔案。在此教學中,您會執行 git add 命令搭配 . 指標,以新增這個目錄中的所有檔案。關於其他選項,請參閱 Git 文件。

git add .

4. 以遞交訊息為新增的檔案建立遞交。

git commit –m "Initial commit"

5. 執行 git push 命令,並指定 CodeCommit 儲存庫的 URL 和名稱及 --all 選項。(這是您在步驟 1:建立 CodeCommit 儲存庫 (p. 228)中複製的 URL。)

API 版本 2015-04-13229

Page 238: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 3:在 CodeCommit 中檢視檔案

例如,如果您將儲存庫命名為 MyFirstRepo 且設定為使用 HTTPS,則應該執行下列命令:

git push https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyFirstRepo --all

步驟 3:在 CodeCommit 中檢視檔案推送目錄的內容之後,您可以使用 CodeCommit 主控台快速檢視該儲存庫中的所有檔案。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在 Repositories (儲存庫) 中,從清單中選擇儲存庫名稱 (例如,MyFirstRepoitory)。3. 檢視儲存庫中的檔案,以查看分支、複製 URL、設定等等。

步驟 4:共享 CodeCommit 儲存庫當您在 CodeCommit 中建立儲存庫時會產生兩個端點:一個用於 HTTPS 連線,另一個用於 SSH 連線。兩者都提供網路上的安全連線。您的使用者可以使用任一通訊協定。無論您建議使用者採用哪個通訊協定,這兩個端點都保持在作用中。您必須建立 IAM 政策來允許其他使用者存取儲存庫,才能與其他人共用儲存庫。提供這些存取指示給您的使用者。

為您的儲存庫建立客戶受管政策

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

2. 在 Dashboard (儀表板) 導覽區域中,選擇 Policies (政策),然後選擇 Create Policy (建立政策)。3. 在 Create Policy (建立政策) 頁面的 Copy an AWS Managed Policy (複製 受管政策) 旁,選擇 Select (選

取)。4. 在 Copy an AWS Managed Policy (複製 AWS 受管政策) 頁面中的 Search Policies (搜尋政策) 中,輸入

AWSCodeCommitPowerUser。選擇政策名稱旁的 Select (選取)。5. 在 Review Policy (檢閱政策) 頁面的 Policy Name (政策名稱) 中,輸入政策的新名稱 (例如

AWSCodeCommitPowerUser-MyDemoRepo)。

在 Policy Document (政策文件) 中,將 Resource 行的 "*" 部分取代為 CodeCommit 儲存庫的 AmazonResource Name (ARN),如下所示:

"Resource": [ "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo" ]

Tip

若要尋找 CodeCommit 儲存庫的 ARN,請移至 CodeCommit 主控台,然後從清單中選擇儲存庫名稱。如需詳細資訊,請參閱檢視儲存庫詳細資訊 (p. 110)。

如果您希望此政策套用到多個儲存庫,請指定儲存庫的 ARN,將每個儲存庫新增為資源。在每個資源陳述式之間包含逗號,如下所示:

"Resource": [ "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "arn:aws:codecommit:us-east-2:111111111111:MyOtherDemoRepo" ]

6. 選擇 Validate Policy (驗證政策)。在政策經過驗證後,選擇 Create Policy (建立政策)。

API 版本 2015-04-13230

Page 239: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南以增進的方式遷移儲存庫

若要管理對您的儲存庫的存取,請為其使用者建立 IAM 群組,新增 IAM 使用者至該使用者群組,然後將您在上一個步驟中建立的客戶受管政策附加至該群組。附加存取所需的任何其他政策,例如IAMSelfManageServiceSpecificCredentials 或 IAMUserSSHKeys。

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

2. 在 Dashboard (儀表板) 導覽區域中,選擇 Groups (群組),然後選擇 Create New Group (建立新的群組)。

3. 在 Set Group Name (設定群組名稱) 頁面的 Group Name (群組名稱) 中,輸入群組的名稱 (例如,MyDemoRepoGroup),然後選擇 Next Step (下一步)。請考慮將儲存庫名稱包含於群組名稱中。

Note

此名稱在 AWS 帳戶中必須是唯一的。4. 選取您在上一節建立的客戶受管政策旁的方塊 (例如,AWSCodeCommitPowerUser-MyDemoRepo)。5. 在 Review (檢閱) 頁面上,選擇 Create Group (建立群組)。IAM 會建立此群組並將指定的政策連接。此

群組將會出現在與您的 AWS 帳戶相關聯的群組清單中。6. 從清單中選擇您的群組。7. 在群組摘要頁面上,選擇 Users (使用者) 標籤,然後選擇 Add Users to Group (新增使用者到群組)。在

清單中 (顯示與您的 AWS 帳戶相關聯的所有使用者),選取您要允許存取 CodeCommit 儲存庫的使用者旁的方塊,然後選擇 Add Users (新增使用者)。

Tip

您可以使用 [Search (搜尋)] 方塊,依名稱快速尋找使用者。8. 新增使用者之後,關閉 IAM 主控台。

使用您設定的政策群組和政策建立要用來存取 CodeCommit 的 IAM 使用者之後,請將連接到儲存庫所需的連線資訊傳送給該使用者。

1. 開啟位於 https://console.aws.amazon.com/codesuite/codecommit/home 的 CodeCommit 主控台。2. 在區域選擇器中,選擇已建立儲存庫的 AWS 區域。儲存庫為 AWS 區域特有的。如需詳細資訊,請參

閱區域和 Git 連線端點 (p. 289)。3. 在 Repositories (儲存庫) 頁面上,尋找您要分享的儲存庫名稱。4. 在 Clone URL (複製 URL) 中,選擇使用者所要使用的通訊協定 (HTTPS 或 SSH)。這樣會複製該連線通

訊協定的複製 URL。5. 將複製 URL 連同其他任何指示傳送給使用者,例如安裝 AWS CLI、設定描述檔或安裝 Git。請務必包含

連線通訊協定的組態資訊 (例如,對於 HTTPS,設定 Git 的登入資料協助程式)。

漸進遷移儲存庫遷移到 AWS CodeCommit 時,請考慮依增量或區塊推送儲存庫,以減少因為間歇性網路問題或網路效能降低而造成整個推送失敗的可能性。如果採用遞增推送並搭配如此處所含的指令碼,您可以重新開始遷移,並只推送稍早嘗試時未成功的遞交。

此主題中的程序說明如何建立和執行指令碼,以增量方式遷移儲存庫,且只重新推送未成功的增量,直到遷移完成為止。

這些指示的撰寫是假設您已完成設定 (p. 5)和建立儲存庫 (p. 75)中的步驟。

主題• 步驟 0:決定是否漸進遷移 (p. 232)

API 版本 2015-04-13231

Page 240: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 0:決定是否漸進遷移

• 步驟 1:安裝先決條件並將 CodeCommit 儲存庫新增為遠端 (p. 232)• 步驟 2:建立要用於遞增遷移的指令碼 (p. 233)• 步驟 3:執行指令碼並遞增遷移到 CodeCommit (p. 233)• 附錄:範例指令碼 incremental-repo-migration.py (p. 234)

步驟 0:決定是否漸進遷移需要考量幾個因素,以決定儲存庫的整體大小及是否漸進遷移。最明顯的因素是儲存庫中成品的整體大小。像是儲存庫的累積歷史記錄,這種因素也會影響大小。具有多年的歷史記錄和分支的儲存庫可能會非常龐大,即使個別資產並不大。您可以運用多種策略來讓遷移這些儲存庫更簡單且更有效率。例如,您可以在複製開發歷史記錄很長的儲存庫時使用淺層複製策略,或對大型二進位檔案停用差異壓縮。您可以透過查詢 Git 文件來研究選項,或者您可以選擇設定和配置遞增推送,用於使用此主題 incremental-repo-migration.py 隨附的範例指令碼來遷移您的儲存庫。

如果以下一或多個條件成立,您可能想要設定遞增推送:

• 您要遷移的儲存庫有超過 5 年的歷史記錄。• 您的網際網路連線受限於不穩定的中斷、捨棄的封包、緩慢回應或其他服務中斷。• 儲存庫的整體大小大於 2 GB,而您要遷移整個儲存庫。• 儲存庫包含的大型成品或二進位檔案未正確壓縮,例如具有超過 5 個追蹤版本的大型映像檔案。• 您先前嘗試遷移至 CodeCommit,並收到「內部服務錯誤」訊息。

即使上述條件均不符合,您仍然可以選擇以遞增方式推送。

步驟 1:安裝先決條件並將 CodeCommit 儲存庫新增為遠端您可以建立自己的自訂指令碼,它有其自己的先決條件。如果使用此主題中的範例,您必須:

• 安裝其必要項目。• 將儲存庫複製到本機電腦。• 新增 CodeCommit 儲存庫做為您要遷移之儲存庫的遠端。

設定以執行 incremental-repo-migration.py

1. 在您的本機電腦上安裝 Python 2.6 或更新版本。如需詳細資訊以及最新的版本,請參閱 Python 網站。2. 在相同電腦上安裝 GitPython,它是一種 Python 程式庫,用於與 Git 儲存庫互動。如需詳細資訊,請參

閱 GitPython 文件。3. 使用 git clone --mirror 命令來複製您要遷移到本機電腦的儲存庫。從終端機 (Linux, macOS, or Unix) 或

命令提示字元 (Windows),使用 git clone --mirror 命令來為儲存庫建立本機儲存庫,包括您要建立本機儲存庫所在的目錄。例如,若要將名為 MyMigrationRepo URL 為 https://example.com/my-repo/ 的 Git 儲存庫複製到名為 my-repo 的目錄:

git clone --mirror https://example.com/my-repo/MyMigrationRepo.git my-repo

您應該會看到類似以下的輸出,這表示已將儲存庫複製到名為 my-repo 的本機儲存庫:

Cloning into bare repository 'my-repo'...remote: Counting objects: 20, done.remote: Compressing objects: 100% (17/17), done.

API 版本 2015-04-13232

Page 241: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 2:建立要用於遞增遷移的指令碼

remote: Total 20 (delta 5), reused 15 (delta 3)Unpacking objects: 100% (20/20), done.Checking connectivity... done.

4. 將您剛複製的儲存庫目錄切換到本機儲存庫 (例如,my-repo)。從該目錄,使用 git remote addDefaultRemoteName RemoteRepositoryURL 命令來將 CodeCommit 儲存庫新增為遠端儲存庫的本機儲存庫。

Note

推送大型儲存庫時,請考慮使用 SSH,而不是 HTTPS。推送大型變更、大量變更,或大型儲存庫時,長時間執行的 HTTPS 連線經常會因為網路連線問題或防火牆設定提前終止。如需為 SSH 設定 CodeCommit 的詳細資訊,請參閱適用於 Linux, macOS, or Unix 上的 SSH 連線 (p. 25)或適用於 Windows 上的 SSH 連線 (p. 29)。

例如,使用下列命令來為名為 MyDestinationRepo 的 CodeCommit 儲存庫新增 SSH 端點做為名為codecommit 遠端的遠端儲存庫:

git remote add codecommit ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDestinationRepo

Tip

由於這是複製,預設的遠端名稱 (origin) 已在使用中。您必須使用其他遠端名稱。雖然範例使用 codecommit,您可以使用您要的任何名稱。使用 git remote show 命令來檢閱為您的本機儲存庫設定的遠端清單。

5. 使用 git remote -v 命令來顯示本機儲存庫的擷取和推送設定,並確認已正確設定。例如:

codecommit ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDestinationRepo (fetch)codecommit ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDestinationRepo (push)

Tip

如果您仍看到不同遠端儲存庫的擷取和推送項目 (例如,來源項目),請使用 git remote set-url --delete 命令來移除它們。

步驟 2:建立要用於遞增遷移的指令碼這些步驟的撰寫是假設您使用 incremental-repo-migration.py 範例指令碼。

1. 開啟文字編輯器,並將範例指令碼 (p. 234)的內容貼上至空的文件中。2. 將文件儲存在文件目錄 (而非本機儲存庫的工作目錄) 並將它命名為 incremental-repo-

migration.py。確定您選擇的目錄是在您的本機環境或路徑變數中設定的目錄,使得您可以從命令列或終端機執行 Python 指令碼。

步驟 3:執行指令碼並遞增遷移到 CodeCommit現在您已經建立 incremental-repo-migration.py 指令碼,您可以使用它來將本機儲存庫遞增遷移到 CodeCommit 儲存庫。依預設,指令碼將以每個批次 1,000 個遞交的方式推送遞交,並嘗試使用目錄的Git 設定,藉此它會執行做為本機儲存庫和遠端儲存庫的設定。必要時,您可以使用 incremental-repo-migration.py 中包含的選項來設定其他設定。

1. 從終端機或命令提示字元,將目錄切換到您要遷移的本機儲存庫。

API 版本 2015-04-13233

Page 242: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南附錄:範例指令碼 incremental-repo-migration.py

2. 從該目錄中,執行以下命令:

python incremental-repo-migration.py

3. 指令碼會執行,並在終端機或命令提示字元中顯示進度。有些大型儲存庫顯示進度的速度會慢下來。如果單一推送失敗了三次,指令碼會停止。然後您可以重新執行指令碼,指令碼從失敗的批次開始。您可以重新執行指令碼,直到所有推送成功且遷移完成。

Tip

您可以從任何目錄執行 incremental-repo-migration.py,只要您使用 -l 和 -r 選項來指定要使用的本機和遠端設定。例如,若要從任何目錄使用指令碼將位於 /tmp/my-repo 的本機儲存庫遷移到別名為 codecommit 的遠端:

python incremental-repo-migration.py -l "/tmp/my-repo" -r "codecommit"

在遞增推送時,您可能還想要使用 -b 選項來變更使用的預設批次大小。例如,如果您定期推送的儲存庫具有經常變動的非常大型二進位檔案,並且從具有網路頻寬限制的位置作業,您可能希望使用 -b 選項來將批次大小變更為 500,而非 1,000。例如:

python incremental-repo-migration.py -b 500

這將以每個批次 500 個遞交的方式遞增推送本機儲存庫。如果在遷移儲存庫時,您決定再次變更批次大小 (例如,如果您決定減少在嘗試失敗後減少批次大小),請記得使用 -c 選項來移除批次標籤,之後再使用 -b 來重設批次大小:

python incremental-repo-migration.py -cpython incremental-repo-migration.py -b 250

Important

如果您想要在失敗後重新執行指令碼,請勿使用 -c 選項。-c 選項會移除用於將遞交分批次的標籤。只在您想要變更批次大小並重新開始時,或如果您決定不再使用該指令碼時,才使用 -c 選項。

附錄:範例指令碼 incremental-repo-migration.py為方便起見,我們開發了一個範例 Python 指令碼 incremental-repo-migration.py,用於以遞增的方式推送儲存庫。此指令碼是開放原始碼範例,並以現狀提供。

# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Amazon Software License (the "License"). # You may not use this file except in compliance with the License. A copy of the License is located at # http://aws.amazon.com/asl/ # This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied. See the License for# the specific language governing permissions and limitations under the License.

#!/usr/bin/env python

import osimport sysfrom optparse import OptionParser

API 版本 2015-04-13234

Page 243: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南附錄:範例指令碼 incremental-repo-migration.py

from git import Repo, TagReference, RemoteProgress, GitCommandError

class PushProgressPrinter(RemoteProgress): def update(self, op_code, cur_count, max_count=None, message=''): op_id = op_code & self.OP_MASK stage_id = op_code & self.STAGE_MASK if op_id == self.WRITING and stage_id == self.BEGIN: print("\tObjects: %d" % max_count)

class RepositoryMigration:

MAX_COMMITS_TOLERANCE_PERCENT = 0.05 PUSH_RETRY_LIMIT = 3 MIGRATION_TAG_PREFIX = "codecommit_migration_"

def migrate_repository_in_parts(self, repo_dir, remote_name, commit_batch_size, clean): self.next_tag_number = 0 self.migration_tags = [] self.walked_commits = set() self.local_repo = Repo(repo_dir) self.remote_name = remote_name self.max_commits_per_push = commit_batch_size self.max_commits_tolerance = self.max_commits_per_push * self.MAX_COMMITS_TOLERANCE_PERCENT

try: self.remote_repo = self.local_repo.remote(remote_name) self.get_remote_migration_tags() except (ValueError, GitCommandError): print("Could not contact the remote repository. The most common reasons for this error are that the name of the remote repository is incorrect, or that you do not have permissions to interact with that remote repository.") sys.exit(1)

if clean: self.clean_up(clean_up_remote=True) return

self.clean_up()

print("Analyzing repository") head_commit = self.local_repo.head.commit sys.setrecursionlimit(max(sys.getrecursionlimit(), head_commit.count()))

# tag commits on default branch leftover_commits = self.migrate_commit(head_commit) self.tag_commits([commit for (commit, commit_count) in leftover_commits])

# tag commits on each branch for branch in self.local_repo.heads: leftover_commits = self.migrate_commit(branch.commit) self.tag_commits([commit for (commit, commit_count) in leftover_commits])

# push the tags self.push_migration_tags()

# push all branch references for branch in self.local_repo.heads: print("Pushing branch %s" % branch.name) self.do_push_with_retries(ref=branch.name)

# push all tags print("Pushing tags") self.do_push_with_retries(push_tags=True)

self.get_remote_migration_tags()

API 版本 2015-04-13235

Page 244: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南附錄:範例指令碼 incremental-repo-migration.py

self.clean_up(clean_up_remote=True)

print("Migration to CodeCommit was successful")

def migrate_commit(self, commit): if commit in self.walked_commits: return []

pending_ancestor_pushes = [] commit_count = 1

if len(commit.parents) > 1: # This is a merge commit # Ensure that all parents are pushed first for parent_commit in commit.parents: pending_ancestor_pushes.extend(self.migrate_commit(parent_commit)) elif len(commit.parents) == 1: # Split linear history into individual pushes next_ancestor, commits_to_next_ancestor = self.find_next_ancestor_for_push(commit.parents[0]) commit_count += commits_to_next_ancestor pending_ancestor_pushes.extend(self.migrate_commit(next_ancestor))

self.walked_commits.add(commit)

return self.stage_push(commit, commit_count, pending_ancestor_pushes)

def find_next_ancestor_for_push(self, commit): commit_count = 0

# Traverse linear history until we reach our commit limit, a merge commit, or an initial commit while len(commit.parents) == 1 and commit_count < self.max_commits_per_push and commit not in self.walked_commits: commit_count += 1 self.walked_commits.add(commit) commit = commit.parents[0]

return commit, commit_count

def stage_push(self, commit, commit_count, pending_ancestor_pushes): # Determine whether we can roll up pending ancestor pushes into this push combined_commit_count = commit_count + sum(ancestor_commit_count for (ancestor, ancestor_commit_count) in pending_ancestor_pushes)

if combined_commit_count < self.max_commits_per_push: # don't push anything, roll up all pending ancestor pushes into this pending push return [(commit, combined_commit_count)]

if combined_commit_count <= (self.max_commits_per_push + self.max_commits_tolerance): # roll up everything into this commit and push self.tag_commits([commit]) return []

if commit_count >= self.max_commits_per_push: # need to push each pending ancestor and this commit self.tag_commits([ancestor for (ancestor, ancestor_commit_count) in pending_ancestor_pushes]) self.tag_commits([commit]) return []

# push each pending ancestor, but roll up this commit self.tag_commits([ancestor for (ancestor, ancestor_commit_count) in pending_ancestor_pushes])

API 版本 2015-04-13236

Page 245: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南附錄:範例指令碼 incremental-repo-migration.py

return [(commit, commit_count)]

def tag_commits(self, commits): for commit in commits: self.next_tag_number += 1 tag_name = self.MIGRATION_TAG_PREFIX + str(self.next_tag_number)

if tag_name not in self.remote_migration_tags: tag = self.local_repo.create_tag(tag_name, ref=commit) self.migration_tags.append(tag) elif self.remote_migration_tags[tag_name] != str(commit): print("Migration tags on the remote do not match the local tags. Most likely your batch size has changed since the last time you ran this script. Please run this script with the --clean option, and try again.") sys.exit(1)

def push_migration_tags(self): print("Will attempt to push %d tags" % len(self.migration_tags)) self.migration_tags.sort(key=lambda tag: int(tag.name.replace(self.MIGRATION_TAG_PREFIX, ""))) for tag in self.migration_tags: print("Pushing tag %s (out of %d tags), commit %s" % (tag.name, self.next_tag_number, str(tag.commit))) self.do_push_with_retries(ref=tag.name)

def do_push_with_retries(self, ref=None, push_tags=False): for i in range(0, self.PUSH_RETRY_LIMIT): if i == 0: progress_printer = PushProgressPrinter() else: progress_printer = None

try: if push_tags: infos = self.remote_repo.push(tags=True, progress=progress_printer) elif ref is not None: infos = self.remote_repo.push(refspec=ref, progress=progress_printer) else: infos = self.remote_repo.push(progress=progress_printer)

success = True if len(infos) == 0: success = False else: for info in infos: if info.flags & info.UP_TO_DATE or info.flags & info.NEW_TAG or info.flags & info.NEW_HEAD: continue success = False print(info.summary)

if success: return except GitCommandError as err: print(err)

if push_tags: print("Pushing all tags failed after %d attempts" % (self.PUSH_RETRY_LIMIT)) elif ref is not None: print("Pushing %s failed after %d attempts" % (ref, self.PUSH_RETRY_LIMIT)) print("For more information about the cause of this error, run the following command from the local repo: 'git push %s %s'" % (self.remote_name, ref)) else: print("Pushing all branches failed after %d attempts" % (self.PUSH_RETRY_LIMIT)) sys.exit(1)

API 版本 2015-04-13237

Page 246: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南附錄:範例指令碼 incremental-repo-migration.py

def get_remote_migration_tags(self): remote_tags_output = self.local_repo.git.ls_remote(self.remote_name, tags=True).split('\n') self.remote_migration_tags = dict((tag.split()[1].replace("refs/tags/",""), tag.split()[0]) for tag in remote_tags_output if self.MIGRATION_TAG_PREFIX in tag)

def clean_up(self, clean_up_remote=False): tags = [tag for tag in self.local_repo.tags if tag.name.startswith(self.MIGRATION_TAG_PREFIX)]

# delete the local tags TagReference.delete(self.local_repo, *tags)

# delete the remote tags if clean_up_remote: tags_to_delete = [":" + tag_name for tag_name in self.remote_migration_tags] self.remote_repo.push(refspec=tags_to_delete)

parser = OptionParser()parser.add_option("-l", "--local", action="store", dest="localrepo", default=os.getcwd(), help="The path to the local repo. If this option is not specified, the script will attempt to use current directory by default. If it is not a local git repo, the script will fail.")parser.add_option("-r", "--remote", action="store", dest="remoterepo", default="codecommit", help="The name of the remote repository to be used as the push or migration destination. The remote must already be set in the local repo ('git remote add ...'). If this option is not specified, the script will use 'codecommit' by default.")parser.add_option("-b", "--batch", action="store", dest="batchsize", default="1000", help="Specifies the commit batch size for pushes. If not explicitly set, the default is 1,000 commits.")parser.add_option("-c", "--clean", action="store_true", dest="clean", default=False, help="Remove the temporary tags created by migration from both the local repo and the remote repository. This option will not do any migration work, just cleanup. Cleanup is done automatically at the end of a successful migration, but not after a failure so that when you re-run the script, the tags from the prior run can be used to identify commit batches that were not pushed successfully.")

(options, args) = parser.parse_args()

migration = RepositoryMigration()migration.migrate_repository_in_parts(options.localrepo, options.remoterepo, int(options.batchsize), options.clean)

API 版本 2015-04-13238

Page 247: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南對 Git 登入資料進行故障診斷 (HTTPS)

AWS CodeCommit 故障診斷以下資訊可能有助於診斷 AWS CodeCommit 內的常見問題。

主題• 對 Git 登入資料和對 AWS CodeCommit 的 HTTPS 連線進行故障診斷 (p. 239)• 對 AWS CodeCommit 的 SSH 連線進行故障診斷 (p. 240)• 對登入資料協助程式和對 AWS CodeCommit 的 HTTPS 連線進行故障診斷 (p. 245)• 對 Git 用戶端和 AWS CodeCommit 進行故障診斷 (p. 248)• 故障診斷存取錯誤和 AWS CodeCommit (p. 250)• 故障診斷組態錯誤和 AWS CodeCommit (p. 251)• 對主控台錯誤和 AWS CodeCommit 進行故障診斷 (p. 252)• 觸發和 AWS CodeCommit 的疑難排解 (p. 252)• 開啟偵錯 (p. 253)

對 Git 登入資料和對 AWS CodeCommit 的 HTTPS連線進行故障診斷

下列資訊可幫助您對使用 Git 登入資料和 HTTPS 來連接到 AWS CodeCommit 儲存庫時的常見問題進行故障診斷。

主題• AWS CodeCommit 的 Git 登入資料:當我在終端機或命令列連接到我的 CodeCommit 儲存庫時,我持

續看見輸入登入資料的提示 (p. 239)• AWS CodeCommit 的 Git 登入資料:我設定 Git 登入資料,但我的系統未使用它們 (p. 240)

AWS CodeCommit 的 Git 登入資料:當我在終端機或命令列連接到我的 CodeCommit 儲存庫時,我持續看見輸入登入資料的提示問題: 嘗試從終端機或命令列推送、提取或以其他方式與 CodeCommit 儲存庫互動時,系統提示您提供使用者名稱和密碼,而您必須為 IAM 使用者提供 Git 登入資料。

可能的修正:此錯誤最常見的原因是本機電腦執行的作業系統不支援登入資料管理、它未安裝登入資料管理公用程式,或是 IAM 使用者的 Git 登入資料尚未儲存到這些登入資料管理系統的其中一個。根據作業系統和本機環境,您可能需要安裝登入資料管理工具、設定作業系統中包含的登入資料管理工具,或自訂本機環境以使用登入資料儲存體。例如,如果您的電腦執行 macOS,您可以使用 Keychain Access 公用程式來存放登入資料。如果您的電腦執行 Windows,您可以使用隨著適用於 Windows 的 Git 安裝的 CredentialManager。如需詳細資訊,請參閱 Git 文件中的適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7)和CredentialStorage。

API 版本 2015-04-13239

Page 248: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南AWS CodeCommit 的 Git 登入資料:我設定 Git 登入資料,但我的系統未使用它們

AWS CodeCommit 的 Git 登入資料:我設定 Git 登入資料,但我的系統未使用它們問題: 嘗試使用 CodeCommit 搭配 Git 用戶端時,用戶端似乎未使用 IAM 使用者的 Git 登入資料。

可能的修正:此錯誤最常見的原因是,您先前將電腦設定為使用 AWS CLI 隨附的登入資料協助程式。請檢查您的 .gitconfig 檔案中類似以下的區段,並且將它們移除:

[credential "https://git-codecommit.*.amazonaws.com"] helper = !aws codecommit credential-helper $@ UseHttpPath = true

儲存檔案,然後開啟新的命令列或終端機工作階段,之後再次嘗試連接。

您也可能已在電腦上設定多個登入資料協助程式或管理程式,那麼您的系統可能會預設使用另一個組態。若要將使用的登入資料協助程式重設為預設值,執行 git config 命令時您可以使用 --system 選項,而不是 --global 或 --local。

如需詳細資訊,請參閱 Git 文件中的適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7)和Credential Storage。

對 AWS CodeCommit 的 SSH 連線進行故障診斷以下資訊可以協助您對使用 SSH 來連接 CodeCommit 儲存庫時的常見問題進行故障診斷。

主題• 存取錯誤:公有金鑰已成功上傳至 IAM,但 Linux, macOS, or Unix 系統上的連線失敗 (p. 240)• 存取錯誤:公有金鑰已成功上傳至 IAM,並且 SSH 測試成功,但 Windows 上的連線失敗 (p. 241)• 身份驗證挑戰:連接到 CodeCommit 儲存庫時無法建立主機的真偽 (p. 241)• IAM 錯誤:嘗試將公有金鑰新增至 IAM 時發生「格式無效」 (p. 244)• Windows 上的 Git:嘗試使用 SSH 連接時,Bash 模擬器或命令列凍結 (p. 244)

存取錯誤:公有金鑰已成功上傳至 IAM,但 Linux,macOS, or Unix 系統上的連線失敗問題:嘗試連接到 SSH 端點以與 CodeCommit 儲存庫 通訊時,於測試連線或複製儲存庫時連線發生失敗或遭到拒絕。

可能的修正:在 IAM 中指派給公有金鑰的 SSH 金鑰 ID 可能未與您的連線嘗試關聯。您可能尚未設定組態檔案 (p. 27),您可能沒有組態檔案的存取權,另一個設定可能防止成功讀取組態檔,您可能提供錯誤的金鑰ID,或您可能提供的是 IAM 使用者的 ID,而非金鑰 ID。

您可以在 IAM 主控台 IAM 使用者的描述檔中找到 SSH 金鑰 ID:

API 版本 2015-04-13240

Page 249: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南存取錯誤:公有金鑰已成功上傳至 IAM,並

且 SSH 測試成功,但 Windows 上的連線失敗

Note

如果您已上傳一個以上的 SSH 金鑰 ID,則會依金鑰 ID 的字母順序列出金鑰,而非依上傳日期。請確定您已複製的金鑰 ID 與正確的上傳日期相關聯。

嘗試使用以下命令測試連線:

ssh [email protected]

確認連線後如果您看到成功訊息,則您的 SSH 金鑰 ID 有效。編輯設定檔,以將連接嘗試與您在 IAM 中的公有金鑰關聯。如果您不想要編輯組態檔,您可以嘗試使用 SSH 金鑰 ID,將所有連線嘗試加到您的儲存庫。例如,如果您想要複製名為 MyDemoRepo 的儲存庫而不要修改您的組態檔以將其與您的連線嘗試關聯,您可以執行下列命令:

git clone ssh://[email protected]/v1/repos/MyDemoRepo my-demo-repo

如需詳細資訊,請參閱適用於 Linux, macOS, or Unix 上的 SSH 連線 (p. 25)。

存取錯誤:公有金鑰已成功上傳至 IAM,並且 SSH 測試成功,但 Windows 上的連線失敗問題:當您嘗試使用 SSH 端點來複製或與 CodeCommit 儲存庫 通訊時,出現含有語句 No supportedauthentication methods available 的錯誤訊息。

可能的修正:此錯誤最常見的原因是,當您嘗試使用 SSH 時,您的 Windows 系統環境變數集將 Windows導向使用另一個程式。例如,您可能已設定 GIT_SSH 變數以指向其中一個 PuTTY 工具組 (plink.exe)。這可能是傳統的組態,也可能需要在您的電腦上安裝一或多個其他程式。如果您確定不需要此環境變數,您可以開啟系統屬性將其移除。

若要解決這個問題,請開啟 Bash 模擬器,然後重試 SSH 連線,但要包含 GIT_SSH_COMMAND="SSH" 做為字首。例如,若要使用 SSH 來複製儲存庫:

GIT_SSH_COMMAND="ssh" git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

在 Windows 命令列透過 SSH 連接時,如果您的 Windows 版本規定連接字串必須包含 SSH 金鑰 ID,就可能發生類似的問題。重試連線,但這次要在命令中包含從 IAM 複製的 SSH 金鑰 ID。例如:

git clone ssh://[email protected]/v1/repos/MyDemoRepo my-demo-repo

身份驗證挑戰:連接到 CodeCommit 儲存庫時無法建立主機的真偽問題:當您嘗試使用 SSH 端點來與 CodeCommit 儲存庫通訊時,出現含有語句 The authenticity ofhost 'host-name' can't be established. 的警告訊息

可能的修正:您的登入資料可能未正確設定。請遵循適用於 Linux, macOS, or Unix 上的 SSH 連線 (p. 25)或適用於 Windows 上的 SSH 連線 (p. 29)中的指示。

如果您已經依照這些步驟,但問題仍存在,表示可能有人正在嘗試發動中間人攻擊。當您看到下列訊息時,請輸入 no 並按 Enter 鍵。

API 版本 2015-04-13241

Page 250: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南身份驗證挑戰:連接到 CodeCommit

儲存庫時無法建立主機的真偽

Are you sure you want to continue connecting (yes/no)?

請確定 CodeCommit 的指紋和公有金鑰與 SSH 設定主題中所述相符,再繼續進行連線。

適用於 CodeCommit 的公有指紋

伺服器 加密雜湊類型 指紋

git-codecommit.us-east-2.amazonaws.com

MD5 a9:6d:03:ed:08:42:21:be:06:e1:e0:2a:d1:75:31:5e

git-codecommit.us-east-2.amazonaws.com

SHA256 3lBlW2g5xn/NA2Ck6dyeJIrQOWvn7n8UEs56fG6ZIzQ

git-codecommit.us-east-1.amazonaws.com

MD5 a6:9c:7d:bc:35:f5:d4:5f:8b:ba:6f:c8:bc:d4:83:84

git-codecommit.us-east-1.amazonaws.com

SHA256 eLMY1j0DKA4uvDZcl/KgtIayZANwX6t8+8isPtotBoY

git-codecommit.us-west-2.amazonaws.com

MD5 a8:68:53:e3:99:ac:6e:d7:04:7e:f7:92:95:77:a9:77

git-codecommit.us-west-2.amazonaws.com

SHA256 0pJx9SQpkbPUAHwy58UVIq0IHcyo1fwCpOOuVgcAWPo

git-codecommit.eu-west-1.amazonaws.com

MD5 93:42:36:ea:22:1f:f1:0f:20:02:4a:79:ff:ea:12:1d

git-codecommit.eu-west-1.amazonaws.com

SHA256 tKjRkOL8dmJyTmSbeSdN1S8F/f0iql3RlvqgTOP1UyQ

git-codecommit.ap-northeast-1.amazonaws.com

MD5 8e:a3:f0:80:98:48:1c:5c:6f:59:db:a7:8f:6e:c6:cb

git-codecommit.ap-northeast-1.amazonaws.com

SHA256 Xk/WeYD/K/bnBybzhiuu4dWpBJtXPf7E30jHU7se4Ow

git-codecommit.ap-southeast-1.amazonaws.com

MD5 65:e5:27:c3:09:68:0d:8e:b7:6d:94:25:80:3e:93:cf

git-codecommit.ap-southeast-1.amazonaws.com

SHA256 ZIsVa7OVzxrTIf+Rk4UbhPv6Es22mSB3uTBojfPXIno

git-codecommit.ap-southeast-2.amazonaws.com

MD5 7b:d2:c1:24:e6:91:a5:7b:fa:c1:0c:35:95:87:da:a0

git-codecommit.ap-southeast-2.amazonaws.com

SHA256 nYp+gHas80HY3DqbP4yanCDFhqDVjseefVbHEXqH2Ec

git-codecommit.eu-central-1.amazonaws.com

MD5 74:5a:e8:02:fc:b2:9c:06:10:b4:78:84:65:94:22:2d

git-codecommit.eu-central-1.amazonaws.com

SHA256 MwGrkiEki8QkkBtlAgXbYt0hoZYBnZF62VY5RzGJEUY

git-codecommit.ap-northeast-2.amazonaws.com

MD5 9f:68:48:9b:5f:fc:96:69:39:45:58:87:95:b3:69:ed

API 版本 2015-04-13242

Page 251: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南身份驗證挑戰:連接到 CodeCommit

儲存庫時無法建立主機的真偽

伺服器 加密雜湊類型 指紋

git-codecommit.ap-northeast-2.amazonaws.com

SHA256 eegAPQrWY9YsYo9ZHIKOmxetfXBHzAZd8Eya53Qcwko

git-codecommit.sa-east-1.amazonaws.com

MD5 74:99:9d:ff:2b:ef:63:c6:4b:b4:6a:7f:62:c5:4b:51

git-codecommit.sa-east-1.amazonaws.com

SHA256 kW+VKB0jpRaG/ZbXkgbtMQbKgEDK7JnISV3SVoyCmzU

git-codecommit.us-west-1.amazonaws.com

MD5 3b:76:18:83:13:2c:f8:eb:e9:a3:d0:51:10:32:e7:d1

git-codecommit.us-west-1.amazonaws.com

SHA256 gzauWTWXDK2u5KuMMi5vbKTmfyerdIwgSbzYBODLpzg

git-codecommit.eu-west-2.amazonaws.com

MD5 a5:65:a6:b1:84:02:b1:95:43:f9:0e:de:dd:ed:61:d3

git-codecommit.eu-west-2.amazonaws.com

SHA256 r0Rwz5k/IHp/QyrRnfiM9j02D5UEqMbtFNTuDG2hNbs

git-codecommit.ap-south-1.amazonaws.com

MD5 da:41:1e:07:3b:9e:76:a0:c5:1e:64:88:03:69:86:21

git-codecommit.ap-south-1.amazonaws.com

SHA256 hUKwnTj7+Xpx4Kddb6p45j4RazIJ4IhAMD8k29itOfE

git-codecommit.ca-central-1.amazonaws.com

MD5 9f:7c:a2:2f:8c:b5:74:fd:ab:b7:e1:fd:af:46:ed:23

git-codecommit.ca-central-1.amazonaws.com

SHA256 Qz5puafQdANVprLlj6r0Qyh4lCNsF6ob61dGcPtFS7w

git-codecommit.eu-west-3.amazonaws.com

MD5 1b:7f:97:dd:d7:76:8a:32:2c:bd:2c:7b:33:74:6a:76

git-codecommit.eu-west-3.amazonaws.com

SHA256 uw7c2FL564jVoFgtc+ikzILnKBsZz7t9+CFdSJjKbLI

git-codecommit.us-gov-west-1.amazonaws.com

MD5 9f:6c:19:3b:88:cd:e8:88:1b:9c:98:6a:95:31:8a:69

git-codecommit.us-gov-west-1.amazonaws.com

SHA256 djXQoSIFcg8vHe0KVH1xW/gOF9X37tWTqu4Hkng75x4

git-codecommit.us-gov-east-1.amazonaws.com

MD5 00:8d:b5:55:6f:05:78:05:ed:ea:cb:3f:e6:f0:62:f2

git-codecommit.us-gov-east-1.amazonaws.com

SHA256 fVb+R0z7qW7minenW+rUpAABRCRBTCzmETAJEQrg98

git-codecommit.eu-north-1.amazonaws.com

MD5 8e:53:d8:59:35:88:82:fd:73:4b:60:8a:50:70:38:f4

git-codecommit.eu-north-1.amazonaws.com

SHA256 b6KSK7xKq+V8jl7iuAcjqXsG7zkqoUZZmmhYYFBq1wQ

git-codecommit.me-south-1.amazonaws.com

MD5 0e:39:28:56:d5:41:e6:8d:fa:81:45:37:fb:f3:cd:f7

API 版本 2015-04-13243

Page 252: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南IAM 錯誤:嘗試將公有金鑰新增至 IAM 時發生「格式無效」

伺服器 加密雜湊類型 指紋

git-codecommit.me-south-1.amazonaws.com

SHA256 O+NToCGgjrHekiBuOl0ad7ROGEsz+DBLXOd/c9wc0JU

git-codecommit.ap-east-1.amazonaws.com

MD5 a8:00:3d:24:52:9d:61:0e:f6:e3:88:c8:96:01:1c:fe

git-codecommit.ap-east-1.amazonaws.com

SHA256 LafadYwUYW8hONoTRpojbjNs9IRnbEwHtezD3aAIBX0

IAM 錯誤:嘗試將公有金鑰新增至 IAM 時發生「格式無效」問題:在 IAM 中,嘗試設定對 CodeCommit 使用 SSH 時,當您嘗試新增公有金鑰時,出現含有字詞Invalid format 的錯誤訊息。

可能的修正:IAM 只接受 OpenSSH 格式的公有金鑰。如果您提供另一種格式的公有金鑰,或金鑰未包含必要的位元數,您會看到此錯誤。在 Windows 電腦上產生公有-私有金鑰對時,最常發生這個問題。若要產生金鑰對和複製 IAM 所需的 OpenSSH 格式,請參閱the section called “SSH 和 Windows:設定 Git 和CodeCommit 的公有和私有金鑰” (p. 30)。

Windows 上的 Git:嘗試使用 SSH 連接時,Bash 模擬器或命令列凍結問題:在您設定適用於 Windows 的 SSH 存取,並於命令列或終端機確認連線之後,您看到訊息指出登錄中沒有快取伺服器的主機金鑰,而當您在命令提示字元或 Bash 模擬器中嘗試使用 git pull、git push 或 gitclone 等命令時,嘗試將金鑰存放在快取中會遭到凍結 (不接受 y/n/return 鍵輸入)。

可能的修正:此錯誤最常見的原因是 Git 環境設定為使用 OpenSSH 以外的方法進行身份驗證 (可能是PuTTY)。已知這在某些組態中快取金鑰時會造成問題。若要修正此問題,請嘗試下列其中一項:

• 開啟 Bash 模擬器,並在 Git 命令之前新增 GIT_SSH_COMMAND="ssh" 參數。例如,如果您嘗試推送至儲存庫,不要輸入 git push,請輸入:

GIT_SSH_COMMAND="ssh" git push

• 如果您已經安裝 PuTTY,請開啟 PuTTY,並在主機名稱 (或 IP 地址) 中輸入您要觸達的 CodeCommit 端點 (例如,git-codecommit.us-east-2.amazonaws.com)。選擇 Open (開啟)。當出現 PuTTY 安全提醒的提示時,請選擇 Yes (是),以永久快取金鑰。

• 重新命名或刪除 GIT_SSH 環境變數 (如果您已不再使用它)。然後開啟新的命令提示字元或 Bash 模擬器工作階段,並再次嘗試您的命令。

關於其他解決方案,請參閱 Stack Overflow 上Git 複製/提取在快取的存放區金鑰中持續凍結。

API 版本 2015-04-13244

Page 253: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南對登入資料協助程式 (HTTPS) 進行故障診斷

對登入資料協助程式和對 AWS CodeCommit 的HTTPS 連線進行故障診斷

下列資訊可幫助您對使用 AWS CLI 隨附的登入資料協助程式和 HTTPS,來連接到 CodeCommit 儲存庫時的常見問題進行故障診斷。

主題• 我在 Windows 中使用登入資料協助程式時發生找不到命令的錯誤 (p. 245)• 當我連接到 CodeCommit 儲存庫時提示我輸入使用者名稱 (p. 245)• 適用於 macOS 的 Git:我成功設定登入資料協助程式,但現在拒絕我存取儲存庫 (403) (p. 246)• 適用於 Windows 的 Git:我已安裝適用於 Windows 的 Git,但現在拒絕我存取儲存庫 (403) (p. 247)

我在 Windows 中使用登入資料協助程式時發生找不到命令的錯誤問題:在更新 AWS CLI 後,登入資料協助程式連線到 CodeCommit 儲存庫失敗,並出現 awscodecommit credential-helper $@ get: aws: command not found。

原因:此錯誤最常見的原因是您的 AWS CLI 版本已更新到使用 Python 3 的版本。這是 MSI 套件的已知問題。若要驗證您是否具有受影響的版本,請開啟命令列並執行下列命令:aws --version

如果輸出 Python 版本開頭為 3,表示您具有受影響的版本。例如:

aws-cli/1.16.62 Python/3.6.2 Darwin/16.7.0 botocore/1.12.52

可能的修正:您可執行以下其中一項來解決此問題:

• 在 Windows 使用 Python 和 pip 安裝和設定 AWS CLI,而不是使用 MSI。如需詳細資訊,請參閱在Windows 上安裝 Python、pip 和 AWS CLI。

• 手動編輯 .gitconfig 檔案,變更 [credential] 區段來明確指向本機電腦上的 aws.cmd。例如:

[credential] helper = !"\C:\\Program Files\\Amazon\\AWSCLI\\bin\\aws.cmd\" codecommit credential-helper $@ UseHttpPath = true

• 執行 git config 命令來更新 .gitconfig 檔案以明確參考 aws.cmd,並視需要手動更新 PATH 環境變數來包含命令的路徑。例如:

git config --global credential.helper "!aws.cmd codecommit credential-helper $@"git config --global credential.UseHttpPath true

當我連接到 CodeCommit 儲存庫時提示我輸入使用者名稱問題:嘗試使用登入資料協助程式來與 CodeCommit 儲存庫通訊時,出現訊息來提示您輸入使用者名稱。

可能的修正:設定您的 AWS 設定檔,或確保使用的是您設定要與 CodeCommit 使用的設定檔。如需設定的詳細資訊,請參閱在 Linux, macOS, or Unix 上使用 AWS CLI 登入資料協助程式來設定 AWS

API 版本 2015-04-13245

Page 254: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南適用於 macOS 的 Git:我成功設定登入資

料協助程式,但現在拒絕我存取儲存庫 (403)

CodeCommit 儲存庫 HTTPS 連線的步驟 (p. 33)或在 Windows 上使用 AWS CLI 登入資料協助程式來設定AWS CodeCommit 儲存庫 HTTPS 連線的步驟 (p. 37)。如需 IAM、存取金鑰和秘密金鑰的詳細資訊,請參閱管理 IAM 使用者的存取金鑰和如何取得登入資料?

適用於 macOS 的 Git:我成功設定登入資料協助程式,但現在拒絕我存取儲存庫 (403)問題:在 macOS 上,登入資料協助程式似乎未如預期存取或使用您的登入資料。這可能是因為兩個不同的問題所導致:

• AWS CLI 是針對與儲存庫所在位置不同的 AWS 區域設定。• Keychain Access 公用程式所儲存的登入資料那時已過期。

可能的修正:若要驗證是否為 AWS CLI 設定了正確的區域,請執行 aws configure 命令,並檢閱顯示的資訊。如果 CodeCommit 儲存庫所在的 AWS 區域與 AWS CLI 所顯示的 AWS 區域不同,您必須執行 awsconfigure 命令,並將值變更為適合該區域的值。如需詳細資訊,請參閱步驟 1:CodeCommit 的初始組態 (p. 33)。

在 OS X 和 macOS 上發佈的預設 Git 版本會使用 Keychain Access 公用程式來儲存產生的登入資料。基於安全理由,為存取 CodeCommit 儲存庫而產生的密碼是臨時性,因此,存放在金鑰鏈中的登入資料大約 15分鐘之後會失效。如果您僅使用 CodeCommit 來存取 Git,請嘗試下列:

1. 在終端機,執行 git config 命令來尋找 Keychain Access 公用程式定義所在的 Git 組態檔案(gitconfig)。根據您的本機系統和偏好設定,您可能會有多個 gitconfig 檔案。

$ git config -l --show-origin

在此命令的輸出中,找到包含以下選項的行:

helper = osxkeychain

在此行開始處所列的檔案為您必須編輯的 Git 組態檔案。2. 若要編輯 Git 設定檔,請使用純文字編輯器或執行下列命令:

$ nano /usr/local/git/etc/gitconfig

3. 將下一行文字變更為註解:

# helper = osxkeychain

或者,如果您要繼續使用 Keychain Access 公用程式來快取其他 Git 儲存庫的登入資料,請修改標頭而非將它變更為註解。例如,若要允許 GitHub 快取的登入資料,您可以修改標頭,如下所示:

[credential "https://github.com"] helper = osxkeychain

如果您使用 Git 來存取其他儲存庫,您可以設定 Keychain Access 公用程式,使得它不會為您的CodeCommit 儲存庫提供登入資料。若要設定 Keychain Access 公用程式:

1. 開啟 Keychain Access 公用程式。(您可以使用 Finder 找到它。)2. 搜尋 git-codecommit.us-east-2.amazonaws.com。反白此列,開啟操作功能表 (按一下滑鼠右

鍵),然後選擇 Get Info (取得資訊)。

API 版本 2015-04-13246

Page 255: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南適用於 Windows 的 Git:我已安裝適用於

Windows 的 Git,但現在拒絕我存取儲存庫 (403)

3. 選擇 Access Control (存取控制) 標籤。4. 在 Confirm before allowing access (允許存取之前確認) 中,選擇 git-credential-osxkeychain,

然後選擇減號從清單移除它。Note

從清單移除 git-credential-osxkeychain 之後,每當您執行 Git 命令時就會看到對話方塊。選擇 Deny (拒絕) 以繼續。如果您覺得快顯的干擾性太大,以下是一些替代選項:

• 使用 SSH (而不是 HTTPS) 連接到 CodeCommit。如需更多詳細資訊,請參閱 適用於 Linux,macOS, or Unix 上的 SSH 連線 (p. 25)。

• 在 Keychain Access 公用程式中,在 git-codecommit.us-east-2.amazonaws.com 的Access Control (存取控制) 標籤上,選擇 Allow all applications to access this item (accessto this item is not restricted) (允許所有應用程式存取此項目 (對此項目的存取權不受限)) 選項。這可防止快顯,但登入資料最終仍會過期 (平均大約 15 分鐘),然後您會看到 403 錯誤訊息。發生這種情況時,您必須刪除金鑰鏈項目才能還原功能。

• 安裝一個依預設不使用金鑰鏈的 Git 版本。• 考慮用於刪除金鑰鏈項目的一個指令碼解決方案。若要檢視 指令碼解決方案社群產生樣本的

詳細資訊,請參閱產品和服務整合 (p. 68)中的定期刪除快取 OS X 憑證存放區中快取登入資料的 Mac OS X 指令碼 (p. 73)。

如果想要讓 Git 完全無法使用 Keychain Access 公用程式,您可以設定 Git 以停止使用 osxkeychain 做為登入資料協助程式。例如,如果您開啟終端機並執行命令 git config --system credential.helper,而它傳回 osxkeychain,就表示 Git 設定為使用 Keychain Access 公用程式。您可以執行下列命令來加以變更:

git config --system --unset credential.helper

請注意,如果您除了 CodeCommit 以外還使用其他儲存庫服務,藉由執行此命令搭配 --system 選項,將會變更所有使用者的全系統 Git 行為,而這可能對其他使用者或其他儲存庫產生各種意外的影響。另外,此方法可能需要使用 sudo,而且您的帳戶可能沒有可套用此變更的足夠系統許可。請務必再次執行 gitconfig --system credential.helper 命令來驗證已成功套用命令。如需詳細資訊,請參閱自訂 Git -Git 組態和 Stack Overflow 上的此文章。

適用於 Windows 的 Git:我已安裝適用於 Windows 的Git,但現在拒絕我存取儲存庫 (403)問題:在 Windows 上,登入資料協助程式似乎未如預期存取或使用您的登入資料。這可能是因為不同的問題所導致:

• AWS CLI 是針對與儲存庫所在位置不同的 AWS 區域設定。• 在預設情況下,適用於 Windows 的 Git 會安裝 Git Credential Manager 公用程式,它與使用 AWS 登入資

料協助程式的 CodeCommit 連線不相容。已安裝時,即使已隨 AWS CLI 安裝登入資料協助程式,並且設定對 CodeCommit 的連線,也會導致對儲存庫的連線失敗。

• 某些版本的適用於 Windows 的 Git 登入資料可能無法完全符合 RFC 2617 和 RFC 4559,這可能會導致Git 登入資料和 AWS CLI 隨附的登入資料協助程式的問題。如需詳細資訊,請參閱版本 2.11.0(3) 未請求輸入使用者名稱/密碼。

可能的修正:

• 如果您嘗試使用 AWS CLI 隨附的登入資料協助程式,請考慮使用 Git 登入資料透過 HTTPS 連接,而不是使用登入資料協助程式。不同於 AWS CodeCommit 的登入資料協助程式,為您的 IAM 使用者設定的 Git登入資料會與適用於 Windows 的 Git Credential Manager 相容。如需詳細資訊,請參閱 適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7)。

API 版本 2015-04-13247

Page 256: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南對 Git 用戶端進行故障診斷

如果想要使用登入資料協助程式來驗證是否為 AWS CLI 設定正確的 AWS 區域,請執行 aws configure命令,並檢閱顯示的資訊。如果 CodeCommit 儲存庫所在的 AWS 區域與 AWS CLI 所顯示的 AWS 區域不同,您必須執行 aws configure 命令,並將值變更為適合該區域的值。如需詳細資訊,請參閱步驟 1:CodeCommit 的初始組態 (p. 37)。

• 如果可能,請解除安裝並重新安裝適用於 Windows 的 Git。安裝適用於 Windows 的 Git 時,請清除在安裝Git Credential Manager 公用程式時所用之選項的核取方塊。此 Credential Manager 與 AWS CodeCommit的登入資料協助程式不相容。如果您已安裝 Git Credential Manager 或另一個登入資料管理公用程式,而且您不想將它解除安裝,您可以修改 .gitconfig 檔案,並為 CodeCommit 新增登入資料管理:

1. 開啟 Control Panel (控制台),選擇 Credential Manager,並移除 CodeCommit 的任何儲存的登入資料。

2. 在任何純文字編輯器 (例如記事本) 中開啟 .gitconfig 檔案。

Note

如果您使用多個 Git 設定檔,您可能同時有本機和全域 .gitconfig 檔案。請務必編輯適當的檔案。

3. 將以下區段新增到您的 .gitconfig 檔案:

[credential "https://git-codecommit.*.amazonaws.com"] helper = !aws codecommit credential-helper $@ UseHttpPath = true

4. 儲存檔案,然後開啟新的命令列工作階段,之後再次嘗試連接。

如果您想要在連接到 CodeCommit 儲存庫時使用 AWS CodeCommit 的登入資料協助程式,以及在連接到其他託管儲存庫 (例如 GitHub 儲存庫) 時使用另一個登入資料管理系統,您也可以使用此方法。

若要將使用的登入資料協助程式重設為預設值,您可以在執行 git config 命令時使用 --system 選項,而不是 --global 或 --local。

• 如果是在 Windows 電腦上使用 Git 登入資料,您可以嘗試解決任何 RFC 不相符的問題,方法是在連線字串中包括您的 Git 登入資料使用者名稱。例如,若要解決問題並在US East (Ohio) 區域中複製名為MyDemoRepo 的儲存庫:

git clone https://Your-Git-Credential-Username@git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

Note

如果在您的 Git 登入資料使用者名稱中有一個 @ 字元,則這種方法將沒有作用。您必須對該字元使用 URL 編碼 (也稱為 URL 逸出或 % 編碼)。

對 Git 用戶端和 AWS CodeCommit 進行故障診斷以下資訊可以協助您對使用 Git 搭配 AWS CodeCommit 儲存庫時的常見問題進行故障診斷。如需對使用 HTTPS 或 SSH 時 Git 用戶端的相關問題進行故障診斷,也請參閱 對 Git 登入資料進行故障診斷(HTTPS) (p. 239)、對 SSH 連線進行故障診斷 (p. 240)和 對登入資料協助程式 (HTTPS) 進行故障診斷 (p. 245)。

主題• Git 錯誤:錯誤:RPC 失敗;結果=56,HTTP 代碼=200 嚴重:遠端未預期地當機 (p. 249)• Git 錯誤:太多個參考更新命令 (p. 249)• Git 錯誤:透過 HTTPS 推送在某些版本的 Git 中會損壞 (p. 249)

API 版本 2015-04-13248

Page 257: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南Git 錯誤:錯誤:RPC 失敗;結果=56,HTTP

代碼=200 嚴重:遠端未預期地當機

• Git 錯誤:'gnutls_handshake () 失敗' (p. 249)• Git 錯誤:Git 找不到 CodeCommit 儲存庫或沒有可存取儲存庫的許可 (p. 249)• Windows 上的 Git:沒有支援的身份驗證方法可供使用 (publickey) (p. 249)

Git 錯誤:錯誤:RPC 失敗;結果=56,HTTP 代碼=200 嚴重:遠端未預期地當機問題:推送大型變更、大量變更,或大型儲存庫時,長時間執行的 HTTPS 連線經常會因為網路連線問題或防火牆設定提前終止。

可能的修正:改為使用 SSH 推送,或當您移轉大型儲存庫時遵循以增進的方式遷移儲存庫 (p. 231)中的步驟。此外,請確定您未超過個別檔案的大小限制。如需詳細資訊,請參閱限制 (p. 297)。

Git 錯誤:太多個參考更新命令問題:每個推送的參考更新數量上限為 4,000 個。當推送包含超過 4,000 個參考更新時會顯示此錯誤。

可能的修正:嘗試使用 git push --all 和 git push --tags 來推送個別分支和標籤。如果您有太多個標籤,請將標籤分割成多個推送。如需詳細資訊,請參閱 限制 (p. 297)。

Git 錯誤:透過 HTTPS 推送在某些版本的 Git 中會損壞問題:Curl 更新至 7.41.0 的問題造成以 SSPI 為基礎的摘要身份驗證失敗。已知受影響的 Git 版本包含1.9.5.msysgit.1。某些版本的適用於 Windows 的 Git 登入資料可能無法完全符合 RFC 2617 和 RFC 4559,這可能會導致使用 Git 登入資料或 AWS CLI 隨附的登入資料協助程式的 HTTPS 連線發生問題。

可能的修正:檢查您的 Git 版本是否有已知問題,或使用舊版或更新版本的版本。如需 mysysgit 的更多資訊,請參閱 GitHub 論壇中的對 HTTPS 的推送已損壞。如需適用於 Windows 的 Git 版本問題的更多資訊,請參閱 版本 2.11.0(3) 未要求輸入使用者名稱/密碼。

Git 錯誤:'gnutls_handshake () 失敗'問題:在 Linux 中,當您嘗試使用 Git 來與 CodeCommit 儲存庫 通訊時,出現含有語句 error:gnutls_handshake() failed 的錯誤訊息。

可能的修正:針對 OpenSSL 編譯 Git。針對一個方法,請參閱 Ask Ubuntu 論壇中的連接到 HTTPS 伺服器時出現「錯誤:gnutls_handshake () 失敗」。

或者,請使用 SSH 而不是 HTTPS 來與 CodeCommit 儲存庫通訊。

Git 錯誤:Git 找不到 CodeCommit 儲存庫或沒有可存取儲存庫的許可問題:連線字串中的結尾斜線可能導致連線嘗試失敗。

可能的修正:確定您已為儲存庫提供正確的名稱和連線字串,而且沒有結尾斜線。如需詳細資訊,請參閱連接到儲存庫 (p. 77)。

Windows 上的 Git:沒有支援的身份驗證方法可供使用(publickey)問題:在您為 Windows 設定 SSH 存取之後,嘗試使用命令 (例如 git pull、git push 或 git clone 時),您會看見存取遭拒錯誤。

API 版本 2015-04-13249

Page 258: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南故障診斷存取錯誤

可能的修正:此錯誤的最常見原因是您的電腦上存在 GIT_SSH 環境變數,並且已設定可支援其他連線公用程式,例如 PuTTY。若要修正此問題,請嘗試下列其中一項:

• 開啟 Bash 模擬器,並在 Git 命令之前新增 GIT_SSH_COMMAND="ssh" 參數。例如,如果您嘗試複製儲存庫,不要輸入 git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo,請輸入:

GIT_SSH_COMMAND="ssh" git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

• 重新命名或刪除 GIT_SSH 環境變數 (如果您已不再使用它)。然後開啟新的命令提示字元或 Bash 模擬器工作階段,並再次嘗試您的命令。

如需有關在 Windows 上使用 SSH 時對 Git 問題進行故障診斷的詳細資訊,請參閱 對 SSH 連線進行故障診斷 (p. 240)。

故障診斷存取錯誤和 AWS CodeCommit以下資訊可以協助您對與 AWS CodeCommit 儲存庫連線時可能會看到的存取錯誤進行故障診斷。

主題• 存取錯誤:我從 Windows 連接到 CodeCommit 儲存庫時提示我輸入使用者名稱和密碼 (p. 250)• 存取錯誤:連接到 CodeCommit 儲存庫時公有金鑰遭拒 (p. 250)• 存取錯誤:當連接到 CodeCommit 儲存庫時出現「超過費率」或「429」訊息 (p. 251)

存取錯誤:我從 Windows 連接到 CodeCommit 儲存庫時提示我輸入使用者名稱和密碼問題:當您嘗試使用 Git 與 CodeCommit 儲存庫通訊時,您看到對話方塊提示您輸入使用者名稱和密碼。

可能的修正:這可能是 Windows 的內建登入資料管理系統。根據組態的不同,執行以下其中一項:

• 如果使用 HTTPS 搭配 Git 登入資料,系統不會將 Git 登入資料存放在系統中。請提供 Git 登入資料然後繼續。系統應該不會再次提示您輸入。如需詳細資訊,請參閱適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7)。

• 如果對 AWS CodeCommit 使用 HTTPS 搭配登入資料協助程式,它與 Windows 登入資料管理系統不相容。選擇 Cancel (取消)。

這也可能表示您在安裝適用於 Windows 的 Git 時也安裝 Git Credential Manager。Git Credential Manager與 CodeCommit 不相容。請考慮將它解除安裝。

如需更多詳細資訊,請參閱 適用於 Windows 上使用 AWS CLI 登入資料協助程式的 HTTPS 連線 (p. 37) 及 適用於 Windows 的 Git:我已安裝適用於 Windows 的 Git,但現在拒絕我存取儲存庫(403) (p. 247)。

存取錯誤:連接到 CodeCommit 儲存庫時公有金鑰遭拒問題:當您嘗試使用 SSH 端點來與 CodeCommit 儲存庫通訊時,出現含有語句 Error: public keydenied 的錯誤訊息。

API 版本 2015-04-13250

Page 259: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南存取錯誤:當連接到 CodeCommit 儲

存庫時出現「超過費率」或「429」訊息

可能的修正:此錯誤最常見的原因是您尚未完成 SSH 連接的設定。設定公有和私有 SSH 金鑰對,然後將公有金鑰與您的 IAM 使用者關聯。如需設定 SSH 的詳細資訊,請參閱適用於 Linux, macOS, or Unix 上的SSH 連線 (p. 25)和適用於 Windows 上的 SSH 連線 (p. 29)。

存取錯誤:當連接到 CodeCommit 儲存庫時出現「超過費率」或「429」訊息問題:當您嘗試與 CodeCommit 儲存庫通訊,出現訊息指出「超過費率」或包含「429」錯誤碼。通訊大幅減慢或失敗。

原因:所有對 CodeCommit 的呼叫 (無論是從應用程式、AWS CLI、Git 用戶端或 AWS 管理主控台) 都受到每秒請求數量上限和整體作用中請求的限制。您不能超過任何 AWS 區域中一個 AWS 帳戶允許的最大請求率。如果請求超過最大比率,您會收到錯誤,您 AWS 帳戶的進一步呼叫都會暫時受到調節。在調節期間,您對 CodeCommit 的連線會變慢並可能失敗。

可能的修正:採取步驟以減少對 CodeCommit 的連線或呼叫數量或是分散請求。一些可考慮的方法:

• 在請求中實作抖動,特別是定期輪詢請求

如果您的應用程式會定期輪詢 CodeCommit 且此應用程式在多個 Amazon EC2 執行個體上執行,則引進抖動 (隨機延遲量) 可讓不同的 Amazon EC2 執行個體不會在同一秒輪詢。我們建議從 0 到 59 秒的亂數,在一分鐘的時間範圍內平均分配輪詢機制。

• 使用事件型架構,而不是輪詢

改用事件型架構來取代輪詢,只在發生事件時才進行呼叫。請考慮針對 AWS CodeCommit 事件使用CloudWatch Events 通知來觸發工作流程。

• 實作 API 和自動化 Git 動作的錯誤重試與指數退避

錯誤重試與指數退避可協助限制呼叫率。每個 AWS 開發套件會實作自動重試邏輯和指數退避演算法。對於自動化 Git 推送和 Git 提取,您可能需要實作自己的重試邏輯。如需詳細資訊,請參閱 AWS 中的錯誤重試與指數退避。

• 在 AWS 支援中心請求提高 CodeCommit 服務限制

若想收到服務限制提高,您必須確認您已遵守此處提供的建議,包括實作錯誤重試或指數退避方法。在您的請求中,您也必須提供 AWS 區域、AWS 帳戶和受到調節問題影響的時間範圍。

故障診斷組態錯誤和 AWS CodeCommit以下資訊可以協助您對與 AWS CodeCommit 儲存庫連線時可能會看到的組態錯誤進行故障診斷。

主題• 組態錯誤:無法在 macOS 上設定 AWS CLI 登入資料 (p. 251)

組態錯誤:無法在 macOS 上設定 AWS CLI 登入資料問題:執行 aws configure 以設定 AWS CLI 時,您看到 ConfigParseError 訊息。

可能的修正:此錯誤最常見的原因是登入資料檔案已存在。瀏覽到 ~/.aws 並尋找名為 credentials 的檔案。重新命名或刪除該檔案,然後再次執行 aws configure。

API 版本 2015-04-13251

Page 260: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南對主控台錯誤進行故障診斷

對主控台錯誤和 AWS CodeCommit 進行故障診斷以下資訊可以協助您對使用 AWS CodeCommit 儲存庫時的主控台錯誤進行故障診斷。

主題• 存取錯誤:從主控台或 AWS CLI 對 CodeCommit 儲存庫的加密金鑰存取遭拒 (p. 251)• 主控台錯誤:無法從主控台瀏覽 CodeCommit 儲存庫中的程式碼 (p. 252)

存取錯誤:從主控台或 AWS CLI 對 CodeCommit 儲存庫的加密金鑰存取遭拒問題:嘗試從主控台或 AWS CLI 存取 CodeCommit 時出現錯誤訊息,其中包含片詞EncryptionKeyAccessDeniedException 或 User is not authorized for the KMS defaultmaster key for CodeCommit 'aws/codecommit' in your account。

可能的修正:此錯誤最常見的原因是您的 AWS 帳戶尚未訂閱 AWS Key Management Service,而這是CodeCommit 所需。開啟 IAM 主控台,選擇 Encryption Keys (加密金鑰),然後選擇 Get Started Now (立即開始使用)。如果您看到訊息說明您目前尚未訂閱 AWS Key Management Service 服務,請按照該頁面上的指示進行訂閱。如需 CodeCommit 和 AWS Key Management Service 的詳細資訊,請參閱AWS KMS 和加密 (p. 302)。

主控台錯誤:無法從主控台瀏覽 CodeCommit 儲存庫中的程式碼問題:嘗試從主控台瀏覽儲存庫的內容時,出現拒絕存取的錯誤訊息。

可能的修正:此錯誤最常見的原因是套用到 AWS 帳戶的 IAM 政策已拒絕從 CodeCommit 主控台瀏覽程式碼所需的一或多個許可。如需 CodeCommit 存取許可和瀏覽的詳細資訊,請參閱AWS CodeCommit 的身份驗證與存取控制 (p. 254)。

觸發和 AWS CodeCommit 的疑難排解以下資訊可能有助於您對 AWS CodeCommit 中的觸發問題進行疑難排解。

主題• 觸發錯誤:儲存庫觸發未如預期般地執行 (p. 252)

觸發錯誤:儲存庫觸發未如預期般地執行問題:為儲存庫設定的一或多個觸發似乎未執行,或未如預期般地執行。

可能的修正:如果觸發的目標是 AWS Lambda 函數,請確保您已經將函數的資源政策設定為供CodeCommit 存取。如需詳細資訊,請參閱 範例 3:使用 CodeCommit 觸發條件建立適用於 AWS Lambda整合的政策 (p. 277)。

或者,編輯觸發,並確保已選取要據以觸發動作的事件,而且觸發的分支包含您想看到動作回應的分支。嘗試將觸發的設定變更為 All repository events (所有儲存庫事件) 和 All branches (所有分支),然後測試觸發。如需更多詳細資訊,請參閱 編輯儲存庫的觸發 (p. 106)。

API 版本 2015-04-13252

Page 261: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南開啟偵錯

開啟偵錯問題:我想要開啟偵錯,以取得儲存庫和 Git 儲存庫執行命令情況的更多資訊。

可能的修正:嘗試下列項目:

1. 在終端機或命令提示字元中,於您的本機電腦上執行下列命令,之後再執行 Git 命令:

在 Linux, macOS, or Unix 上:

export GIT_TRACE_PACKET=1export GIT_TRACE=1export GIT_CURL_VERBOSE=1

在 Windows 上:

set GIT_TRACE_PACKET=1set GIT_TRACE=1set GIT_CURL_VERBOSE=1

Note

設定 GIT_CURL_VERBOSE 僅適用 HTTPS 連線。SSH 不會使用 libcurl 程式庫。2. 若要取得 Git 儲存庫的更多資訊,請建立類似以下的 shell 指令碼,然後執行指令碼:

#!/bin/sh

gc_output=`script -q -c 'git gc' | grep Total`object_count=$(echo $gc_output | awk -F ' |\(|\)' '{print $2}')delta_count=$(echo $gc_output | awk -F ' |\(|\)' '{print $5}')

verify_pack_output=`git verify-pack -v objects/pack/pack-*.pack .git/objects/pack/pack-*.pack 2>/dev/null`largest_object=$(echo "$verify_pack_output" | grep blob | sort -k3nr | head -n 1 | awk '{print $3/1024" KiB"}')largest_commit=$(echo "$verify_pack_output" | grep 'tree\|commit\|tag' | sort -k3nr | head -n 1 | awk '{print $3/1024" KiB"}')longest_delta_chain=$(echo "$verify_pack_output" | grep chain | tail -n 1 | awk -F ' |:' '{print $4}')

branch_count=`git branch -a | grep remotes/origin | grep -v HEAD | wc -l`if [ $branch_count -eq 0 ]; then branch_count=`git branch -l | wc -l`fi

echo "Size: `git count-objects -v | grep size-pack | awk '{print $2}'` KiB"echo "Branches: $branch_count"echo "Tags: `git show-ref --tags | wc -l`"echo "Commits: `git rev-list --all | wc -l`"echo "Objects: $object_count"echo "Delta objects: $delta_count"echo "Largest blob: $largest_object"echo "Largest commit/tag/tree: $largest_commit"echo "Longest delta chain: $longest_delta_chain"

3. 如果這些步驟未提供足夠的資訊讓您自行解決問題,請在 AWS CodeCommit 論壇上要求協助。務必在您的貼文中包含來自這些步驟的相關輸出。

API 版本 2015-04-13253

Page 262: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南身份驗證

AWS CodeCommit 的身份驗證與存取控制

AWS CodeCommit 的存取需要登入資料。這些登入資料必須有許可存取 AWS 資源 (例如 CodeCommit 儲存庫) 和您的 IAM 使用者,此使用者用來管理您用於建立 Git 連線的 Git 登入資料或 SSH 公有金鑰。下列各節提供詳細資訊,說明如何使用 AWS Identity and Access Management (IAM) 和 CodeCommit 來協助保護資源的存取安全:

• 身份驗證 (p. 254)• 存取控制 (p. 255)

身份驗證由於 CodeCommit 儲存庫是以 Git 為基礎,且支援 Git 的基本功能 (包括 Git 登入資料),所以在使用CodeCommit 時,建議您使用 IAM 使用者。您可以使用其他身分類型來存取 CodeCommit,但其他身分類型會受到限制,如下所述。

身分類型:

• IAM 使用者 – IAM 使用者 只是您的 AWS 帳戶中具有特定自訂許可的身分。例如,IAM 使用者可以有許可來建立和管理 Git 登入資料,以存取 CodeCommit 儲存庫。這是建議用於 CodeCommit 的使用者類型。您可以使用 IAM 使用者名稱和密碼來登入安全 AWS 網頁,例如 AWS Management Console、AWS 開發論壇或 AWS Support Center。

您可以產生 Git 登入資料,或將 SSH 公有金鑰與您的 IAM 使用者相關聯。這些是設定 Git 來使用CodeCommit 儲存庫最簡單的方式。您可以使用 Git 登入資料,在 IAM 中產生靜態的使用者名稱和密碼。然後,使用這些登入資料,對 Git 及支援 Git 使用者名稱和密碼身份驗證的任何第三方工具,建立 HTTPS連線。使用 SSH 連接,您可以在本機電腦上建立 Git 和 CodeCommit 用於 SSH 身分驗證的公有和私有金鑰檔案。將公有金鑰與 IAM 使用者相關聯,並將私有金鑰存放在本機電腦上。

此外,您可以為每個使用者產生存取金鑰。當您以程式設計的方式存取 AWS 服務時 (無論是透過其中一個AWS 軟體開發套件 或使用 AWS Command Line Interface (AWS CLI)),請使用這些存取金鑰。軟體開發套件和 CLI 工具會使用存取金鑰,以加密方式簽署您的請求。如果您不使用 AWS 工具,則必須自行簽署請求。CodeCommit supportsSignature 第 4 版,這是用來驗證傳入 API 請求的通訊協定。如需驗證請求的詳細資訊,請參閱 AWS General Reference 中的 Signature 第 4 版簽署程序。

• AWS 帳戶根使用者 – 當您註冊 AWS 時,您會提供與 AWS 帳戶相關聯的電子郵件地址和密碼。這些是您的根登入資料,可完整存取您的所有 AWS 資源。根帳戶使用者無法使用某些 CodeCommit 功能。此外,Git 與根帳戶一起使用的唯一方法是設定 AWS 登入資料協助程式 (隨附於 AWS CLI)。Git 登入資料或SSH 公有私有金鑰對不能與根帳戶使用者一起使用。基於這些原因,當您與 CodeCommit 互動時,不建議使用根帳戶使用者。

Important

基於安全理由,建議您只在建立管理員使用者時使用根登入資料,管理員使用者也就是擁有 AWS帳戶完整許可的 IAM 使用者。然後您可以使用此管理員使用者建立其他 IAM 使用者和角色,並授予有限許可。如需詳細資訊,請參閱 IAM User Guide中的 IAM 最佳實務和建立管理員使用者和群組。

• IAM 角色 – 如同 IAM 使用者,IAM 角色是您在帳戶可建立來授予特定許可的 IAM 身分。它類似 IAM 使用者,但不與任何特定人關聯。與 IAM 使用者身分不同,Git 登入資料或 SSH 金鑰不能與此身分類型一起使用。不過,IAM 角色可讓您取得臨時存取金鑰,以用於存取 AWS 服務和資源。在下列情況中,IAM 角色搭配臨時登入資料非常有用:

API 版本 2015-04-13254

Page 263: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南存取控制

• 聯合身分使用者存取 – 非建立 IAM 使用者,而是使用來自 AWS Directory Service、您的企業使用者目錄或 web 身分供應商預先存在的身分。這些稱為聯合身分使用者。透過身分供應商來請求存取時,AWS 會指派角色給聯合身分使用者。如需聯合身分使用者的詳細資訊,請參閱 IAM User Guide中的聯合身分使用者與角色。

Note

Git 登入資料或 SSH 公有私有金鑰對不能與聯合身分使用者一起使用。此外,使用者偏好設定不適用於聯合身分使用者。

• 跨帳戶存取 – 您可以使用帳戶中的 IAM 角色,授權另一個 AWS 帳戶存取您帳戶的資源。如需範例,請參閱《IAM User Guide》中的教學課程:使用 IAM 角色跨 AWS 帳戶委派存取。

• AWS 服務存取 – 您可以使用帳戶中的 IAM 角色,授權 AWS 服務存取您帳戶的資源。例如,您可以建立角色來允許 AWS Lambda 代表您存取 CodeCommit 儲存庫。如需詳細資訊,請參閱《IAM UserGuide》中的建立角色以將許可委派給 AWS 服務。

• Amazon EC2 上所執行的應用程式 – 您可以使用 IAM 角色來針對執行個體上所執行的應用程式,管理其臨時登入資料,而不需將存取金鑰存放於 EC2 執行個體中供這些應用程式使用,以及發出 AWS API請求。若要指派 AWS 角色給 EC2 執行個體,並提供給執行個體所有的應用程式使用,您可以建立連結到執行個體的執行個體描述檔。執行個體描述檔包含該角色,並且可讓 EC2 執行個體上執行的程式取得臨時登入資料。如需詳細資訊,請參閱 IAM User Guide中的針對 Amazon EC2 上的應用程式來使用角色。

存取控制您可以透過有效登入資料來驗證您的請求,但還須具備許可才能建立或存取 CodeCommit 資源。例如,您必須有許可來檢視儲存庫、推送程式碼、建立和管理 Git 登入資料等等。

下列各節會說明如何管理 CodeCommit 的許可,我們建議您先閱讀概觀。

• 管理您的 CodeCommit 資源之存取許可的概觀 (p. 255)• 對 CodeCommit 使用以身分為基礎的政策 (IAM 政策) (p. 259)• CodeCommit 許可參考 (p. 277)

管理您的 CodeCommit 資源之存取許可的概觀每個 AWS 資源都由 AWS 帳戶所擁有。建立或存取資源的許可由許可政策所控管。帳戶管理員可以將許可政策連接到 IAM 身分 (即使用者、群組和角色)。某些服務 (例如 AWS Lambda) 也支援將許可政策連接到資源。

Note

帳戶管理員 (或管理員使用者) 是具有管理員權限的使用者。如需詳細資訊,請參閱《IAM UserGuide》中的 IAM 最佳實務。

授予許可時,您會決定誰取得許可、為了哪些資源而取得許可,以及您允許對這些資源進行的特定動作。

主題• CodeCommit 資源與操作 (p. 256)• 了解資源所有權 (p. 256)• 管理資源存取 (p. 257)• CodeCommit 中的資源範圍 (p. 258)• 指定政策元素:資源、動作、效果和委託人 (p. 258)• 在政策中指定條件 (p. 258)

API 版本 2015-04-13255

Page 264: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南資源與操作

CodeCommit 資源與操作CodeCommit 中的主要資源是 repository。每個資源都有一個相關聯的唯一 Amazon Resource Name(ARN)。在政策中,您使用 Amazon Resource Name (ARN) 來識別要套用政策的資源。如需 ARN 的詳細資訊,請參閱《Amazon Web Services General Reference》中的 Amazon Resource Name (ARN) 與 AWS 服務命名空間。CodeCommit 目前不支援其他資源類型 (這些稱為子資源)。

下表說明如何指定 CodeCommit 資源。

資源類型 ARN 格式

儲存庫 arn:aws:codecommit:region:account-id:repository-name

所有 CodeCommit 儲存庫 arn:aws:codecommit:*

在指定區域中,指定之帳戶擁有的所有 CodeCommit儲存庫

arn:aws:codecommit:region:account-id:*

Note

大多數 AWS 服務將 ARN 中的冒號 (:) 或斜線 (/) 視為相同字元。不過,CodeCommit 在資源模式和規則中請求完全相符。在建立事件模式時,請務必使用正確的 ARN 字元,使這些字元在資源中符合ARN 語法。

例如,您可以在陳述式中使用 ARN 指定特定的儲存庫 (MyDemoRepo),如下所示:

"Resource": "arn:aws:codecommit:us-west-2:111111111111:MyDemoRepo"

若要指定所有屬於特定帳戶的 repositories,請使用萬用字元 (*),如下所示:

"Resource": "arn:aws:codecommit:us-west-2:111111111111:*"

若要指定所有資源,或如果特定的 API 動作不支援 ARN,請在 Resource 元素中使用萬用字元 (*),如下所示:

"Resource": "*"

您也可以使用萬用字元 (*),以指定與儲存庫名稱局部相符的所有資源。例如,以下 ARN 指定 us-east-2AWS 區域中名稱開頭為 MyDemo 且向 AWS 帳戶 111111111111 註冊的任何 CodeCommit 儲存庫:

arn:aws:codecommit:us-east-2:111111111111:MyDemo*

如需可用於 CodeCommit 資源的操作清單,請參閱 CodeCommit 許可參考 (p. 277)。

了解資源所有權AWS 帳戶擁有在帳戶內所建立的資源,而無論資源的建立者是誰。具體而言,資源擁有者就是對資源建立請求進行身分驗證的委託人實體 (即根帳戶、IAM 使用者或 IAM 角色) 的 AWS 帳戶。下列範例說明其如何運作:

• 如果您在 AWS 帳戶中建立 IAM 使用者,並將建立 CodeCommit 資源的許可授予該使用者,則該使用者可以建立 CodeCommit 資源。但是,您的 AWS 帳戶 (即該使用者所屬帳戶) 擁有這些 CodeCommit 資源。

API 版本 2015-04-13256

Page 265: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南管理資源存取

• 如果您使用 AWS 帳戶的根帳戶登入資料來建立規則,則您的 AWS 帳戶即為 CodeCommit 資源的擁有者。

• 如果您在 AWS 帳戶中建立 IAM 角色,並將建立 CodeCommit 資源的許可授予該角色,則任何可擔任該角色的人都能建立 CodeCommit 資源。您的 AWS 帳戶 (即該角色所屬帳戶) 擁有這些 CodeCommit 資源。

管理資源存取若要管理 AWS 資源的存取,請使用許可政策。許可政策 說明誰可以存取哪些內容。以下部分說明用來建立許可政策的選項。

Note

本節使用 IAM 討論 CodeCommit 的情況。其中不提供 IAM 服務的詳細資訊。如需 IAM 的詳細資訊,請參閱《IAM User Guide》中的什麼是 IAM?。如需 IAM 政策語法和說明的詳細資訊,請參閱《IAM User Guide》中的 AWS IAM 政策參考。

連接到 IAM 身分的許可政策稱為以身分為基礎的政策 (IAM 政策)。連接到資源的許可政策稱為以資源為基礎的政策。CodeCommit 目前僅支援以身分為基礎的政策 (IAM 政策)。

主題• 以身分為基礎的政策 (IAM 政策) (p. 257)• 資源類型政策 (p. 258)

以身分為基礎的政策 (IAM 政策)若要管理 AWS 資源的存取,您需要將許可政策連接到 IAM 身分。在 CodeCommit 中,您使用以身分為基礎的政策來控制儲存庫的存取。例如,您可以執行下列作業:

• 將許可政策連接至您帳戶中的使用者或群組 – 若要授予使用者在 CodeCommit 主控台檢視 CodeCommit資源的許可,您需要將以身分為基礎的許可政策連接至使用者或該使用者所屬的群組。

• 將許可政策連接至角色 (以授予跨帳戶許可) – 委派 (例如,想要授予跨帳戶存取時) 涉及在擁有資源的帳戶(信任帳戶) 與需要存取資源的使用者所屬的帳戶 (受信任帳戶) 之間設定信任。許可政策授予角色的使用者對資源執行預定任務所需的許可。信任政策指定允許哪些受信任帳戶授予其使用者擔任角色的許可。如需詳細資訊,請參閱 IAM 術語和概念。

若要授予跨帳戶許可,請將以身分為基礎的許可政策連接至 IAM 角色。例如,帳戶 A 管理員可以建立角色,將跨帳戶許可授予另一個 AWS 帳戶 (例如帳戶 B) 或某個 AWS 服務,如下所示:1. 帳戶 A 管理員會建立 IAM 角色,並將許可政策連接至授予帳戶 A 中資源許可的角色。2. 帳戶 A 管理員將信任政策連接至該角色,識別帳戶 B 做為可擔任該角的委託人。3. 帳戶 B 管理員即可將擔任該角色的許可,委派給帳戶 B 中的任何使用者。這麼做可讓帳戶 B 的使用者

建立或存取帳戶 A 的資源。如果您想要將擔任該角色的許可授予 AWS 服務,則信任政策中的委託人也可以是 AWS 服務委託人。如需詳細資訊,請參閱 IAM 術語和概念中的「委派」。

如需使用 IAM 來委派許可的詳細資訊,請參閱 IAM User Guide中的存取管理。

以下範例政策允許使用者在名為 MyDemoRepo 的儲存庫中建立分支:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codecommit:CreateBranch" ],

API 版本 2015-04-13257

Page 266: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 中的資源範圍

"Resource" : "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo" } ]}

若要限制您帳戶中的使用者可存取的呼叫和資源,請建立特定的 IAM 政策,然後將這些政策連接到 IAM 使用者。如需如何建立 IAM 角色,以及探索適用於 CodeCommit 的範例 IAM 政策陳述式的詳細資訊,請參閱??? (p. 270)。

資源類型政策某些服務 (例如 Amazon S3) 也支援以資源為基礎的許可政策。例如,您可將以資源為基礎的政策連接至 S3儲存貯體,以管理該儲存貯體的存取許可。CodeCommit 不支援以資源為基礎的政策,但您可以使用標籤來識別資源,隨後可將其用於 IAM 政策。如需以標籤為基礎的政策範例,請參閱以身分為基礎的政策 (IAM 政策) (p. 257)。

CodeCommit 中的資源範圍在 CodeCommit 中,您可以將以身分為基礎的政策和許可範圍限定於某些資源,如 CodeCommit 資源與操作 (p. 256)中所述。但是,您無法將 ListRepositories 許可的範圍限定於某個資源。反之,您必須將其範圍開放給所有資源 (使用萬用字元 *)。否則,動作會失敗。

其他所有 CodeCommit 許可的範圍可限定於某些資源。

指定政策元素:資源、動作、效果和委託人您可以建立政策,以允許或拒絕使用者存取資源,或是允許或拒絕使用者在這些資源上採取特定動作。CodeCommit 定義一組公有 API 操作,而這些操作定義使用者如何使用服務,無論是透過 CodeCommit主控台、開發套件、AWS CLI,或直接呼叫這些 API。為授予對這些 API 操作的許可,CodeCommit 定義了一組您可以在政策中指定的動作。

某些 API 操作會需要多個動作的許可。如需資源與 API 操作的詳細資訊,請參閱「CodeCommit 資源與操作 (p. 256)」與 CodeCommit 許可參考 (p. 277).

以下是政策的基本元素:

• 資源 – 若要識別套用政策的資源,您可以使用 Amazon Resource Name (ARN)。如需詳細資訊,請參閱CodeCommit 資源與操作 (p. 256)。

• 動作 – 若要識別您要允許或拒絕的資源操作,您可以使用動作關鍵字。例如,根據指定的 Effect 而定,codecommit:GetBranch 許可會允許或拒絕使用者執行 GetBranch 操作 (取得 CodeCommit 儲存庫中某個分支的詳細資訊)。

• 效果 – 您可以指定使用者請求特定動作時產生的效果 (允許或拒絕)。如果您未明確授予存取 (允許) 資源,則隱含地拒絕存取。您也可以明確拒絕存取資源,以確保即使另一個政策授予存取,使用者也無法存取該資源。

• 委託人 – 在以身分為基礎的政策 (IAM 政策) 中 (CodeCommit 唯一支援的政策類型),政策所連接的使用者就是隱含委託人。

若要進一步了解 IAM 政策語法,請參閱《IAM User Guide》中的 AWS IAM 政策參考。

如需詳列所有 CodeCommit API 動作及其適用之各項資源的表格,請參閱 CodeCommit 許可參考 (p. 277)。

在政策中指定條件當您授與許可時,您可以使用 IAM 的存取政策語言來指定政策生效的條件。例如,建議只在特定日期之後套用政策。如需在政策語言中指定條件的詳細資訊,請參閱《IAM User Guide》中的條件和政策文法。

API 版本 2015-04-13258

Page 267: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南使用以身分為基礎的政策 (IAM 政策)

為了表達條件,您可以使用預先定義的條件金鑰。沒有 CodeCommit 特定的條件金鑰。不過,您可以使用適合的完整 AWS 條件金鑰。如需 AWS 通用金鑰的完整清單,請參閱《IAM User Guide》中的可用的條件金鑰。

對 CodeCommit 使用以身分為基礎的政策 (IAM 政策)

下列以身分為基礎的政策範例示範帳戶管理員如何將許可政策連接至 IAM 身分 (即使用者、群組和角色),以授予許可對 CodeCommit 資源執行操作。

Important

建議您先檢閱介紹主題,理解可用來管理 CodeCommit 資源存取的基本槪念和選項。如需更多詳細資訊,請參閱 管理您的 CodeCommit 資源之存取許可的概觀 (p. 255)。

主題• 使用 CodeCommit 主控台所需的許可 (p. 259)• 在主控台檢視資源 (p. 261)• CodeCommit 的 AWS 受管 (預先定義) 政策 (p. 262)• 客戶受管政策範例 (p. 270)

以下是以身分為基礎的許可政策範例:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codecommit:BatchGetRepositories" ], "Resource" : [ "arn:aws:codecommit:us-east-2:111111111111:MyDestinationRepo", "arn:aws:codecommit:us-east-2:111111111111:MyDemo*" ] } ]}

這個政策有一個陳述式,可讓使用者取得 us-east-2 區域中有關名為 MyDestinationRepo 的CodeCommit 儲存庫,以及名稱開頭為 MyDemo 的所有 CodeCommit 儲存庫的資訊。

使用 CodeCommit 主控台所需的許可若要查看每個 CodeCommit API 操作所需的許可,以及 CodeCommit 操作的詳細資訊,請參閱CodeCommit 許可參考 (p. 277)。

若要允許使用者使用 CodeCommit 主控台,管理員必須將 CodeCommit 動作的許可授予使用者。例如,您可以將 AWSCodeCommitPowerUser 受管政策或其同等政策連接至使用者或群組,如下列許可政策所示:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow",

API 版本 2015-04-13259

Page 268: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南使用 CodeCommit 主控台所需的許可

"Action": [ "codecommit:BatchGet*", "codecommit:Get*", "codecommit:List*", "codecommit:Create*", "codecommit:DeleteBranch", "codecommit:Describe*", "codecommit:Put*", "codecommit:Post*", "codecommit:Merge*", "codecommit:TagResource", "codecommit:Test*", "codecommit:UntagResource", "codecommit:Update*", "codecommit:GitPull", "codecommit:GitPush" ], "Resource": "*" }, { "Sid": "CloudWatchEventsCodeCommitRulesAccess", "Effect": "Allow", "Action": [ "events:DeleteRule", "events:DescribeRule", "events:DisableRule", "events:EnableRule", "events:PutRule", "events:PutTargets", "events:RemoveTargets", "events:ListTargetsByRule" ], "Resource": "arn:aws:events:*:*:rule/codecommit*" }, { "Sid": "SNSTopicAndSubscriptionAccess", "Effect": "Allow", "Action": [ "sns:Subscribe", "sns:Unsubscribe" ], "Resource": "arn:aws:sns:*:*:codecommit*" }, { "Sid": "SNSTopicAndSubscriptionReadAccess", "Effect": "Allow", "Action": [ "sns:ListTopics", "sns:ListSubscriptionsByTopic", "sns:GetTopicAttributes" ], "Resource": "*" }, { "Sid": "LambdaReadOnlyListAccess", "Effect": "Allow", "Action": [ "lambda:ListFunctions" ], "Resource": "*" }, { "Sid": "IAMReadOnlyListAccess", "Effect": "Allow", "Action": [ "iam:ListUsers"

API 版本 2015-04-13260

Page 269: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南在主控台檢視資源

], "Resource": "*" }, { "Sid": "IAMReadOnlyConsoleAccess", "Effect": "Allow", "Action": [ "iam:ListAccessKeys", "iam:ListSSHPublicKeys", "iam:ListServiceSpecificCredentials", "iam:ListAccessKeys", "iam:GetSSHPublicKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "IAMUserSSHKeys", "Effect": "Allow", "Action": [ "iam:DeleteSSHPublicKey", "iam:GetSSHPublicKey", "iam:ListSSHPublicKeys", "iam:UpdateSSHPublicKey", "iam:UploadSSHPublicKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "IAMSelfManageServiceSpecificCredentials", "Effect": "Allow", "Action": [ "iam:CreateServiceSpecificCredential", "iam:UpdateServiceSpecificCredential", "iam:DeleteServiceSpecificCredential", "iam:ResetServiceSpecificCredential" ], "Resource": "arn:aws:iam::*:user/${aws:username}" } ]}

除了透過以身分為基礎的政策而授予使用者的許可,CodeCommit 還需要 AWS Key Management Service(AWS KMS) 動作的許可。IAM 使用者不需要這些動作的明確 Allow 許可,但不能有任何將下列許可設為Deny 的政策連接至使用者:

"kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey"

如需加密和 CodeCommit 的詳細資訊,請參閱AWS KMS 和加密 (p. 302)。

在主控台檢視資源CodeCommit 主控台顯示需要 ListRepositories 許可,才能顯示您所登入的 AWS 區域 AWS 帳戶中的儲存庫清單。主控台還包含 Go to resource (移至資源) 功能,可快速執行不區分大小寫的資源搜尋。此搜尋是在您登入的 AWS 區域中在您的 AWS 帳戶中執行。將會跨以下服務來顯示以下資源:

• AWS CodeBuild:組建專案• AWS CodeCommit:儲存庫

API 版本 2015-04-13261

Page 270: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 的 AWS 受管 (預先定義) 政策

• AWS CodeDeploy:應用程式• AWS CodePipeline:管道

若要跨所有服務中的資源執行此搜尋,您必須擁有以下許可:

• CodeBuild: ListProjects• CodeCommit: ListRepositories• CodeDeploy: ListApplications• CodePipeline: ListPipelines

如果您沒有某項服務的許可,則不會傳回該服務之資源的結果。即使您有許可來檢視資源,但如果有明確的Deny 而無法檢視特定資源,則不會傳回這些資源。

CodeCommit 的 AWS 受管 (預先定義) 政策AWS 提供由 AWS 所建立和管理的獨立 IAM 政策,解決許多常用案例。這些 AWS 受管政策授予常用案例所需的許可。針對相關政策已授予的使用者的責任所需,CodeCommit 的受管政策也提供在其他服務中執行操作的許可,例如 IAM、Amazon SNS 和 Amazon CloudWatch Events。例如,AWSCodeCommitFullAccess政策是管理層級的使用者政策,可讓具有此政策的使用者建立和管理儲存庫的 CloudWatch Events 規則 (名稱開頭為 codecommit 的規則) 和儲存庫相關事件通知的 Amazon SNS 主題 (名稱開頭為 codecommit 的主題),以及在 CodeCommit 中管理儲存庫。

以下可連接到您帳戶中使用者的 AWS 受管政策專屬於 CodeCommit。

AWSCodeCommitFullAccessAWSCodeCommitFullAccess – 授予 CodeCommit 的完整存取。將此政策只套用至管理層級使用者,以授予他們能完全控制 AWS 帳戶中 CodeCommit 儲存庫和相關資源的權利 (包括能夠刪除儲存庫)。

AWSCodeCommitFullAccess 政策包含下列受管陳述式:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:*" ], "Resource": "*" }, { "Sid": "CloudWatchEventsCodeCommitRulesAccess", "Effect": "Allow", "Action": [ "events:DeleteRule", "events:DescribeRule", "events:DisableRule", "events:EnableRule", "events:PutRule", "events:PutTargets", "events:RemoveTargets", "events:ListTargetsByRule" ], "Resource": "arn:aws:events:*:*:rule/codecommit*" }, { "Sid": "SNSTopicAndSubscriptionAccess",

API 版本 2015-04-13262

Page 271: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 的 AWS 受管 (預先定義) 政策

"Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:DeleteTopic", "sns:Subscribe", "sns:Unsubscribe", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*:*:codecommit*" }, { "Sid": "SNSTopicAndSubscriptionReadAccess", "Effect": "Allow", "Action": [ "sns:ListTopics", "sns:ListSubscriptionsByTopic", "sns:GetTopicAttributes" ], "Resource": "*" }, { "Sid": "LambdaReadOnlyListAccess", "Effect": "Allow", "Action": [ "lambda:ListFunctions" ], "Resource": "*" }, { "Sid": "IAMReadOnlyListAccess", "Effect": "Allow", "Action": [ "iam:ListUsers" ], "Resource": "*" }, { "Sid": "IAMReadOnlyConsoleAccess", "Effect": "Allow", "Action": [ "iam:ListAccessKeys", "iam:ListSSHPublicKeys", "iam:ListServiceSpecificCredentials", "iam:ListAccessKeys", "iam:GetSSHPublicKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "IAMUserSSHKeys", "Effect": "Allow", "Action": [ "iam:DeleteSSHPublicKey", "iam:GetSSHPublicKey", "iam:ListSSHPublicKeys", "iam:UpdateSSHPublicKey", "iam:UploadSSHPublicKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "IAMSelfManageServiceSpecificCredentials", "Effect": "Allow", "Action": [ "iam:CreateServiceSpecificCredential", "iam:UpdateServiceSpecificCredential",

API 版本 2015-04-13263

Page 272: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 的 AWS 受管 (預先定義) 政策

"iam:DeleteServiceSpecificCredential", "iam:ResetServiceSpecificCredential" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "CodeStarNotificationsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-notifications:CreateNotificationRule", "codestar-notifications:DescribeNotificationRule", "codestar-notifications:UpdateNotificationRule", "codestar-notifications:DeleteNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codecommit:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsSNSTopicCreateAccess", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*:*:codestar-notifications*" }, { "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" } ]}

AWSCodeCommitPowerUserAWSCodeCommitPowerUser – 允許使用者存取 CodeCommit 的所有功能及儲存庫相關的資源,但不允許他們刪除 CodeCommit 儲存庫,或在其他 AWS 服務 (例如 Amazon CloudWatch Events) 中建立或刪除儲存庫相關的資源。建議將此政策套用到大多數使用者。

AWSCodeCommitPowerUser 政策包含下列受管陳述式:

{ "Version": "2012-10-17", "Statement": [

API 版本 2015-04-13264

Page 273: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 的 AWS 受管 (預先定義) 政策

{ "Effect": "Allow", "Action": [ "codecommit:BatchGet*", "codecommit:Get*", "codecommit:List*", "codecommit:Create*", "codecommit:DeleteBranch", "codecommit:Describe*", "codecommit:Put*", "codecommit:Post*", "codecommit:Merge*", "codecommit:TagResource", "codecommit:Test*", "codecommit:UntagResource", "codecommit:Update*", "codecommit:GitPull", "codecommit:GitPush" ], "Resource": "*" }, { "Sid": "CloudWatchEventsCodeCommitRulesAccess", "Effect": "Allow", "Action": [ "events:DeleteRule", "events:DescribeRule", "events:DisableRule", "events:EnableRule", "events:PutRule", "events:PutTargets", "events:RemoveTargets", "events:ListTargetsByRule" ], "Resource": "arn:aws:events:*:*:rule/codecommit*" }, { "Sid": "SNSTopicAndSubscriptionAccess", "Effect": "Allow", "Action": [ "sns:Subscribe", "sns:Unsubscribe" ], "Resource": "arn:aws:sns:*:*:codecommit*" }, { "Sid": "SNSTopicAndSubscriptionReadAccess", "Effect": "Allow", "Action": [ "sns:ListTopics", "sns:ListSubscriptionsByTopic", "sns:GetTopicAttributes" ], "Resource": "*" }, { "Sid": "LambdaReadOnlyListAccess", "Effect": "Allow", "Action": [ "lambda:ListFunctions" ], "Resource": "*" }, { "Sid": "IAMReadOnlyListAccess", "Effect": "Allow",

API 版本 2015-04-13265

Page 274: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 的 AWS 受管 (預先定義) 政策

"Action": [ "iam:ListUsers" ], "Resource": "*" }, { "Sid": "IAMReadOnlyConsoleAccess", "Effect": "Allow", "Action": [ "iam:ListAccessKeys", "iam:ListSSHPublicKeys", "iam:ListServiceSpecificCredentials", "iam:ListAccessKeys", "iam:GetSSHPublicKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "IAMUserSSHKeys", "Effect": "Allow", "Action": [ "iam:DeleteSSHPublicKey", "iam:GetSSHPublicKey", "iam:ListSSHPublicKeys", "iam:UpdateSSHPublicKey", "iam:UploadSSHPublicKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "IAMSelfManageServiceSpecificCredentials", "Effect": "Allow", "Action": [ "iam:CreateServiceSpecificCredential", "iam:UpdateServiceSpecificCredential", "iam:DeleteServiceSpecificCredential", "iam:ResetServiceSpecificCredential" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "CodeStarNotificationsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-notifications:CreateNotificationRule", "codestar-notifications:DescribeNotificationRule", "codestar-notifications:UpdateNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codecommit*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource" ], "Resource": "*" },

API 版本 2015-04-13266

Page 275: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 的 AWS 受管 (預先定義) 政策

{ "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" } ]}

AWSCodeCommitReadOnlyAWSCodeCommitReadOnly – 授予對 CodeCommit 和其他 AWS 服務中儲存庫相關資源的唯讀存取,以及能夠建立和管理其自己的 CodeCommit 相關資源 (例如其 IAM 使用者在存取儲存庫時所使用的 Git 登入資料和 SSH 金鑰)。將此政策套用至使用者,以授予他們讀取儲存庫內容的權利 (但不得變更內容)。

AWSCodeCommitReadOnly 政策包含下列受管陳述式:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:BatchGet*", "codecommit:Get*", "codecommit:Describe*", "codecommit:List*", "codecommit:GitPull" ], "Resource": "*" }, { "Sid": "CloudWatchEventsCodeCommitRulesReadOnlyAccess", "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListTargetsByRule" ], "Resource": "arn:aws:events:*:*:rule/codecommit*" }, { "Sid": "SNSSubscriptionAccess", "Effect": "Allow", "Action": [ "sns:ListTopics", "sns:ListSubscriptionsByTopic", "sns:GetTopicAttributes" ], "Resource": "*" }, { "Sid": "LambdaReadOnlyListAccess", "Effect": "Allow", "Action": [ "lambda:ListFunctions" ], "Resource": "*" }, { "Sid": "IAMReadOnlyListAccess", "Effect": "Allow",

API 版本 2015-04-13267

Page 276: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 的 AWS 受管 (預先定義) 政策

"Action": [ "iam:ListUsers" ], "Resource": "*" }, { "Sid": "IAMReadOnlyConsoleAccess", "Effect": "Allow", "Action": [ "iam:ListAccessKeys", "iam:ListSSHPublicKeys", "iam:ListServiceSpecificCredentials", "iam:ListAccessKeys", "iam:GetSSHPublicKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "CodeStarNotificationsPowerUserAccess", "Effect": "Allow", "Action": [ "codestar-notifications:DescribeNotificationRule" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codecommit:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules" ], "Resource": "*" } ]}

CodeCommit 受管政策和通知CodeCommit 支援通知,可通知使用者 repositories 的重要變更。 CodeCommit 的受管政策包含通知功能的政策陳述式。如需詳細資訊,請參閱什麼是通知?

完整存取受管政策中的通知相關許可AWSCodeCommitFullAccess 受管政策包含下列陳述式,允許對通知的完整存取權限。已套用此受管政策的使用者,也可以建立和管理通知的 Amazon SNS 主題、讓使用者訂閱和取消訂閱主題,以及列出可選擇做為通知規則目標的主題。

{ "Sid": "CodeStarNotificationsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-notifications:CreateNotificationRule", "codestar-notifications:DescribeNotificationRule", "codestar-notifications:UpdateNotificationRule", "codestar-notifications:DeleteNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*",

API 版本 2015-04-13268

Page 277: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 的 AWS 受管 (預先定義) 政策

"Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codecommit:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsSNSTopicCreateAccess", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*:*:codestar-notifications*" }, { "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" }

唯讀受管政策中的通知相關許可AWSCodeCommitReadOnlyAccess 受管政策包含下列陳述式,允許對通知的唯讀存取權限。適用此受管政策的使用者可以檢視資源的通知,但無法建立、管理或訂閱通知。

{ "Sid": "CodeStarNotificationsPowerUserAccess", "Effect": "Allow", "Action": [ "codestar-notifications:DescribeNotificationRule" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codecommit:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules" ], "Resource": "*" }

其他受管政策中的通知相關許可AWSCodeCommitPowerUser 受管政策包含下列陳述式,允許使用者建立、編輯和訂閱通知。使用者無法刪除通知規則或管理資源的標籤。

API 版本 2015-04-13269

Page 278: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南客戶受管政策範例

{ "Sid": "CodeStarNotificationsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-notifications:CreateNotificationRule", "codestar-notifications:DescribeNotificationRule", "codestar-notifications:UpdateNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codecommit*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource" ], "Resource": "*" }, { "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" }

如需 IAM 和通知的詳細資訊,請參閱 AWS CodeStar Notifications Identity and Access Management。

如需詳細資訊,請參閱 IAM User Guide中的 AWS 受管政策。

客戶受管政策範例您可以建立自己的自訂 IAM 政策,以允許對 CodeCommit 動作與資源的相關許可。您可以將這些自訂政策連接至需要這些許可的 IAM 使用者或群組。您也可以建立自己的自訂 IAM 政策,以整合 CodeCommit 和其他 AWS 服務。

主題• 客戶受管身分政策範例 (p. 270)• 客戶受管整合政策範例 (p. 275)

客戶受管身分政策範例以下範例 IAM 政策授予執行各種 CodeCommit 動作的許可。使用這些政策來限制 IAM 使用者和角色如何存取 CodeCommit。這些政策控制能否使用 CodeCommit 主控台、API、AWS 軟體開發套件或 AWS CLI 來執行動作。

Note

所有範例都會使用 US West (Oregon) Region (us-west-2),並且包含虛構帳戶 ID。

範例

API 版本 2015-04-13270

Page 279: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南客戶受管政策範例

• 範例 1:允許使用者在單一區域執行 CodeCommit 操作 (p. 271)• 範例 2:允許使用者對單一儲存庫使用 Git (p. 271)• 範例 3:允許從指定的 IP 地址範圍連接的使用者存取儲存庫 (p. 272)• 範例 4:拒絕或允許分支上的動作 (p. 273)• 範例 5:在帶有標籤的儲存庫上拒絕或允許動作 (p. 274)

範例 1:允許使用者在單一區域執行 CodeCommit 操作

下列許可政策使用萬用字元 ("codecommit:*"),以允許使用者在 us-east-2 區域 (而不是從其他 AWS 區域) 執行所有 CodeCommit 動作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codecommit:*", "Resource": "arn:aws:codecommit:us-east-2:111111111111:*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-2" } } }, { "Effect": "Allow", "Action": "codecommit:ListRepositories", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-2" } } } ]}

範例 2:允許使用者對單一儲存庫使用 Git

在 CodeCommit 中,GitPull IAM 政策許可套用至任何從 CodeCommit 擷取資料的 Git 用戶端命令,包括git fetch、git clone 等等。同樣地,GitPush IAM 政策許可適用於任何將資料傳送到 CodeCommit 的 Git 用戶端命令。例如,如果 GitPush IAM 政策許可設為 Allow,則使用者可以使用 Git 通訊協定來推送分支刪除。對該 DeleteBranch 使用者的 IAM 操作所套用的任何許可,不影響該推送。DeleteBranch 許可適用於以主控台、AWS CLI、軟體開發套件和 API 執行的動作,但不包括 Git 通訊協定。

以下範例可讓指定的使用者提取自和推送到名為 MyDemoRepo 的 CodeCommit 儲存庫:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource" : "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo" } ]

API 版本 2015-04-13271

Page 280: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南客戶受管政策範例

}

範例 3:允許從指定的 IP 地址範圍連接的使用者存取儲存庫您可以建立政策,只允許 IP 地址在特定 IP 地址範圍內的使用者才能連接到 CodeCommit 儲存庫。這有兩種同樣有效的方法。您可以建立 Deny 政策,規定如果使用者的 IP 地址不在特定區域內,則不允許 CodeCommit 操作,或者,您也可以建立 Allow 政策,規定如果使用者在特定的區塊內,則允許CodeCommit 操作。

您可以建立 Deny 政策,以拒絕所有不在特定 IP 範圍內的使用者存取。例如,您可以將AWSCodeCommitPowerUser 受管政策和客戶受管政策,附加到所有需要存取儲存庫的使用者。以下範例政策對 IP 地址不在指定的 IP 地址區塊 203.0.113.0/16 內的使用者,拒絕所有 CodeCommit 許可:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:*" ], "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "203.0.113.0/16" ] } } } ]}

以下範例政策規定僅當特定使用者的 IP 地址在指定的地址區塊 203.0.113.0/16 內時,才允許他們以AWSCodeCommitPowerUser 受管政策的同等許可,存取名為 MyDemoRepo 的 CodeCommit 儲存庫:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:BatchGetRepositories", "codecommit:CreateBranch", "codecommit:CreateRepository", "codecommit:Get*", "codecommit:GitPull", "codecommit:GitPush", "codecommit:List*", "codecommit:Put*", "codecommit:Post*", "codecommit:Merge*", "codecommit:TagResource", "codecommit:Test*", "codecommit:UntagResource", "codecommit:Update*" ], "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "Condition": { "IpAddress": { "aws:SourceIp": [ "203.0.113.0/16"

API 版本 2015-04-13272

Page 281: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南客戶受管政策範例

] } } } ]}

範例 4:拒絕或允許分支上的動作

您可以建立政策,對使用者拒絕在一或多個分支執行您指定動作的許可。或者,您可以建立政策,以允許他們原本在儲存庫的其他分支上可能沒有的一或多個分支上執行動作。您可以使用這些政策搭配適當的受管(預先定義) 政策。如需更多詳細資訊,請參閱 在 AWS CodeCommit 中限制對分支的推送和合併 (p. 205)。

例如,您可以建立 Deny 政策,以拒絕使用者在名為 MyDemoRepo 的儲存庫中變更名為 master 的分支,包括刪除該分支。您可以使用此政策搭配 AWSCodeCommitPowerUser 受管政策。已套用這兩個政策的使用者能夠建立和刪除分支、建立提取請求,以及執行 AWSCodeCommitPowerUser 允許的其他所有動作,但無法將變更推送到名為 master 的分支、在 CodeCommit 主控台新增或編輯 master 分支中的檔案,或將提取請求的分支合併到 master 分支。由於 Deny 套用到 GitPush,您必須在政策中包含 Null 陳述式,以便使用者從本機儲存庫推送時,允許分析初始 GitPush 呼叫的有效性。

Tip

如果您想要建立政策,以套用到 AWS 帳戶所有儲存庫中名為 master 的所有分支,請在 Resource中指定星號 (*),而非儲存庫 ARN。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:GitPush", "codecommit:DeleteBranch", "codecommit:PutFile", "codecommit:Merge*" ], "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/master" ] }, "Null": { "codecommit:References": false } } } ]}

以下範例政策允許使用者在 AWS 帳戶的所有儲存庫中,變更名為 master 的分支。您可以使用此政策搭配AWSCodeCommitReadOnly 受管政策,以允許對儲存庫的自動化推送。由於 Effect 是 Allow,這個範例政策無法搭配 AWSCodeCommitPowerUser 之類的受管政策一起使用。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [

API 版本 2015-04-13273

Page 282: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南客戶受管政策範例

"codecommit:GitPush", "codecommit:Merge*" ], "Resource": "*", "Condition": { "StringNotEqualsIfExists": { "codecommit:References": [ "refs/heads/master" ] } } } ]}

範例 5:在帶有標籤的儲存庫上拒絕或允許動作您可以建立政策,根據 與這些儲存庫關聯的 AWS 標籤來允許或拒絕儲存庫中的動作,然後將這些政策套用至您設定來管理 IAM 使用者的 IAM 群組。例如,您可以建立一個政策,在 AWS 標籤索引鍵為 Status 且索引鍵值為 Secret 的任何儲存庫上拒絕所有 CodeCommit 動作,然後套用該政策到您為一般開發人員建立的IAM 群組 (Developers)。然後,您需要確保使用這些標記儲存庫的開發人員不屬於該一般 Developers 群組,而是屬於未套用限制政策的其他 IAM 群組 (SecretDevelopers)。

以下範例會在以索引鍵為 Status 且索引鍵值為 Secret 標記的儲存庫上,拒絕所有 CodeCommit 動作:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Deny", "Action" : "codecommit:*" "Resource" : "*", "Condition" : { "StringEquals" : "aws:ResourceTag/Status": "Secret" } } ]}

您可以透過指定特定的儲存庫 (而不是所有儲存庫) 做為資源,來進一步精簡此策略。您也可以建立政策,允許在未以特定標籤標記的所有儲存庫上執行 CodeCommit 動作。例如,以下政策允許在所有儲存庫上執行同等的 AWSCodeCommitPowerUser 許可,但以指定標籤標記的儲存庫除外:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:BatchGetRepositories", "codecommit:CreateBranch", "codecommit:CreateRepository", "codecommit:Get*", "codecommit:GitPull", "codecommit:GitPush", "codecommit:List*", "codecommit:Put*", "codecommit:TagResource", "codecommit:Test*", "codecommit:UntagResource", "codecommit:Update*" ],

API 版本 2015-04-13274

Page 283: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南客戶受管政策範例

"Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Status": "Secret", "aws:ResourceTag/Team": "Saanvi" } } } ]}

客戶受管整合政策範例本節提供範例客戶受管使用者政策,以授予 CodeCommit 與其他 AWS 服務的整合許可。關於允許跨帳戶存取 CodeCommit 儲存庫的特定政策範例,請參閱設定 AWS CodeCommit 儲存庫的跨帳戶存取 (p. 120)。

Note

所有範例都使用 US West (Oregon) Region (us-west-2) (需要區域時),且其中的帳戶 ID 皆為虛構。

範例

• 範例 1:建立允許跨帳戶存取 Amazon SNS 主題的政策 (p. 275)• 範例 2:建立 Amazon Simple Notification Service (Amazon SNS) 主題政策以允許 Amazon CloudWatch

Events 發佈 CodeCommit 事件到主題 (p. 276)• 範例 3:使用 CodeCommit 觸發條件建立適用於 AWS Lambda 整合的政策 (p. 277)

範例 1:建立允許跨帳戶存取 Amazon SNS 主題的政策

您可以設定 CodeCommit 儲存庫,讓程式碼推送或其他事件觸發動作,例如從 Amazon Simple NotificationService (Amazon SNS) 傳送通知。如果您以用來建立 CodeCommit 儲存庫的相同帳戶建立 Amazon SNS 主題,則不需要設定額外的 IAM 政策或許可。您可以建立主題,然後為儲存庫建立觸發。如需更多詳細資訊,請參閱 為 Amazon SNS 主題建立觸發 (p. 94)。

不過,如果您想要將觸發設定為使用另一個 Amazon SNS 帳戶中的 AWS 主題,您必須先以允許CodeCommit 發佈到該主題的政策來設定該主題。從該另一個帳戶,開啟 Amazon SNS 主控台、從清單中選擇主題,然後在 Other topic actions (其他主題動作) 中,選擇 Edit topic policy (編輯主題政策)。在Advanced (進階) 標籤上,修改主題的政策,以允許 CodeCommit 發佈到該主題。例如,如果政策是預設政策,您可以如下修改政策,請將紅紅紅紅紅中的項目,變更為符合您的儲存庫、Amazon SNS 主題和帳戶的值:

{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "SNS:Subscribe", "SNS:ListSubscriptionsByTopic", "SNS:DeleteTopic", "SNS:GetTopicAttributes", "SNS:Publish", "SNS:RemovePermission", "SNS:AddPermission",

API 版本 2015-04-13275

Page 284: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南客戶受管政策範例

"SNS:Receive", "SNS:SetTopicAttributes" ], "Resource": "arn:aws:sns:us-east-2:111111111111:NotMySNSTopic", "Condition": { "StringEquals": { "AWS:SourceOwner": "111111111111" } } }, { "Sid": "CodeCommit-Policy_ID", "Effect": "Allow", "Principal": { "Service": "codecommit.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:111111111111:NotMySNSTopic", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "AWS:SourceAccount": "111111111111" } } } ]}

範例 2:建立 Amazon Simple Notification Service (Amazon SNS) 主題政策以允許Amazon CloudWatch Events 發佈 CodeCommit 事件到主題您可以將 CloudWatch Events 設定為在事件發生時 (包括 CodeCommit 事件) 發佈到 Amazon SNS 主題。若要這樣做,您必須透過為主題建立政策或為主題修改現有的政策,確保 CloudWatch Events 具有發佈事件到Amazon SNS 主題的許可,類似以下內容:

{ Version":"2012-10-17", "Id":"__default_policy_ID", "Statement":[ { "Sid":"__default_statement_ID", "Effect":"Allow", "Principal":"{"AWS":"*"}, "Action":{ "SNS:Publish" ] "Resource":"arn:aws:sns:us-east-2:123456789012:MyTopic", "Condition":{ "StringEquals":{"AWS:SourceOwner":123456789012"} } }, { "Sid":"Allow_Publish_Events", "Effect":"Allow", "Principal":{"Service":"events.amazonaws.com"}, "Action":"sns:Publish", "Resource":"arn:aws:sns:us-east-2:123456789012:MyTopic" } ]}

如需 CodeCommit 和 CloudWatch Events 的詳細資訊,請參閱受支援服務的 CloudWatch Events 事件範例。

API 版本 2015-04-13276

Page 285: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodeCommit 許可參考

範例 3:使用 CodeCommit 觸發條件建立適用於 AWS Lambda 整合的政策

您可以設定 CodeCommit 儲存庫,讓程式碼推送或其他事件觸發動作,例如叫用 AWS Lambda 中的函數。如需詳細資訊,請參閱為 Lambda 函數建立觸發 (p. 98)。此資訊是專屬於觸發條件,不適用於 CloudWatchEvents。

如果您希望觸發直接執行 Lambda 函數 (而不是使用 Amazon SNS 主題來叫用 Lambda 函數),但您沒有在Lambda 主控台設定觸發,則必須在函數的資源政策中包含類似以下的政策:

{ "Statement":{ "StatementId":"Id-1", "Action":"lambda:InvokeFunction", "Principal":"codecommit.amazonaws.com", "SourceArn":"arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "SourceAccount":"111111111111" }}

當您手動設定 CodeCommit 觸發以叫用 Lambda 函數時,您還必須使用 Lambda AddPermission 命令來授予許可讓 CodeCommit 叫用該函數。如需範例,請參閱為現有的 Lambda 函數建立觸發 (p. 101)的允許CodeCommit 執行 Lambda 函數 (p. 101)一節。

如需 Lambda 函數之資源政策的詳細資訊,請參閱《AWS Lambda 開發人員指南》中的 AddPermission和提取/推送事件模型。

CodeCommit 許可參考以下表格列出每個 CodeCommit API 操作、您可以授予許可的相對應動作,以及用於授予許可的資源 ARN格式。CodeCommit API 根據該 API 允許的動作範圍而分組為不同表格。在設定存取控制 (p. 255)和撰寫可連接至 IAM 身分的許可政策 (以身分為基礎的政策) 時,請參考這些表格。

當您建立許可政策時,您需要在政策的 Action 欄位中指定動作。您需要在政策的 Resource 欄位中指定資源值做為 ARN,可包含或不含萬用字元 (*)。

若要在 CodeCommit 政策中表達條件,請使用 AWS 通用條件金鑰。如需 AWS 通用金鑰的完整清單,請參閱《IAM User Guide》中的可用金鑰。

Note

若要指定動作,請使用 codecommit: 字首,後面接著 API 操作名稱 (例如codecommit:GetRepository 或 codecommit:CreateRepository)。

使用萬用字元

若要指定多個動作或資源,請在 ARN 中使用萬用字元 (*)。例如,codecommit:* 指定所有 CodeCommit動作,codecommit:Get* 指定所有以 Get 這個字開頭的 CodeCommit 動作。以下範例授予對所有以MyDemo 為名稱開頭之儲存庫的存取權。

arn:aws:codecommit:us-west-2:111111111111:MyDemo*

您只能針對下表列出的 repository-name 資源使用萬用字元:您不能對 region 或 account-id 資源使用萬用字元。如需萬用字元的詳細資訊,請參閱《IAM User Guide》中的 IAM 識別符。

主題• Git 用戶端命令的必要許可 (p. 278)

API 版本 2015-04-13277

Page 286: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南Git 用戶端命令的必要許可

• 分支上的動作許可 (p. 278)• 合併上的動作許可 (p. 279)• 在提取請求上執行動作的許可 (p. 280)• 在個別檔案上的動作許可 (p. 282)• 對註解的動作許可 (p. 283)• 遞交程式碼上的動作許可 (p. 284)• 儲存庫上的動作許可 (p. 285)• 標籤上的動作許可 (p. 286)• 觸發上的動作許可 (p. 287)• CodePipeline 整合上的動作許可 (p. 287)

Git 用戶端命令的必要許可在 CodeCommit 中,GitPull IAM 政策許可套用至任何從 CodeCommit 擷取資料的 Git 用戶端命令,包括git fetch、git clone 等等。同樣地,GitPush IAM 政策許可適用於任何將資料傳送到 CodeCommit 的 Git 用戶端命令。例如,如果 GitPush IAM 政策許可設為 Allow,則使用者可以使用 Git 通訊協定來推送分支刪除。對該 DeleteBranch 使用者的 IAM 操作所套用的任何許可,不影響該推送。DeleteBranch 許可適用於以主控台、AWS CLI、軟體開發套件和 API 執行的動作,但不包括 Git 通訊協定。

GitPull 和 GitPush 是 IAM 政策許可。不是 API 動作。

對 Git 用戶端命令執行動作的 CodeCommit 必要許可

GitPull

動作:codecommit:GitPull

從 CodeCommit 儲存庫將資訊提取到本機儲存庫時需要。這只是 IAM 政策許可,不是 API 動作。

資源: arn:aws:codecommit:region:account-id:repository-name

GitPush

動作:codecommit:Git Push

從本機儲存庫將資訊推送到 CodeCommit 儲存庫時需要。這只是 IAM 政策許可,不是 API 動作。

資源: arn:aws:codecommit:region:account-id:repository-name

分支上的動作許可以下許可允許或拒絕在 CodeCommit 儲存庫的分支上執行動作。這些許可僅適用於在 CodeCommit 主控台和使用 CodeCommit API 所執行的動作,以及使用 AWS CLI 執行的命令。不適用於可使用 Git 通訊協定執行的類似動作。例如,git show-branch -r 命令會顯示儲存庫的遠端分支清單,及其使用 Git 通訊協定所做的遞交。不受 CodeCommit ListBranches 操作的任何許可所影響。

CodeCommit 在分支上的 API 操作和執行動作的必要許可

CreateBranch

動作:codecommit:CreateBranch

在 CodeCommit 儲存庫中建立分支時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

API 版本 2015-04-13278

Page 287: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南合併上的動作許可

DeleteBranch

動作:codecommit:DeleteBranch

從 CodeCommit 儲存庫中刪除分支時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetBranch

動作:codecommit:GetBranch

取得 CodeCommit 儲存庫中某個分支的詳細資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

ListBranches

動作:codecommit:ListBranches

取得 CodeCommit 儲存庫中的分支清單時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

MergeBranchesByFastForward

動作:codecommit:MergeBranchesByFastForward

在 CodeCommit 儲存庫中使用向前快轉策略合併兩個分支時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

MergeBranchesBySquash

動作:codecommit:ListBranches

在 CodeCommit 儲存庫中使用 squash 策略合併兩個分支時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

MergeBranchesByThreeWay

動作:codecommit:ListBranches

在 CodeCommit 儲存庫中使用三向策略合併兩個分支時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

UpdateDefaultBranch

動作:codecommit:UpdateDefaultBranch

變更 CodeCommit 儲存庫中的預設分支時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

合併上的動作許可以下許可允許或拒絕在 CodeCommit 儲存庫上執行合併動作。這些許可適用於以 CodeCommit 主控台和CodeCommit API 所執行的動作,以及使用 AWS CLI 執行的命令。不適用於可使用 Git 通訊協定執行的類似動作。如需分支的相關許可,請參閱分支上的動作許可 (p. 278)。如需提取請求的相關許可,請參閱在提取請求上執行動作的許可 (p. 280)。

合併命令上動作的 CodeCommit API 操作及必要許可

API 版本 2015-04-13279

Page 288: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南在提取請求上執行動作的許可

BatchDescribeMergeConflicts

動作:codecommit:BatchDescribeMergeConflicts

傳回 CodeCommit 儲存庫中遞交之間合併衝突的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

CreateUnreferencedMergeCommit

動作:codecommit:CreateUnreferencedMergeCommit

在 CodeCommit 儲存庫中兩個分支或遞交之間建立未參照遞交時需要,以便比較它們並識別任何潛在的衝突。

資源: arn:aws:codecommit:region:account-id:repository-name

DescribeMergeConflicts

動作:codecommit:DescribeMergeConflicts

傳回 CodeCommit 儲存庫中潛在合併之檔案的基礎、來源和目的地版本之間合併衝突的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetMergeCommit

動作:codecommit:GetMergeCommit

傳回 CodeCommit 儲存庫中來源與目的地遞交之間合併的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetMergeOptions

動作:codecommit:GetMergeOptions

傳回 CodeCommit 儲存庫中兩個分支或遞交指標間可用合併選項的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

在提取請求上執行動作的許可以下許可允許或拒絕在 CodeCommit 儲存庫的提取請求上執行動作。這些許可適用於以 CodeCommit 主控台和 CodeCommit API 所執行的動作,以及使用 AWS CLI 執行的命令。不適用於可使用 Git 通訊協定執行的類似動作。如需註解的相關許可,請參閱對註解的動作許可 (p. 283)。

CodeCommit 在提取請求上的 API 操作和執行動作的必要許可

BatchGetPullRequests

動作:codecommit:BatchGetPullRequests

傳回 CodeCommit 儲存庫中一或多個提取請求的相關資訊時需要。這只是 IAM 政策許可,不是您可呼叫的 API 動作。

資源: arn:aws:codecommit:region:account-id:repository-name

CreatePullRequest

動作:codecommit:CreatePullRequest

在 CodeCommit 儲存庫中建立提取請求時需要。

API 版本 2015-04-13280

Page 289: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南在提取請求上執行動作的許可

資源: arn:aws:codecommit:region:account-id:repository-name

DescribePullRequestEvents

動作:codecommit:DescribePullRequestEvents

傳回一或多個提取請求事件的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetCommentsForPullRequest

動作:codecommit:GetCommentsForPullRequest

傳回在提取請求上所做的註解時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetCommitsFromMergeBase

動作:codecommit:GetCommitsFromMergeBase

在潛在合併情況下傳回遞交之間差異的相關資訊時需要。這只是 IAM 政策許可,不是您可呼叫的 API 動作。

資源: arn:aws:codecommit:region:account-id:repository-name

GetMergeConflicts

動作:codecommit:GetMergeConflicts

在提取請求中的來源和目的地分支之間,傳回合併衝突的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetPullRequest

動作:codecommit:GetPullRequest

傳回提取請求的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

ListPullRequests

動作:codecommit:ListPullRequests

列出儲存庫中的提取請求時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

MergePullRequestByFastForward

動作:codecommit:MergePullRequestByFastForward

關閉提取請求和嘗試使用向前快轉合併策略將提取請求的來源分支合併到目的地分支時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

MergePullRequestBySquash

動作:codecommit:MergePullRequestBySquash

關閉提取請求和嘗試使用 squash 合併策略將提取請求的來源分支合併到目的地分支時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

API 版本 2015-04-13281

Page 290: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南在個別檔案上的動作許可

MergePullRequestByThreeWay

動作:codecommit:MergePullRequestByThreeWay

關閉提取請求和嘗試使用三方合併選項將提取請求的來源分支合併到目的地分支時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

PostCommentForPullRequest

動作:codecommit:PostCommentForPullRequest

在 CodeCommit 儲存庫中的提取請求上張貼註解時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

UpdatePullRequestDescription

動作:codecommit:UpdatePullRequestDescription

變更 CodeCommit 儲存庫中提取請求的描述時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

UpdatePullRequestStatus

動作:codecommit:UpdatePullRequestStatus

變更 CodeCommit 儲存庫中提取請求的狀態時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

UpdatePullRequestTitle

動作:codecommit:UpdatePullRequestTitle

變更 CodeCommit 儲存庫中提取請求的標題時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

在個別檔案上的動作許可以下許可允許或拒絕在 CodeCommit 儲存庫的個別檔案上執行動作。這些許可僅適用於在 CodeCommit 主控台、使用 CodeCommit API 所執行的動作,以及使用 AWS CLI 執行的命令。不適用於可使用 Git 通訊協定執行的類似動作。例如,git push 命令使用 Git 通訊協定將新的和變更的檔案推送到 CodeCommit 儲存庫。不受 CodeCommit PutFile 操作的任何許可所影響。

CodeCommit 在個別檔案上的 API 操作和執行動作的必要許可

DeleteFile

動作:codecommit:DeleteFile

從 CodeCommit 主控台的 CodeCommit 儲存庫中的指定分支刪除指定的檔案時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetBlob

動作:codecommit:GetBlob

從 CodeCommit 主控台檢視 CodeCommit 儲存庫中個別檔案的編碼內容時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

API 版本 2015-04-13282

Page 291: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南對註解的動作許可

GetFile

動作:codecommit:GetFile

從 CodeCommit 主控台檢視 CodeCommit 儲存庫中指定檔案的編碼內容和其中繼資料時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetFolder

動作:codecommit:GetFolder

從 CodeCommit 主控台檢視 CodeCommit 儲存庫中特定資料夾的內容時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

PutFile

動作:codecommit:PutFile

從 CodeCommit 主控台、CodeCommit API 或 AWS CLI 將新的或已修改的檔案新增至 CodeCommit 儲存庫時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

對註解的動作許可以下許可允許或拒絕對在 CodeCommit 儲存庫的註解執行動作。這些許可適用於以 CodeCommit 主控台和CodeCommit API 所執行的動作,以及使用 AWS CLI 執行的命令。如需提取請求中註解的相關許可,請參閱在提取請求上執行動作的許可 (p. 280)。

CodeCommit 在儲存庫上的 API 操作和執行動作的必要許可

DeleteCommentContent

動作:codecommit:DeleteCommentContent

將儲存庫中的變更、檔案或遞交所做的註解內容刪除時需要。無法刪除註解,但可以移除註解的內容 (如果使用者具有此許可)。

資源: arn:aws:codecommit:region:account-id:repository-name

GetComment

動作:codecommit:GetComment

傳回對 CodeCommit 儲存庫中的變更、檔案或遞交所做註解的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetCommentsForComparedCommit

動作:codecommit:GetCommentsForComparedCommit

傳回對 CodeCommit 儲存庫中兩個遞交之間比較所做註解的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

PostCommentForComparedCommit

動作:codecommit:PostCommentForComparedCommit

對 CodeCommit 儲存庫中兩個遞交之間的比較做註解時需要。

API 版本 2015-04-13283

Page 292: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南遞交程式碼上的動作許可

資源: arn:aws:codecommit:region:account-id:repository-name

PostCommentReply

動作:codecommit:PostCommentReply

對 CodeCommit 儲存庫中遞交之間的比較或提取請求的註解建立回覆時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

UpdateComment

動作:codecommit:UpdateComment

在遞交之間的比較或提取請求上編輯註解時需要。只有註解作者才能編輯註解。

資源: arn:aws:codecommit:region:account-id:repository-name

遞交程式碼上的動作許可以下許可允許或拒絕在遞交到 CodeCommit 儲存庫的程式碼上執行動作。這些許可適用於以 CodeCommit主控台和 CodeCommit API 所執行的動作,以及使用 AWS CLI 執行的命令。不適用於可使用 Git 通訊協定執行的類似動作。例如,git commit 命令使用 Git 通訊協定為儲存庫中的分支建立遞交。不受 CodeCommitCreateCommit 操作的任何許可所影響。

明確拒絕其中某些許可可能導致 CodeCommit 主控台發生非預期的後果。例如,將 GetTree 設為 Deny可防止使用者在主控台瀏覽儲存庫的內容,但無法阻止使用者檢視儲存庫中某個檔案的內容 (例如,如果以電子郵件將檔案的連結傳送給他們)。將 GetBlob 設為 Deny 可防止使用者檢視檔案的內容,但無法阻止使用者瀏覽儲存庫的結構。將 GetCommit 設為 Deny 可防止使用者擷取遞交的詳細資訊。將GetObjectIdentifier 設為 Deny 可封鎖程式碼瀏覽的大部分功能。如果您在政策中將這三個動作全部設為 Deny,則套用該政策的使用者無法在 CodeCommit 主控台瀏覽程式碼。

CodeCommit 在遞交之程式碼上的 API 操作和執行動作的必要許可

BatchGetCommits

動作:codecommit:BatchGetCommits

傳回 CodeCommit 儲存庫中一或多個遞交的相關資訊時需要。這只是 IAM 政策許可,不是您可呼叫的API 動作。

資源: arn:aws:codecommit:region:account-id:repository-name

CreateCommit

動作:codecommit:CreateCommit

建立遞交時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetCommit

動作:codecommit:GetCommit

傳回遞交的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetCommitHistory

動作:codecommit:GetCommitHistory

API 版本 2015-04-13284

Page 293: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南儲存庫上的動作許可

傳回儲存庫中遞交歷史記錄的相關資訊時需要。這只是 IAM 政策許可,不是您可呼叫的 API 動作。

資源: arn:aws:codecommit:region:account-id:repository-name

GetDifferences

動作:codecommit:GetDifferences

傳回遞交指標 (例如,分支、標籤、HEAD、遞交 ID,或其他完整參考) 中的差異相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetObjectIdentifier

動作:codecommit:GetObjectIdentifier

將 Blob、樹狀結構和遞交解析為其識別符時需要。這只是 IAM 政策許可,不是您可呼叫的 API 動作。

資源: arn:aws:codecommit:region:account-id:repository-name

GetReferences

動作:codecommit:GetReferences

傳回所有參考時需要,例如分支和標籤。這只是 IAM 政策許可,不是您可呼叫的 API 動作。

資源: arn:aws:codecommit:region:account-id:repository-name

GetTree

動作:codecommit:GetTree

從 CodeCommit 主控台檢視 CodeCommit 儲存庫中特定樹狀結構的內容時需要。這只是 IAM 政策許可,不是您可呼叫的 API 動作。

資源: arn:aws:codecommit:region:account-id:repository-name

儲存庫上的動作許可以下許可允許或拒絕在 CodeCommit 儲存庫執行動作。這些許可適用於以 CodeCommit 主控台和CodeCommit API 所執行的動作,以及使用 AWS CLI 執行的命令。不適用於可使用 Git 通訊協定執行的類似動作。

CodeCommit 在儲存庫上的 API 操作和執行動作的必要許可

BatchGetRepositories

動作:codecommit:BatchGetRepositories

取得 AWS 帳戶中多個 CodeCommit 儲存庫的相關資訊時需要。在 Resource 中,您必須指定允許 (或拒絕) 使用者取得資訊的所有 CodeCommit 儲存庫的名稱。

資源: arn:aws:codecommit:region:account-id:repository-name

CreateRepository

動作:codecommit:CreateRepository

建立 CodeCommit 儲存庫時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

DeleteRepository

動作:codecommit:DeleteRepository

API 版本 2015-04-13285

Page 294: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南標籤上的動作許可

刪除 CodeCommit 儲存庫時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetRepository

動作:codecommit:GetRepository

取得單一 CodeCommit 儲存庫的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

ListRepositories

動作:codecommit:ListRepositories

取得 AWS 帳戶之多個 CodeCommit 儲存庫的名稱和系統 ID 清單時需要。針對此動作,Resource 唯一允許的值是所有儲存庫 (*)。

資源: *

UpdateRepositoryDescription

動作:codecommit:UpdateRepositoryDescription

變更 CodeCommit 儲存庫的描述時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

UpdateRepositoryName

動作:codecommit:UpdateRepositoryName

變更 CodeCommit 儲存庫的名稱時需要。在 Resource 中,您必須指定允許變更的 CodeCommit 儲存庫和新的儲存庫名稱。

資源: arn:aws:codecommit:region:account-id:repository-name

標籤上的動作許可以下許可允許或拒絕在 CodeCommit 資源的 AWS 標籤上執行動作。

在觸發上的 CodeCommit API 操作和執行動作的必要許可

ListTagsForResource

動作:codecommit:ListTagsForResource

傳回在 CodeCommit 的資源上所設定 AWS 標籤的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

TagResource

動作:codecommit:TagResource

新增或編輯儲存庫的 AWS 標籤時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

UntagResource

動作:codecommit:UntagResource

API 版本 2015-04-13286

Page 295: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南觸發上的動作許可

從 CodeCommit 中資源移除 AWS 標籤時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

觸發上的動作許可以下許可允許或拒絕在 CodeCommit 儲存庫的觸發上執行動作。

CodeCommit 在觸發上的 API 操作和執行動作的必要許可

GetRepositoryTriggers

動作:codecommit:GetRepositoryTriggers

傳回為儲存庫而設定的觸發相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

PutRepositoryTriggers

動作:codecommit:PutRepositoryTriggers

為儲存庫建立、編輯或刪除觸發時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

TestRepositoryTriggers

動作:codecommit:TestRepositoryTriggers

將資料傳送到為觸發而設定的主題或函數以測試儲存庫觸發的功能時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

CodePipeline 整合上的動作許可為了讓 CodePipeline 在管道的來源動作中使用 CodeCommit 儲存庫,您必須將下表列出的所有許可授予CodePipeline 的服務角色。如果服務角色中未設定這些許可,或設定為 Deny,則變更儲存庫時不會自動執行管道,也無法手動發佈變更。

CodeCommit 在 CodePipeline 整合上的 API 操作和執行動作的必要許可

GetBranch

動作:codecommit:GetBranch

取得 CodeCommit 儲存庫中某個分支的詳細資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

GetCommit

動作:codecommit:GetCommit

傳回遞交的相關資訊時需要。

資源: arn:aws:codecommit:region:account-id:repository-name

UploadArchive

動作:codecommit:UploadArchive

API 版本 2015-04-13287

Page 296: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南CodePipeline 整合上的動作許可

允許 CodePipeline 的服務角色將儲存庫變更上傳至管道時需要。這只是 IAM 政策許可,不是您可呼叫的 API 動作。

資源: arn:aws:codecommit:region:account-id:repository-name

GetUploadArchiveStatus

動作:codecommit:GetUploadArchiveStatus

判斷存檔上傳的狀態時需要,無論是進行中、完成、已取消或發生錯誤。這只是 IAM 政策許可,不是您可呼叫的 API 動作。

資源: arn:aws:codecommit:region:account-id:repository-name

CancelUploadArchive

動作:codecommit:CancelUploadArchive

取消將存檔上傳至管道時需要。這只是 IAM 政策許可,不是您可呼叫的 API 動作。

資源: arn:aws:codecommit:region:account-id:repository-name

API 版本 2015-04-13288

Page 297: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南區域和 Git 連線端點

AWS CodeCommit 參考以下參考主題可協助您更了解 CodeCommit、Git、AWS 區域、產品限制等等。

主題• AWS CodeCommit 的區域和 Git 連線端點 (p. 289)• 以 VPC 端點界面使用 AWS CodeCommit (p. 295)• AWS CodeCommit 中的限制 (p. 297)• 臨時存取 AWS CodeCommit 儲存庫 (p. 299)• AWS Key Management Service 和 AWS CodeCommit 儲存庫的加密 (p. 302)• 使用 AWS CloudTrail 記錄 AWS CodeCommit API 呼叫 (p. 303)• AWS CodeCommit 命令列參考 (p. 308)• 基本 Git 命令 (p. 311)

AWS CodeCommit 的區域和 Git 連線端點每個 CodeCommit 儲存庫都有一個相關聯的 AWS 區域。CodeCommit 提供區域性端點,讓您向服務提出請求。此外,在可使用 CodeCommit 的每個區域中,CodeCommit 都提供 SSH 和 HTTPS 通訊協定的 Git 連線端點。

本指南中的所有範例對 US East (Ohio) 中的 Git 使用相同的端點 URL:git-codecommit.us-east-2.amazonaws.com。不過,當您使用 Git 並設定連線時,請務必選擇與 CodeCommit 儲存庫的AWS 託管區域相符的 Git 連線端點。例如,如果您想對 US East (N. Virginia) 中的儲存庫建立連線,請使用端點 URL git-codecommit.us-east-1.amazonaws.com。這也適用於 API 呼叫。當您使用 AWS CLI或軟體開發套件對 CodeCommit 儲存庫建立連線時,請確保您使用儲存庫的正確區域性端點。

主題• CodeCommit 支援的區域 (p. 289)• Git 連線端點 (p. 290)• 適用於 CodeCommit 的伺服器指紋 (p. 293)

CodeCommit 支援的區域您可以在以下 AWS 區域中建立和使用 CodeCommit 儲存庫:

• US East (Ohio)• US East (N. Virginia)• US West (N. California)• US West (Oregon)• Europe (Ireland)• Europe (London)• Europe (Paris)• Europe (Frankfurt)• Europe (Stockholm)• Asia Pacific (Tokyo)• Asia Pacific (Singapore)

API 版本 2015-04-13289

Page 298: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南Git 連線端點

• Asia Pacific (Sydney)• Asia Pacific (Seoul)• Asia Pacific (Mumbai)• Asia Pacific (Hong Kong)• South America (São Paulo)• Middle East (Bahrain)• Canada (Central)• AWS GovCloud (US-West)• AWS GovCloud (US-East)

CodeCommit 已新增對某些地區聯邦資訊處理標準 (FIPS) 第 140-2 號公報政府標準的支援。如需有關 FIPS和 FIPS 端點的詳細資訊,請參閱聯邦資訊處理標準 (FIPS) 140-2 概觀。對於支援 FIPS 的 Git 連線端點的詳細資訊,請參閱 Git 連線端點 (p. 290)。

如需 AWS CLI、服務及 CodeCommit API 呼叫之區域性端點的詳細資訊,請參閱 AWS 區域與端點。

Git 連線端點當您將 Git 連線配置到 CodeCommit 儲存庫時,請使用以下 URL:

AWS CodeCommit 的 Git 連線端點

區域名稱 區域 端點 URL 通訊協定

US East (Ohio) us-east-2 https://git-codecommit.us-east-2.amazonaws.com

HTTPS

US East (Ohio) us-east-2 ssh://git-codecommit.us-east-2.amazonaws.com

SSH

US East (Ohio) us-east-2 https://git-codecommit-fips.us-east-2.amazonaws.com

HTTPS

US East (N. Virginia) us-east-1 https://git-codecommit.us-east-1.amazonaws.com

HTTPS

US East (N. Virginia) us-east-1 ssh://git-codecommit.us-east-1.amazonaws.com

SSH

US East (N. Virginia) us-east-1 https://git-codecommit-fips.us-east-1.amazonaws.com

HTTPS

US West (Oregon) us-west-2 https://git-codecommit.us-west-2.amazonaws.com

HTTPS

US West (Oregon) us-west-2 ssh://git-codecommit.us-west-2.amazonaws.com

SSH

US West (Oregon) us-west-2 https://git-codecommit-fips.us-west-2.amazonaws.com

HTTPS

US West (N. California) us-west-1 https://git-codecommit.us-west-1.amazonaws.com

HTTPS

API 版本 2015-04-13290

Page 299: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南Git 連線端點

區域名稱 區域 端點 URL 通訊協定

US West (N. California) us-west-1 ssh://git-codecommit.us-west-1.amazonaws.com

SSH

US West (N. California) us-west-1 https://git-codecommit-fips.us-west-1.amazonaws.com

HTTPS

Europe (Ireland) eu-west-1 https://git-codecommit.eu-west-1.amazonaws.com

HTTPS

Europe (Ireland) eu-west-1 ssh://git-codecommit.eu-west-1.amazonaws.com

SSH

Asia Pacific (Tokyo) ap-northeast-1 https://git-codecommit.ap-northeast-1.amazonaws.com

HTTPS

Asia Pacific (Tokyo) ap-northeast-1 ssh://git-codecommit.ap-northeast-1.amazonaws.com

SSH

Asia Pacific (Singapore) ap-southeast-1 https://git-codecommit.ap-southeast-1.amazonaws.com

HTTPS

Asia Pacific (Singapore) ap-southeast-1 ssh://git-codecommit.ap-southeast-1.amazonaws.com

SSH

Asia Pacific (Sydney) ap-southeast-2 https://git-codecommit.ap-southeast-2.amazonaws.com

HTTPS

Asia Pacific (Sydney) ap-southeast-2 ssh://git-codecommit.ap-southeast-2.amazonaws.com

SSH

Europe (Frankfurt) eu-central-1 https://git-codecommit.eu-central-1.amazonaws.com

HTTPS

Europe (Frankfurt) eu-central-1 ssh://git-codecommit.eu-central-1.amazonaws.com

SSH

Asia Pacific (Seoul) ap-northeast-2 https://git-codecommit.ap-northeast-2.amazonaws.com

HTTPS

Asia Pacific (Seoul) ap-northeast-2 ssh://git-codecommit.ap-northeast-2.amazonaws.com

SSH

South America (SãoPaulo)

sa-east-1 https://git-codecommit.sa-east-1.amazonaws.com

HTTPS

South America (SãoPaulo)

sa-east-1 ssh://git-codecommit.sa-east-1.amazonaws.com

SSH

Europe (London) eu-west-2 https://git-codecommit.eu-west-2.amazonaws.com

HTTPS

Europe (London) eu-west-2 ssh://git-codecommit.eu-west-2.amazonaws.com

SSH

Asia Pacific (Mumbai) ap-south-1 https://git-codecommit.ap-south-1.amazonaws.com

HTTPS

API 版本 2015-04-13291

Page 300: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南Git 連線端點

區域名稱 區域 端點 URL 通訊協定

Asia Pacific (Mumbai) ap-south-1 ssh://git-codecommit.ap-south-1.amazonaws.com

SSH

Canada (Central) ca-central-1 https://git-codecommit.ca-central-1.amazonaws.com

HTTPS

Canada (Central) ca-central-1 ssh://git-codecommit.ca-central-1.amazonaws.com

SSH

Canada (Central) ca-central-1 https://git-codecommit-fips.ca-central-1.amazonaws.com

HTTPS

Europe (Paris) eu-west-3 https://git-codecommit.eu-west-3.amazonaws.com

HTTPS

Europe (Paris) eu-west-3 ssh://git-codecommit.eu-west-3.amazonaws.com

SSH

AWS GovCloud (US-West)

us-gov-west-1 https://git-codecommit.us-gov-west-1.amazonaws.com

HTTPS

AWS GovCloud (US-West)

us-gov-west-1 ssh://git-codecommit.us-gov-west-1.amazonaws.com

SSH

AWS GovCloud (US-West)

us-gov-west-1 https://git-codecommit-fips.us-gov-west-1.amazonaws.com

HTTPS

AWS GovCloud (US-East)

us-gov-east-1 https://git-codecommit.us-gov-east-1.amazonaws.com

HTTPS

AWS GovCloud (US-East)

us-gov-east-1 ssh://git-codecommit.us-gov-east-1.amazonaws.com

SSH

AWS GovCloud (US-East)

us-gov-east-1 https://git-codecommit-fips.us-gov-east-1.amazonaws.com

HTTPS

Europe (Stockholm) eu-north-1 https://git-codecommit.eu-north-1.amazonaws.com

HTTPS

Europe (Stockholm) eu-north-1 ssh://git-codecommit.eu-north-1.amazonaws.com

SSH

Middle East (Bahrain) me-south-1 https://git-codecommit.me-south-1.amazonaws.com

HTTPS

Middle East (Bahrain) me-south-1 ssh://git-codecommit.me-south-1.amazonaws.com

SSH

API 版本 2015-04-13292

Page 301: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南適用於 CodeCommit 的伺服器指紋

適用於 CodeCommit 的伺服器指紋下表列出 CodeCommit 中適用於 Git 連線端點的公有指紋。將端點新增到已知主機檔案時,在驗證過程中會顯示這些伺服器指紋。

適用於 CodeCommit 的公有指紋

伺服器 加密雜湊類型 指紋

git-codecommit.us-east-2.amazonaws.com

MD5 a9:6d:03:ed:08:42:21:be:06:e1:e0:2a:d1:75:31:5e

git-codecommit.us-east-2.amazonaws.com

SHA256 3lBlW2g5xn/NA2Ck6dyeJIrQOWvn7n8UEs56fG6ZIzQ

git-codecommit.us-east-1.amazonaws.com

MD5 a6:9c:7d:bc:35:f5:d4:5f:8b:ba:6f:c8:bc:d4:83:84

git-codecommit.us-east-1.amazonaws.com

SHA256 eLMY1j0DKA4uvDZcl/KgtIayZANwX6t8+8isPtotBoY

git-codecommit.us-west-2.amazonaws.com

MD5 a8:68:53:e3:99:ac:6e:d7:04:7e:f7:92:95:77:a9:77

git-codecommit.us-west-2.amazonaws.com

SHA256 0pJx9SQpkbPUAHwy58UVIq0IHcyo1fwCpOOuVgcAWPo

git-codecommit.eu-west-1.amazonaws.com

MD5 93:42:36:ea:22:1f:f1:0f:20:02:4a:79:ff:ea:12:1d

git-codecommit.eu-west-1.amazonaws.com

SHA256 tKjRkOL8dmJyTmSbeSdN1S8F/f0iql3RlvqgTOP1UyQ

git-codecommit.ap-northeast-1.amazonaws.com

MD5 8e:a3:f0:80:98:48:1c:5c:6f:59:db:a7:8f:6e:c6:cb

git-codecommit.ap-northeast-1.amazonaws.com

SHA256 Xk/WeYD/K/bnBybzhiuu4dWpBJtXPf7E30jHU7se4Ow

git-codecommit.ap-southeast-1.amazonaws.com

MD5 65:e5:27:c3:09:68:0d:8e:b7:6d:94:25:80:3e:93:cf

git-codecommit.ap-southeast-1.amazonaws.com

SHA256 ZIsVa7OVzxrTIf+Rk4UbhPv6Es22mSB3uTBojfPXIno

git-codecommit.ap-southeast-2.amazonaws.com

MD5 7b:d2:c1:24:e6:91:a5:7b:fa:c1:0c:35:95:87:da:a0

git-codecommit.ap-southeast-2.amazonaws.com

SHA256 nYp+gHas80HY3DqbP4yanCDFhqDVjseefVbHEXqH2Ec

git-codecommit.eu-central-1.amazonaws.com

MD5 74:5a:e8:02:fc:b2:9c:06:10:b4:78:84:65:94:22:2d

git-codecommit.eu-central-1.amazonaws.com

SHA256 MwGrkiEki8QkkBtlAgXbYt0hoZYBnZF62VY5RzGJEUY

git-codecommit.ap-northeast-2.amazonaws.com

MD5 9f:68:48:9b:5f:fc:96:69:39:45:58:87:95:b3:69:ed

API 版本 2015-04-13293

Page 302: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南適用於 CodeCommit 的伺服器指紋

伺服器 加密雜湊類型 指紋

git-codecommit.ap-northeast-2.amazonaws.com

SHA256 eegAPQrWY9YsYo9ZHIKOmxetfXBHzAZd8Eya53Qcwko

git-codecommit.sa-east-1.amazonaws.com

MD5 74:99:9d:ff:2b:ef:63:c6:4b:b4:6a:7f:62:c5:4b:51

git-codecommit.sa-east-1.amazonaws.com

SHA256 kW+VKB0jpRaG/ZbXkgbtMQbKgEDK7JnISV3SVoyCmzU

git-codecommit.us-west-1.amazonaws.com

MD5 3b:76:18:83:13:2c:f8:eb:e9:a3:d0:51:10:32:e7:d1

git-codecommit.us-west-1.amazonaws.com

SHA256 gzauWTWXDK2u5KuMMi5vbKTmfyerdIwgSbzYBODLpzg

git-codecommit.eu-west-2.amazonaws.com

MD5 a5:65:a6:b1:84:02:b1:95:43:f9:0e:de:dd:ed:61:d3

git-codecommit.eu-west-2.amazonaws.com

SHA256 r0Rwz5k/IHp/QyrRnfiM9j02D5UEqMbtFNTuDG2hNbs

git-codecommit.ap-south-1.amazonaws.com

MD5 da:41:1e:07:3b:9e:76:a0:c5:1e:64:88:03:69:86:21

git-codecommit.ap-south-1.amazonaws.com

SHA256 hUKwnTj7+Xpx4Kddb6p45j4RazIJ4IhAMD8k29itOfE

git-codecommit.ca-central-1.amazonaws.com

MD5 9f:7c:a2:2f:8c:b5:74:fd:ab:b7:e1:fd:af:46:ed:23

git-codecommit.ca-central-1.amazonaws.com

SHA256 Qz5puafQdANVprLlj6r0Qyh4lCNsF6ob61dGcPtFS7w

git-codecommit.eu-west-3.amazonaws.com

MD5 1b:7f:97:dd:d7:76:8a:32:2c:bd:2c:7b:33:74:6a:76

git-codecommit.eu-west-3.amazonaws.com

SHA256 uw7c2FL564jVoFgtc+ikzILnKBsZz7t9+CFdSJjKbLI

git-codecommit.us-gov-west-1.amazonaws.com

MD5 9f:6c:19:3b:88:cd:e8:88:1b:9c:98:6a:95:31:8a:69

git-codecommit.us-gov-west-1.amazonaws.com

SHA256 djXQoSIFcg8vHe0KVH1xW/gOF9X37tWTqu4Hkng75x4

git-codecommit.us-gov-east-1.amazonaws.com

MD5 00:8d:b5:55:6f:05:78:05:ed:ea:cb:3f:e6:f0:62:f2

git-codecommit.us-gov-east-1.amazonaws.com

SHA256 fVb+R0z7qW7minenW+rUpAABRCRBTCzmETAJEQrg98

git-codecommit.eu-north-1.amazonaws.com

MD5 8e:53:d8:59:35:88:82:fd:73:4b:60:8a:50:70:38:f4

git-codecommit.eu-north-1.amazonaws.com

SHA256 b6KSK7xKq+V8jl7iuAcjqXsG7zkqoUZZmmhYYFBq1wQ

git-codecommit.me-south-1.amazonaws.com

MD5 0e:39:28:56:d5:41:e6:8d:fa:81:45:37:fb:f3:cd:f7

API 版本 2015-04-13294

Page 303: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南以 VPC 端點界面使用 AWS CodeCommit

伺服器 加密雜湊類型 指紋

git-codecommit.me-south-1.amazonaws.com

SHA256 O+NToCGgjrHekiBuOl0ad7ROGEsz+DBLXOd/c9wc0JU

git-codecommit.ap-east-1.amazonaws.com

MD5 a8:00:3d:24:52:9d:61:0e:f6:e3:88:c8:96:01:1c:fe

git-codecommit.ap-east-1.amazonaws.com

SHA256 LafadYwUYW8hONoTRpojbjNs9IRnbEwHtezD3aAIBX0

以 VPC 端點界面使用 AWS CodeCommit如果您使用 Amazon Virtual Private Cloud (Amazon VPC) 來託管 AWS 資源,您可以在 VPC 和CodeCommit 之間建立私有連線。您可以使用此連線來啟用 CodeCommit 不用透過公有網際網路在 VPC 與您的資源進行通訊。

Amazon VPC 是一項 AWS 服務,您可用來在自己定義的虛擬網路中啟動 AWS 資源。您可利用 VPC 來控制您的網路設定,例如 IP 地址範圍、子網路、路由表和網路閘道。使用 VPC 端點,AWS 網路會處理 VPC 和AWS 服務之間的路由,而您可用 IAM 政策控制服務資源的存取。

若要將您的 VPC 連接到 CodeCommit,請定義 CodeCommit 的 VPC 端點介面。界面端點是包含私有 IP地址的彈性網路界面,做為通往支援之 AWS 服務的流量進入點。端點能為 CodeCommit 提供可靠、可擴展性的連線,無須使用網際網路閘道、網路位址轉譯 (NAT) 執行個體或 VPN 連接。如需詳細資訊,請參閱Amazon VPC User Guide中的什麼是 Amazon VPC。

Note

其他提供 VPC 支援並與 CodeCommit 整合的 AWS 服務 (例如 AWS CodePipeline) 可能不支援在該整合中使用 Amazon VPC 端點。例如,CodePipeline 和 CodeCommit 之間的流量不能受限於VPC 子網路範圍。

VPC 端點界面是由 AWS PrivateLink 的 AWS 技術,讓私有通訊使用於彈性網路界面與 AWS 服務之間的私有 IP 地址。如需詳細資訊,請參閱 AWS PrivateLink。

下列步驟適用於 Amazon VPC 的使用者。如需詳細資訊,請參閱 Amazon VPC User Guide 中的入門。

可用性CodeCommit 目前在下列 AWS 區域支援 VPC 端點:

• US East (Ohio)• US East (N. Virginia)• US West (N. California)• US West (Oregon)• Europe (Ireland)• Europe (London)• Europe (Paris)• Europe (Frankfurt)• Asia Pacific (Tokyo)• Asia Pacific (Singapore)• Asia Pacific (Sydney)• Asia Pacific (Seoul)

API 版本 2015-04-13295

Page 304: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南建立適用於 CodeCommit 的 VPC 端點

• Asia Pacific (Mumbai)• South America (São Paulo)• Canada (Central)• AWS GovCloud (US-West)• Europe (Stockholm)• Middle East (Bahrain)

建立適用於 CodeCommit 的 VPC 端點若要開始使用 CodeCommit 搭配您的 VPC,請為 CodeCommit 建立界面 VPC 端點。CodeCommit 需要有單獨的端點來執行 Git 操作和 CodeCommit API 操作。根據您的商業需求,您可能需要建立多個 VPC 端點。當您為 CodeCommit 建立 VPC 端點時,請選擇 AWS Services (AWS 服務),然後在 Service Name (服務名稱) 中選擇下列選項:

• com.amazonaws.region.git-codecommit:如果您想要為 CodeCommit 儲存庫的 Git 操作建立 VPC端點,請選擇此選項。例如,如果您的使用者在與 CodeCommit 儲存庫互動時使用 Git 用戶端和 gitpull、git commit 及 git push 等命令,請選擇此選項。

• com.amazonaws.region.git-codecommit-fips:如果您想要為 CodeCommit 儲存庫的 Git 操作建立 VPC端點,而且此端點符合聯邦資訊處理標準 (Federal Information Processing Standard,FIPS) 第 140-2 號公報美國政府標準,請選擇此選項。

• com.amazonaws.region.codecommit:如果您想要為 CodeCommit API 操作建立 VPC 端點,請選擇此選項。例如,如果您的使用者使用 AWS CLI、CodeCommit API 或 AWS 開發套件來與 CodeCommit 互動,以執行 CreateRepository、ListRepositories 和 PutFile 等操作,請選擇此選項。

• com.amazonaws.region.codecommit-fips:如果您想要為 CodeCommit API 操作建立 VPC 端點,而且此端點符合聯邦資訊處理標準 (Federal Information Processing Standard,FIPS) 第 140-2 號公報美國政府標準,請選擇此選項。

建立 CodeCommit 的 VPC 端點政策您可以為 CodeCommit 的 Amazon VPC 端點建立一個政策,在當中您可以指定:

• 可執行動作的委託人。• 可執行的動作。• 可在其上執行動作的資源。

例如,一家公司可能需要限制只能從 VPC 的網路地址範圍存取儲存庫。您可以在此處查看這類政策的範例:範例 3:允許從指定的 IP 地址範圍連接的使用者存取儲存庫 (p. 272)。該公司為USEast (Ohio) 區域設定兩個 Git VPC 端點:com.amazonaws.us-east-2.codecommit 和 com-amazonaws.us-east-2.git-codecommit-fips。他們希望只在符合 FIPS 的端點上才允許將程式碼推送至名為 MyDemoRepo 的 CodeCommit 儲存庫。為了強制此行為,他們在 com.amazonaws.us-east-2.codecommit 端點上設定類似如下的政策,以明確拒絕 Git 推送動作:

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "codecommit:GitPush", "Effect": "Deny",

API 版本 2015-04-13296

Page 305: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南限制

"Resource": "arn:aws:codecommit:us-west-2:123456789012:MyDemoRepo", "Principal": "*" } ]}

如需詳細資訊,請參閱 Amazon VPC User Guide中的建立界面端點。

AWS CodeCommit 中的限制下表說明 CodeCommit 中的限制。如需可變更之限制的詳細資訊,請參閱 AWS 服務限制。

儲存庫數量 每個 AWS 帳戶上限為 1,000 個。此限制可以變更。如需詳細資訊,請參閱 AWS 服務限制。

區域 以下區域提供 CodeCommit:

• US East (Ohio)• US East (N. Virginia)• US West (N. California)• US West (Oregon)• Europe (Ireland)• Europe (London)• Europe (Paris)• Europe (Frankfurt)• Europe (Stockholm)• Asia Pacific (Tokyo)• Asia Pacific (Singapore)• Asia Pacific (Sydney)• Asia Pacific (Seoul)• Asia Pacific (Mumbai)• Asia Pacific (Hong Kong)• South America (São Paulo)• Middle East (Bahrain)• Canada (Central)• AWS GovCloud (US-West)• AWS GovCloud (US-East)

如需更多詳細資訊,請參閱 區域和 Git 連線端點 (p. 289)。

單一推送中的參考數目 最多 4,000 個,包括建立、刪除和更新。儲存庫中參考的整體數目不受限制。

儲存庫中的觸發數目 上限為 10。

儲存庫名稱 字母、數字、句號、底線和連字號的任何組合,長度介於 1 到 100 個字元之間。名稱區分大小寫。儲存庫名稱的結尾不可以是 .git,並且不得包含以下任何字元:! ? @ # $ % ^ & * ( ) + = { }[ ] | \ / > < ~ ` ' " ; :

API 版本 2015-04-13297

Page 306: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南限制

分支名稱 允許字元的任何組合,長度介於 1 到 256 個字元之間。分支名稱不可以:

• 開頭或結尾為斜線 (/) 或句號 (.)。• 包含單一字元 @• 包含兩或多個連續的句號 (..)、正斜線 (//) 或以

下字元的組合:@{

• 包含以下任何字元:? ^ * [ \ ~ :。

分支名稱為參考。分支名稱的許多限制是根據 Git 參考標準。如需詳細資訊,請參閱 Git 內部 和 check-ref-format。

觸發名稱 字母、數字、句號、底線和連字號的任何組合,長度介於 1 到 100 個字元之間。觸發名稱不可以包含空格或逗號。

儲存庫標籤 標籤會區分大小寫。每個資源的上限為 50。

儲存庫標籤金鑰名稱 Unicode 字母、數字、空格,以及 UTF-8 與 1 之間允許字元的任何組合,長度為 128 個字元。允許的字元如下 + - = . _ : / @

標籤金鑰名稱必須是唯一的,而且每個金鑰只能有一個值。標籤不能:

• 以 aws: 開頭• 只包含空格• 以空格結尾• 包含表情圖示或任何以下字元:? ^ * [ \ ~ !# $ % & * ( ) > < | " ' ` [ ] { } ;

儲存庫標籤值 Unicode 字母、數字、空格,以及 UTF-8 與 1 之間允許字元的任何組合,長度為 256 個字元。允許的字元如下 + - = . _ : / @

金鑰只能有一個值,但多個金鑰可以有相同的值。標籤不能:

• 以 aws: 開頭• 只包含空格• 以空格結尾• 包含表情圖示或任何以下字元: ? ^ * [ \~ ! # $ % & * ( ) > < | " ' ` [ ]{ } ;

在主控台中進行遞交的使用者名稱 允許的字元的任何組合,長度介於 1 到 1,024 個字元之間。

在主控台中進行遞交的電子郵件地址 允許字元的任何組合,長度介於 1 到 256 個字元之間。不會對電子郵件地址進行驗證。

儲存庫描述 字元的任何組合,長度介於 0 到 1,000 個字元之間。儲存庫的描述為選用。

API 版本 2015-04-13298

Page 307: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南臨時存取

遞交的中繼資料 使用 CodeCommit 主控台、API 或 AWS CLI 時,組合的遞交中繼資料 (例如作者資訊、日期、父遞交清單和遞交訊息的組合) 上限為 20 MB。

Note

在單一遞交中,所有檔案的數目或大小總計沒有限制,只要資料不超過 20 MB、個別檔案不超過 6 MB 且單一 Blob 不超過 2GB 就沒問題。

檔案大小 使用 CodeCommit 主控台、API 或 AWS CLI 時,任何個別檔案的上限為 6 MB。

檔案路徑 允許的字元的任何組合,長度介於 1 到 4,096 個字元之間。檔案路徑必須是明確的名稱,指定檔案和檔案的確切位置。檔案路徑的深度不能超過 20 個目錄。此外,檔案路徑不可以:

• 包含空白字串• 是相對檔案路徑• 包含以下任何字元組合:

/./

/../

//

• 結尾為尾端斜線或反斜線

檔案名稱和路徑必須是完整合格。本機電腦上檔案的名稱和路徑必須遵循該作業系統的標準。在為CodeCommit 儲存庫中的檔案指定路徑時,請使用Amazon Linux 標準。

Git Blob 大小 上限為 2 GB。

Note

在單一遞交中,所有檔案的數目或大小總計沒有限制,只要中繼資料不超過 6 MB 且單一 Blob 不超過 2 GB 就沒問題。

觸發的自訂資料 這是最多為 1,000 個字元的字串欄位。無法用於傳遞任何動態參數。

Commit Visualizer 中的分支圖表顯示 每頁 35 個。如果單一頁面上超過 35 個分支,則不會出現圖表。

臨時存取 AWS CodeCommit 儲存庫您可以允許使用者臨時存取您的 AWS CodeCommit 儲存庫。您這樣做可能是為了允許 IAM 使用者存取不同AWS 帳戶中的 CodeCommit 儲存庫 (稱為跨帳戶存取的技術)。如需設定儲存庫跨帳戶存取的逐步解說,請參閱 設定 AWS CodeCommit 儲存庫的跨帳戶存取 (p. 120)。

您也可以為想要或必須透過下列方法來驗證身分的使用者設定存取:

API 版本 2015-04-13299

Page 308: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 1:完成事前準備

• 安全性聲明標記語言 (SAML)• Multi-factor authentication (MFA)• 聯合• Login with Amazon• Amazon Cognito• Facebook• Google• OpenID Connect (OIDC) 相容的身分供應商

Note

以下資訊僅適用於使用 AWS CLI 登入資料協助程式來連接到 CodeCommit 儲存庫。您不能使用SSH 或 Git 登入資料和 HTTPS 並搭配臨時存取登入資料來連接到 CodeCommit 儲存庫。

為了讓使用者臨時存取您的 CodeCommit 儲存庫,請完成以下步驟。

如果必須符合下列所有要求,請不要完成這些步驟:

• 您已登入 Amazon EC2 執行個體。• 您使用 Git 和 HTTPS 搭配 AWS CLI 登入資料協助程式,從 Amazon EC2 執行個體連接到 CodeCommit

儲存庫。• Amazon EC2 執行個體具有已連接的 IAM 執行個體描述檔,其中包含 適用於 Linux, macOS, or Unix 上使

用 AWS CLI 登入資料協助程式來建立 HTTPS 連線 (p. 33)或 適用於 Windows 上使用 AWS CLI 登入資料協助程式的 HTTPS 連線 (p. 37)中所述的存取許可。

• 您已在 Amazon EC2 執行個體上安裝和設定 Git 登入資料協助程式,如 適用於 Linux, macOS, or Unix 上使用 AWS CLI 登入資料協助程式來建立 HTTPS 連線 (p. 33)或 適用於 Windows 上使用 AWS CLI 登入資料協助程式的 HTTPS 連線 (p. 37)所述。

符合前述要求的 Amazon EC2 執行個體已設定為替您將臨時存取登入資料傳遞給 CodeCommit。

步驟 1:完成事前準備完成設定步驟讓使用者臨時存取您的 CodeCommit 儲存庫。

• 關於跨帳戶存取,請參閱逐步解說:使用 IAM 角色委派跨 AWS 帳戶的存取。• 關於 SAML 和聯合,請參閱使用組織的身份驗證系統以授予存取 AWS 資源和關於以 AWS STS SAML 2.0

為基礎的聯合。• 關於 MFA,請參閱使用多重因素認證 (MFA) 裝置搭配 AWS 和建立臨時安全登入資料以啟用 IAM 使用者

的存取權。• 關於 Login with Amazon、Amazon Cognito、Facebook、Google 或與 OIDC 相容的任何身分供應商,請

參閱關於 AWS STS Web 聯合身分。

使用AWS CodeCommit 的身份驗證與存取控制 (p. 254)中的資訊,指定您要暫時授予使用者的 CodeCommit許可。

步驟 2:取得臨時存取登入資料根據您設定臨時存取的方式而定,使用者可以透過下列其中一種方法取得臨時存取登入資料:

• 如果是跨帳戶存取,則呼叫 AWS CLI assume-role 命令或呼叫 AWS STS AssumeRole API。

API 版本 2015-04-13300

Page 309: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 3:以您的臨時存取登入資料來設定 AWS CLI

• 如果是 SAML,則呼叫 AWS CLI assume-role-with-saml 命令或 AWS STS AssumeRoleWithSAML API。• 如果是聯合,則呼叫 AWS CLI assume-role 或 get-federation-token 命令或 AWS STS AssumeRole 或

GetFederationToken API。• 如果是 MFA,則呼叫 AWS CLI get-session-token 命令或 AWS STS GetSessionToken API。• 如果是 Login with Amazon、Amazon Cognito、Facebook、Google 或與 OIDC 相容的任何身分供應商,

則呼叫 AWS CLI assume-role-with-web-identity 命令或 AWS STS AssumeRoleWithWebIdentity API。

您的使用者應該收到一組臨時存取登入資料,這包括 AWS 存取金鑰 ID、私密存取金鑰和工作階段字符。您的使用者應該記下這三個值,因為在下一個步驟中會用到。

步驟 3:以您的臨時存取登入資料來設定 AWS CLI您的使用者必須將開發機器設定為使用這些臨時存取登入資料。

1. 遵循設定 (p. 5)中的指示來設定 AWS CLI。使用 aws configure 命令來設定描述檔。

Note

繼續之前,請確定 gitconfig 檔案已設定為使用您在 AWS CLI 中設定的 AWS 描述檔。2. 您可以使用下列其中一種方法,將臨時存取登入資料與使用者的 AWS CLI 指名的描述檔相關聯。請勿

使用 aws configure 命令。

• 在 ~/.aws/credentials 檔案 (針對 Linux) 或 %UserProfile%.aws\credentials檔案 (適用於 Windows) 中,將 aws_access_key_id、aws_secret_access_key 和aws_session_token 設定值新增到使用者的 AWS CLI 指定設定檔中:

[CodeCommitProfileName]aws_access_key_id=TheAccessKeyIDaws_secret_access_key=TheSecretAccessKeyaws_session_token=TheSessionToken

-或是-• 設定 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY 和 AWS_SESSION_TOKEN 環境變

數:

針對 Linux, macOS, or Unix:

export AWS_ACCESS_KEY_ID=TheAccessKeyexport AWS_SECRET_ACCESS_KEY=TheSecretAccessKeyexport AWS_SESSION_TOKEN=TheSessionToken

Windows:

set AWS_ACCESS_KEY_ID=TheAccessKeyset AWS_SECRET_ACCESS_KEY=TheSecretAccessKeyset AWS_SESSION_TOKEN=TheSessionToken

如需詳細資訊,請參閱《AWS Command Line Interface 使用者指南》中的設定 AWS Command LineInterface。

3. 使用 AWS CLI 指定設定檔來設定與暫時存取登入資料相關聯的 Git 登入資料協助程式。

• Linux, macOS, or Unix (p. 33)• Windows (p. 37)

API 版本 2015-04-13301

Page 310: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南步驟 4:存取 CodeCommit 儲存庫

依照以下步驟時,請不要呼叫 aws configure 命令。您已透過登入資料檔案或環境變數指定暫時存取登入資料。如果您使用環境變數而非登入資料檔案,請在 Git 登入資料協助程式中,指定 default 做為設定檔名稱。

步驟 4:存取 CodeCommit 儲存庫假設您的使用者已按照連接到儲存庫 (p. 77)中的指示來連接到 CodeCommit 儲存庫,那麼使用者會使用 Git來呼叫 git clone、git push 和 git pull,以複製、推送至和提取自他或她具有暫時存取的 CodeCommit 儲存庫。

當使用者使用 AWS CLI 並指定 AWS CLI 與暫時登入資料相關聯的指定設定檔,將會傳回範圍限制在該設定檔的結果。

如果使用者收到 403: Forbidden 錯誤,以回應對 Git 命令或 AWS CLI 中命令的呼叫,暫時存取登入資料可能已過期。使用者必須回到步驟 2 (p. 300) 並取得一組新的暫時存取登入資料。

AWS Key Management Service 和 AWSCodeCommit 儲存庫的加密

CodeCommit 儲存庫中的資料在傳輸中和靜態下會加密。當資料推送至 CodeCommit 儲存庫 時 (例如,呼叫git push),CodeCommit 會將收到的資料加密再存放於儲存庫。從 CodeCommit 儲存庫提取資料時 (例如,呼叫 git pull),CodeCommit 會解密資料,再傳送給發起人。這假設與推送或提取請求相關聯的 IAM 使用者已通過 AWS 的身份驗證。傳送或接收的資料是利用 HTTPS 或 SSH 加密網路通訊協定來傳輸。

第一次在您的 AWS 帳戶中的新 AWS 區域建立 CodeCommit 儲存庫時,CodeCommit 會在 AWS KeyManagement Service (AWS KMS) 中的該相同區域建立 AWS 受管金鑰 (aws/codecommit 金鑰)。只有CodeCommit 會使用此金鑰 (aws/codecommit 金鑰)。此金鑰存放在您的 AWS 帳戶中。CodeCommit 使用此 AWS 受管金鑰,以加密和解密您的 AWS 帳戶中該區域內的這個或所有其他 CodeCommit 儲存庫中的資料。

Important

針對預設金鑰 aws/codecommit,CodeCommit 會執行以下 AWS KMS 動作。IAM 使用者不需要這些動作的明確許可,但不能有任何拒絕對 aws/codecommit 金鑰執行這些動作的政策連接至使用者。當您建立第一個儲存庫時,您的 AWS 帳戶不可以將下列任何許可設為 deny:

• "kms:Encrypt"

• "kms:Decrypt"

• "kms:ReEncrypt"

• "kms:GenerateDataKey"

• "kms:GenerateDataKeyWithoutPlaintext"

• "kms:DescribeKey"

若要查看 CodeCommit 所產生的 AWS 受管金鑰的相關資訊,請執行下列動作:

1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/.

2. 在服務導覽窗格中,選擇 Encryption Keys (加密金鑰)。(出現歡迎頁面時,請選擇 Get Started Now (立即開始使用)。)

3. 在 Filter (篩選條件) 中,選擇您的儲存庫的 AWS 區域。例如,若儲存庫是在 us-east-2 中建立,請確保篩選條件已設為US East (Ohio)。

API 版本 2015-04-13302

Page 311: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南加密內容

4. 在加密金鑰清單中,選擇別名為 aws/codecommit 的 AWS 受管金鑰。隨即顯示 AWS 受管金鑰的基本資訊。

您不能變更或刪除此 AWS 受管金鑰。您無法在 AWS KMS 中使用客戶受管金鑰來加密或解密 CodeCommit儲存庫中的資料。

加密內容每一個與 AWS KMS 整合的服務會指定適用於加密和解密操作的加密環境。加密環境是 AWS KMS 用來檢查資料完整性的額外驗證資訊。如果為加密操作指定,則在解密操作中也必須指定。否則,解密會失敗。CodeCommit 使用 CodeCommit 儲存庫 ID 代表加密內容。您可以使用 get-repository 命令或CodeCommit 主控台來尋找儲存庫 ID。在 AWS CloudTrail 日誌中搜尋 CodeCommit 儲存庫 ID,了解 AWSKMS 中已對哪個金鑰採取哪些加密操作,以加密或解密 CodeCommit 儲存庫中的資料。

如需 AWS KMS 的詳細資訊,請參閱《AWS Key Management Service 開發人員指南》。

使用 AWS CloudTrail 記錄 AWS CodeCommit API呼叫

CodeCommit 與 AWS CloudTrail 服務整合,可記錄 CodeCommit 中使用者、角色或 AWS 服務採取的動作。CloudTrail 會將 CodeCommit 所有 API 呼叫擷取為事件,包括從 CodeCommit 主控台的呼叫、您的 Git用戶端,和從程式碼對 CodeCommit API 的呼叫。如果您建立追蹤記錄,就可以持續將 CloudTrail 事件傳送至 Amazon S3 儲存貯體,包括 CodeCommit 的事件。如果您不設定追蹤記錄,仍然可以透過 CloudTrail 主控台中的 Event history (事件歷史記錄) 檢視最新的事件。使用由 CloudTrail 收集的資訊,您就可以判斷送至CodeCommit 的請求、提出請求的 IP 地址、提出請求的人員、提出請求的時間,以及其他詳細資訊。

若要進一步了解 CloudTrail,請參閱 AWS CloudTrail User Guide。

CodeCommit 中的 CloudTrail 資訊當您建立帳戶時,系統會在您的 AWS 帳戶中啟用 CloudTrail。當 CodeCommit 中發生活動時,該活動會記錄在 CloudTrail 事件中,其他 AWS 服務事件則記錄於 Event history (事件歷程記錄)。您可以檢視、搜尋和下載 AWS 帳戶的最新事件。如需詳細資訊,請參閱使用 CloudTrail 事件歷程記錄檢視事件。

如需您 AWS 帳戶中正在進行事件的記錄 (包含 CodeCommit 的事件),請建立線索。追蹤記錄可讓CloudTrail 將日誌檔案交付到 Amazon S3 儲存貯體。根據預設,當您在主控台建立追蹤記錄時,追蹤記錄會套用到所有區域。該追蹤會記錄來自 AWS 分割區中所有區域的事件,並將日誌檔案交付到您指定的Amazon S3 儲存貯體。此外,您可以設定其他 AWS 服務,以進一步分析和處理 CloudTrail 日誌中所收集的事件資料。如需詳細資訊,請參閱:

• 建立追蹤的概觀• CloudTrail 支援的服務和整合• 設定 CloudTrail 的 Amazon SNS 通知• 接收多個區域的 CloudTrail 日誌檔案及接收多個帳戶的 CloudTrail 日誌檔案

在 AWS 帳戶中啟用 CloudTrail 記錄後,即會在 CloudTrail 日誌檔案中追蹤對 CodeCommit 動作進行的 API呼叫,系統會在此處將這些呼叫與其他 AWS 服務記錄一起寫入。CloudTrail 會根據時間週期和檔案大小,決定何時建立和寫入新檔案。

CloudTrail 會記錄所有 CodeCommit 動作,包括目前未在《AWS CodeCommit API Reference》中記載,而是以存取許可參考並且記載於CodeCommit 許可參考 (p. 277)的動作 (例如

API 版本 2015-04-13303

Page 312: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南了解 CodeCommit 日誌檔案項目

GetObjectIdentifier)。例如,對 ListRepositories (位於 AWS CLI、aws codecommitlist-repositories)、CreateRepository (aws codecommit create-repository) 和PutRepositoryTriggers (aws codecommit put-repository-triggers) 動作的呼叫會在CloudTrail 日誌檔案中產生項目,以及對 GitPull 和 GitPush 的 Git 用戶端呼叫。此外,如果已將CodeCommit 儲存庫設定為 CodePipeline 中管道的來源,您會看見對 CodeCommit 的存取許可動作的呼叫,例如來自 CodePipeline 的 UploadArchive。由於 CodeCommit 使用 AWS Key Management Service來加密和解密儲存庫,您也會在 CloudTrail 日誌中看到從 CodeCommit 對 Encrypt 和來自 AWS KMS 之Decrypt 動作的呼叫。

每個日誌項目都會包含產生要求之人員的資訊。日誌記錄中的使用者身分資訊,可協助您判斷下列事項:

• 該請求是否使用根或 IAM 使用者登入資料提出• 該請求是以角色或聯合身分使用者的臨時安全登入資料提出,還是由擔任的角色提出• 該請求是否由另一項 AWS 服務提出

如需詳細資訊,請參閱 CloudTrail 使用者身分元素。

您可以視需要在 Amazon S3 儲存貯體存放您的日誌檔,但也可以定義 Amazon S3 生命週期規則,自動封存或刪除日誌檔案。根據預設,您的日誌檔案使用 Amazon S3 伺服器端加密 (SSE) 進行加密。

了解 CodeCommit 日誌檔案項目CloudTrail 日誌檔案可包含一個或多個日誌項目。每一項目均列出多個 JSON 格式的事件。一個日誌事件為任何來源提出的單一請求,並包含請求動作、動作的日期和時間、請求參數等資訊。日誌項目並非公有 API呼叫的有序堆疊追蹤,因此不會以任何特定順序顯示。

Note

此範例已格式化,以提升可讀性。在 CloudTrail 日誌檔中,所有項目和事件會合併為單一列。這個範例也已受限於單一 CodeCommit 項目。在真實的 CloudTrail 日誌檔中,您將看到來自多個 AWS服務的項目和事件。

內容• 範例:用於列出 CodeCommit 儲存庫的日誌項目 (p. 304)• 範例:用於建立 CodeCommit 儲存庫的日誌項目 (p. 305)• 範例:對 CodeCommit 儲存庫執行 Git 提取呼叫的日誌項目 (p. 306)• 範例:成功推送至 CodeCommit 儲存庫的日誌項目 (p. 307)

範例:用於列出 CodeCommit 儲存庫的日誌項目以下範例顯示的是示範 CloudTrail 動作的 ListRepositories 日誌項目。

Note

雖然 ListRepositories 會傳回儲存庫的清單,非可變回應不會記錄在 CloudTrail 日誌中,因此responseElements 在日誌檔案中會顯示為 null。

{ "eventVersion":"1.05", "userIdentity": { "type":"IAMUser", "principalId":"AIDACKCEVSQ6C2EXAMPLE", "arn":"arn:aws:iam::444455556666:user/Mary_Major", "accountId":"444455556666", "accessKeyId":"AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major"

API 版本 2015-04-13304

Page 313: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南了解 CodeCommit 日誌檔案項目

}, "eventTime":"2016-12-14T17:57:36Z", "eventSource":"codecommit.amazonaws.com", "eventName":"ListRepositories", "awsRegion":"us-east-1", "sourceIPAddress":"203.0.113.12", "userAgent":"aws-cli/1.10.53 Python/2.7.9 Windows/8 botocore/1.4.43", "requestParameters":null, "responseElements":null, "requestID":"cb8c167e-EXAMPLE", "eventID":"e3c6f4ce-EXAMPLE", "readOnly":true, "eventType":"AwsApiCall", "apiVersion":"2015-04-13", "recipientAccountId":"444455556666"}

範例:用於建立 CodeCommit 儲存庫的日誌項目以下範例顯示的是示範 US East (Ohio) Region 中 CreateRepository 動作的 CloudTrail 日誌項目。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "CreateRepository", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "aws-cli/1.10.53 Python/2.7.9 Windows/8 botocore/1.4.43", "requestParameters": { "repositoryDescription": "Creating a demonstration repository.", "repositoryName": "MyDemoRepo" }, "responseElements": { "repositoryMetadata": { "arn": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "creationDate": "Dec 14, 2016 6:19:14 PM", "repositoryId": "8afe792d-EXAMPLE", "cloneUrlSsh": "ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo", "repositoryName": "MyDemoRepo", "accountId": "111122223333", "cloneUrlHttp": "https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo", "repositoryDescription": "Creating a demonstration repository.", "lastModifiedDate": "Dec 14, 2016 6:19:14 PM" } }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": false, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ],

API 版本 2015-04-13305

Page 314: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南了解 CodeCommit 日誌檔案項目

"eventType": "AwsApiCall", "apiVersion": "2015-04-13", "recipientAccountId": "111122223333"}

範例:對 CodeCommit 儲存庫執行 Git 提取呼叫的日誌項目以下範例顯示的是示範所在本機儲存庫已是最新的 GitPull 動作的 CloudTrail 日誌項目。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "GitPull", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "git/2.11.0.windows.1", "requestParameters": null, "responseElements": null, "additionalEventData": { "protocol": "HTTP", "dataTransferred": false, "repositoryName": "MyDemoRepo", "repositoryId": "8afe792d-EXAMPLE", }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": true, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

以下範例顯示的是示範所在本機儲存庫不是最新 (因此資料是從 CodeCommit 儲存庫傳輸至本機儲存庫) 之GitPull 動作的 CloudTrail 日誌項目。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com",

API 版本 2015-04-13306

Page 315: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南了解 CodeCommit 日誌檔案項目

"eventName": "GitPull", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "git/2.10.1", "requestParameters": null, "responseElements": null, "additionalEventData": { "protocol": "HTTP", "capabilities": [ "multi_ack_detailed", "side-band-64k", "thin-pack" ], "dataTransferred": true, "repositoryName": "MyDemoRepo", "repositoryId": "8afe792d-EXAMPLE", "shallow": false }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": true, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

範例:成功推送至 CodeCommit 儲存庫的日誌項目以下範例顯示的是示範成功的 CloudTrail 動作的 GitPush 日誌項目。GitPush 動作在日誌項目中顯示兩次表示推送成功。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "GitPush", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "git/2.10.1", "requestParameters": null, "responseElements": null, "additionalEventData": { "protocol": "HTTP", "dataTransferred": false, "repositoryName": "MyDemoRepo", "repositoryId": "8afe792d-EXAMPLE", }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": true,

API 版本 2015-04-13307

Page 316: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南命令列參考

"resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"},{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "GitPush", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "git/2.10.1", "requestParameters": { "references": [ { "commit": "100644EXAMPLE", "ref": "refs/heads/master" } ] }, "responseElements": null, "additionalEventData": { "protocol": "HTTP", "capabilities": [ "report-status", "side-band-64k" ], "dataTransferred": true, "repositoryName": "MyDemoRepo", "repositoryId": "8afe792d-EXAMPLE", }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": false, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

AWS CodeCommit 命令列參考此參考協助您了解如何使用 AWS CLI。

API 版本 2015-04-13308

Page 317: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南命令列參考

安裝及設定 AWS CLI

1. 在本機電腦上,下載並安裝 AWS CLI。這是從命令列與 CodeCommit 互動的必要步驟。如需詳細資訊,請參閱開始設定 AWS 命令列界面。

Note

CodeCommit 只能與 AWS CLI 版本 1.7.38 版和更新版本 一起使用。若要判斷您已安裝的AWS CLI 版本,請執行 aws --version 命令。若要將舊版的 AWS CLI 更新為最新版本,請參閱安裝 AWS Command Line Interface。

2. 執行此命令來驗證已安裝 AWS CLI 的 CodeCommit 命令:

aws codecommit help

此命令會傳回 CodeCommit 命令清單。3. 使用 configure 命令來設定 AWS CLI,如下所示:

aws configure

出現提示時,請針對要用於 CodeCommit 的 IAM 使用者,指定其 AWS 存取金鑰和 AWS 私密存取金鑰。此外,請務必指定儲存庫所在的 AWS 區域,例如 us-east-2。系統提示您輸入預設輸出格式時,請指定 json。例如:

AWS Access Key ID [None]: Type your target AWS access key ID here, and then press EnterAWS Secret Access Key [None]: Type your target AWS secret access key here, and then press EnterDefault region name [None]: Type a supported region for CodeCommit here, and then press EnterDefault output format [None]: Type json here, and then press Enter

若要連接到另一個 AWS 區域中的儲存庫或資源,您必須以預設區域名稱來重新設定 AWSCLI。CodeCommit 支援的預設區域名稱包括:

• us-east-2• us-east-1• eu-west-1• us-west-2• ap-northeast-1• ap-southeast-1• ap-southeast-2• eu-central-1• ap-northeast-2• sa-east-1• us-west-1• eu-west-2• ap-south-1• ca-central-1• us-gov-west-1• us-gov-east-1• eu-north-1• me-south-1

API 版本 2015-04-13309

Page 318: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南命令列參考

如需 CodeCommit 和 AWS 區域的詳細資訊,請參閱區域和 Git 連線端點 (p. 289)。如需 IAM、存取金鑰和私密金鑰的詳細資訊,請參閱如何取得登入資料?和管理 IAM 使用者的存取金鑰。

若要檢視所有可用 CodeCommit 命令的清單,請執行下列命令:

aws codecommit help

若要檢視 CodeCommit 命令的相關資訊,請執行下列命令,其中 command-name 是命令名稱 (例如,create-repository):

aws codecommit command-name help

請參閱以下章節以檢視 AWS CLI 中的命令描述和範例用法:

• batch-describe-merge-conflicts (p. 164)• batch-get-commits (p. 179)• batch-get-repositories (p. 113)• create-branch (p. 204)• create-commit (p. 173)• create-pull-request (p. 142)• create-repository (p. 76)• create-unreferenced-merge-commit (p. 166)• delete-branch (p. 214)• delete-comment-content (p. 194)• delete-file (p. 136)• delete-repository (p. 128)• describe-merge-conflicts (p. 165)• describe-pull-request-events (p. 145)• get-blob (p. 181)• get-branch (p. 209)• get-comment (p. 194)• get-comments-for-compared-commit (p. 193)• get-comments-for-pull-request (p. 150)• get-commit (p. 178)• get-differences (p. 181)• get-merge-commit (p. 179)• get-merge-conflicts (p. 146)• get-merge-options (p. 162)• get-pull-request (p. 145)• get-repository (p. 112)• get-repository-triggers (p. 106)• list-branches (p. 209)• list-pull-requests (p. 144)• list-repositories (p. 112)• list-tags-for-resource (p. 90)• merge-branches-by-fast-forward (p. 211)

API 版本 2015-04-13310

Page 319: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南基本 Git 命令

• merge-branches-by-squash (p. 212)• merge-branches-by-three-way (p. 212)• merge-pull-request-by-fast-forward (p. 157)• merge-pull-request-by-squash (p. 158)• merge-pull-request-by-three-way (p. 158)• post-comment-for-compared-commit (p. 195)• post-comment-for-pull-request (p. 149)• post-comment-reply (p. 196)• put-file (p. 133)• put-repository-triggers (p. 106)• tag-resource (p. 88)• test-repository-triggers (p. 107)• untag-resource (p. 92)• update-comment (p. 195)• update-default-branch (p. 213)• update-pull-request-description (p. 154)• update-pull-request-status (p. 168)• update-pull-request-title (p. 153)• update-repository-description (p. 115)• update-repository-name (p. 116)

基本 Git 命令您可以透過 Git 來使用 本機儲存庫 和已連接 本機儲存庫 的 CodeCommit 儲存庫。

以下是一些經常使用的 Git 命令基本範例。

如需更多選項,請參閱您的 Git 文件。

主題• 組態變數 (p. 311)• 遠端儲存庫 (p. 312)• 遞交 (p. 312)• 分支 (p. 313)• 標籤 (p. 314)

組態變數

列出所有組態變數。 git config --list

僅列出本機組態變數。 git config --local -l

僅列出系統組態變數。 git config --system -l

僅列出全域組態變數。 git config --global -l

設定指定組態檔案中的組態變數。 git config [--local | --global | --system] variable-name variable-value

API 版本 2015-04-13311

Page 320: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南遠端儲存庫

直接編輯組態檔案。也可以用來探索特定組態檔案的位置。若要結束編輯模式,通常您會輸入 :q (結束而不儲存變更) 或 :wq (儲存變更然後結束),然後按 Enter 鍵。

git config [--local | --global | --system] --edit

遠端儲存庫

初始化 本機儲存庫 以準備將它連接到 CodeCommit儲存庫。

git init

可用於使用 本機儲存庫 針對 CodeCommit 儲存庫 具備的指定別名和 CodeCommit 儲存庫 的指定 URL 來設定 本機儲存庫 與遠端儲存庫 (例如CodeCommit 儲存庫) 之間的連線。

git remote add remote-name remote-url

透過在指定的 URL 中製作 CodeCommit 儲存庫的副本,即會在本機電腦上目前資料夾的指定子資料夾中建立本機儲存庫。此命令還會為複製的CodeCommit 儲存庫 中的每個分支建立遠端追蹤分支,並從複製的 CodeCommit 儲存庫 中的目前預設分支中建立和簽出延伸的初始分支。

git clone remote-url local-subfolder-name

顯示 本機儲存庫 用於 CodeCommit 儲存庫 的別名。

git remote

顯示 本機儲存庫 用於擷取和推送至 CodeCommit儲存庫 的別名和 URL。

git remote -v

使用 本機儲存庫 針對 CodeCommit 儲存庫 具備的指定別名和指定的分支,從 本機儲存庫 將完成的遞交推送至 CodeCommit 儲存庫。同時在推送期間為本機儲存庫 設定上游追蹤資訊。

git push -u remote-name branch-name

設定上游追蹤資訊後,將完成的遞交從 本機儲存庫推送至 CodeCommit 儲存庫。

git push

使用 本機儲存庫 針對 CodeCommit 儲存庫 具備的指定別名和指定的分支,將完成的遞交從CodeCommit 儲存庫 提取至 本機儲存庫。

git pull remote-name branch-name

設定上游追蹤資訊後,將完成的遞交從CodeCommit 儲存庫 提取至 本機儲存庫。

git pull

使用 本機儲存庫 針對 CodeCommit 儲存庫 具備的指定別名,將 本機儲存庫 從 CodeCommit 儲存庫中斷連線。

git remote rm remote-name

遞交

顯示已經或尚未新增到本機儲存庫之待處理遞交中的項目。

git status

顯示已經或尚未新增到精簡格式之 本機儲存庫 待處理遞交中的項目。

git status -sb

API 版本 2015-04-13312

Page 321: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南分支

(M = 已修改,A = 已新增,D = 已刪除等等)

顯示 本機儲存庫 中待處理遞交與最新遞交之間的變更。

git diff HEAD

將特定檔案新增至 本機儲存庫 中的待處理遞交中。 git add [file-name-1 file-name-2 file-name-N | file-pattern]

將所有新的、修改的和刪除的檔案新增至本機儲存庫中的待處理遞交。

git add

在開始完成 本機儲存庫 中的待處理遞交之前,這會顯示編輯器來提供遞交訊息。輸入訊息之後,待處理遞交即完成。

git commit

完成 本機儲存庫 中的待處理遞交,包括同時指定遞交訊息。

git commit -m "Some meaningful commitcomment"

列出 本機儲存庫 中的最新遞交。 git log

以圖形格式列出 本機儲存庫 中的最新遞交。 git log --graph

以預先定義的緊縮格式列出 本機儲存庫 中的最新遞交。

git log --pretty=oneline

使用圖形以預先定義的緊縮格式列出 本機儲存庫 中的最新遞交。

git log --graph --pretty=oneline

使用圖形以自訂的格式列出 本機儲存庫 中的最新遞交。

(如需選項的詳細資訊,請參閱 Git 基礎 - 檢視遞交歷史記錄)

git log --graph --pretty=format:"%H(%h) : %cn : %ar : %s"

分支

列出 本機儲存庫 中的所有分支,您目前的分支旁會顯示星號 (*)。

git branch

將 CodeCommit 儲存庫 中所有現有分支的相關資訊提取至本機儲存庫。

git fetch

列出 本機儲存庫 中的所有分支和本機儲存庫中的遠端追蹤分支。

git branch -a

僅列出 本機儲存庫 中的遠端追蹤分支。 git branch -r

使用指定的分支名稱在 本機儲存庫 中建立新的分支。

git branch new-branch-name

使用指定的分支名稱切換至 本機儲存庫 中的另一個分支。

git checkout other-branch-name

使用指定的分支名稱在 本機儲存庫 中建立新的分支,然後切換到它。

git checkout -b new-branch-name

使用 本機儲存庫 針對 CodeCommit 儲存庫 具備的指定別名和指定的分支名稱,將新的分支從 本機儲

git push -u remote-name new-branch-name

API 版本 2015-04-13313

Page 322: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南標籤

存庫 推送至 CodeCommit 儲存庫。同時在推送期間為 本機儲存庫 中的分支設定上游追蹤資訊。

使用指定的分支名稱在 本機儲存庫 中建立新的分支。然後使用 本機儲存庫 針對 CodeCommit 儲存庫 具備的指定別名和指定的分支名稱,將 本機儲存庫 中的新分支連接至 CodeCommit 儲存庫 中的現有分支。

git branch --track new-branch-nameremote-name/remote-branch-name

將來自 本機儲存庫 中另一個分支的變更合併到 本機儲存庫 中目前的分支。

git merge from-other-branch-name

刪除 本機儲存庫 中的分支,除非它包含尚未合併的工作。

git branch -d branch-name

使用 本機儲存庫 針對 CodeCommit 儲存庫 具備的指定別名和指定的分支名稱,刪除 CodeCommit 儲存庫 中的分支。(注意冒號 (:) 的使用方式。)

git push remote-name :branch-name

標籤

列出 本機儲存庫 中的所有標籤。 git tag

將所有標籤從 CodeCommit 儲存庫 提取至 本機儲存庫。

git fetch --tags

顯示 本機儲存庫 中特定標籤的相關資訊。 git show tag-name

在 本機儲存庫 中建立 "lightweight" 標籤。 git tag tag-name commit-id-to-point-tag-at

使用 本機儲存庫 針對 CodeCommit 儲存庫 具備的指定別名和指定的標籤名稱,將特定標籤從 本機儲存庫 推送至 CodeCommit 儲存庫。

git push remote-name tag-name

使用 本機儲存庫 針對 CodeCommit 儲存庫 具備的指定別名,從 本機儲存庫 推送所有標籤至CodeCommit 儲存庫。

git push remote-name --tags

刪除 本機儲存庫 中的標籤。 git tag -d tag-name

使用 本機儲存庫 針對 CodeCommit 儲存庫 具備的指定別名和指定的標籤名稱,刪除 CodeCommit 儲存庫 中的標籤。(注意冒號 (:) 的使用方式。)

git push remote-name :tag-name

API 版本 2015-04-13314

Page 323: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

AWS CodeCommit 使用者指南文件歷史記錄

下表說明 CodeCommit 文件的重要變更。如需有關此文件更新的通知,您可以訂閱 RSS 摘要。

• API 版本:2015-04-13• 文件最新更新時間:2019 年 11 月 5 日

update-history-change update-history-description update-history-date

CodeCommit 支援通知規則 (p. 315)

您現在可以使用通知規則,向使用者通知儲存庫中的重要變更。此功能會取代 2019 年 11 月 5 日之前建立的通知。如需詳細資訊,請參閱建立通知規則。

November 5, 2019

CodeCommit 可在 Middle East(Bahrain) 中使用 (p. 315)

您現在可以在 Middle East(Bahrain) 中使用 CodeCommit。如需包含 Git 連線端點的詳細資訊,請參閱區域。

October 30, 2019

CodeCommit 新增支援擷取多個遞交的相關資訊 (p. 315)

您可以在 AWS CLI 中使用 batch-get-commits 命令來取得多個遞交的相關資訊。如需詳細資訊,請參閱檢視遞交詳細資訊。

August 15, 2019

CodeCommit 可在 Europe(Stockholm) 中使用。 (p. 315)

您現在可以在 Europe(Stockholm) 中使用CodeCommit。如需包含 Git 連線端點的詳細資訊,請參閱區域。

July 31, 2019

CodeCommit 新增支援在CodeCommit 主控台標籤儲存庫 (p. 315)

您現在可以從 CodeCommit 主控台新增、管理和移除儲存庫的標籤,以協助您管理 AWS 資源。如需詳細資訊,請參閱標記儲存庫。

July 2, 2019

CodeCommit 新增支援其他 Git 合併策略 (p. 315)

您現在在 CodeCommit 中合併提取請求時,可以選擇 Git 合併策略。您也可以在 CodeCommit 主控台中解決合併衝突。如需詳細資訊,請參閱使用提取請求。

June 10, 2019

CodeCommit 可在 AWSGovCloud (US-East) 中使用。 (p. 315)

您現在可以在 AWS GovCloud(US-East) 中使用 CodeCommit。如需包含 Git 連線端點的詳細資訊,請參閱區域。

May 31, 2019

CodeCommit 新增支援標記儲存庫 (p. 315)

您現在可以新增、管理和移除儲存庫的標籤,以協助您管理 AWS 資源。如需詳細資訊,請參閱標記儲存庫。

May 30, 2019

在主控台尋找資源 (p. 315) 您想在可以快速搜尋您的資源,例如儲存庫、組建專案、部署應

May 14, 2019

API 版本 2015-04-13315

Page 324: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南舊版更新

用程式,以及管道。選擇 Go toresource (移至資源),或按 / 鍵,然後輸入資源名稱。如需詳細資訊,請參閱 CodeCommit 教學課程。

CodeCommit 可在 AWSGovCloud (US-West) 中使用 (p. 315)

您現在可以在 AWSGovCloud (US-West) 中使用CodeCommit。如需包含 Git 連線端點的詳細資訊,請參閱區域。

April 18, 2019

CodeCommit 新增對 AmazonVPC 端點的支援 (p. 315)

您現在可以在 VPC 和CodeCommit 之間建立私有連線。如需詳細資訊,請參閱搭配界面 VPC 端點使用 CodeCommit。

March 7, 2019

CodeCommit 新增新的API (p. 315)

CodeCommit 已新增用於建立遞交的 API。如需詳細資訊,請參閱建立遞交。

February 20, 2019

內容更新 (p. 315) 本指南中的內容已更新次要修正和其他故障診斷指南。

January 2, 2019

內容更新 (p. 315) 本指南的內容已更新,現支援全新CodeCommit 主控台體驗。

October 30, 2018

CodeCommit 和聯邦資訊處理標準 (FIPS) (p. 315)

CodeCommit 已新增對某些地區聯邦資訊處理標準 (FIPS) 第140-2 號公報政府標準的支援。如需有關 FIPS 和 FIPS 端點的詳細資訊,請參閱聯邦資訊處理標準(FIPS) 140-2 概觀。如需 Git 連線端點的詳細資訊,請參閱區域。

October 25, 2018

CodeCommit 增加了三種API (p. 315)

CodeCommit 已增加三種 API 以支援處理檔案。如需 Git 連線端點的詳細資訊,請參閱對個別檔案執行動作的許可以及《AWSCodeCommit API Reference》。

September 27, 2018

可透過 RSS 摘要獲得的CodeCommit 文件歷史記錄通知 (p. 315)

您現在可以訂閱 RSS 摘要,以接收 CodeCommit 文件更新的通知。

June 29, 2018

舊版更新下表說明 2018 年 6 月 29 日之前的文件重要變更。

變更 描述 變更日期

新增主題 已新增限制對分支的推送和合併 (p. 205)主題。已更新CodeCommit 許可參考 (p. 277)主題。

2018 年 5 月16 日

新增章節 已新增在 AWS CodeCommit 儲存庫中使用檔案 (p. 130)章節。已更新CodeCommit 許可參考 (p. 277)和AWS CodeCommit 入門教學 (p. 42)主題。

2018 年 2 月21 日

API 版本 2015-04-13316

Page 325: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南舊版更新

變更 描述 變更日期

新增主題 已新增設定 AWS CodeCommit 儲存庫的跨帳戶存取 (p. 120)主題。

2018 年 2 月21 日

新增主題 已新增將 AWS Cloud9 與 AWS CodeCommit 整合 (p. 13)主題。產品和服務整合 (p. 68) 主題中已更新 AWS Cloud9 的相關資訊。

2017 年 12 月1 日

新增章節 已新增在 AWS CodeCommit 儲存庫中使用提取請求 (p. 138)章節。AWS CodeCommit 的身份驗證與存取控制 (p. 254)章節中已更新與提取請求和註解的相關許可資訊。還包含更新的受管政策陳述式。

2017 年 11 月20 日

更新主題 已將產品和服務整合 (p. 68)主題更新為包含適用於以下客戶的連結,這些客戶想要更新其現有管道來使用 Amazon CloudWatchEvents 啟動管道,以回應 CodeCommit 儲存庫中的變更。

2017 年 10 月11 日

新增主題 已新增AWS CodeCommit 的身份驗證與存取控制 (p. 254)章節。它會取代「存取許可參考」主題。

2017 年 9 月11 日

更新主題 已更新管理儲存庫的觸發 (p. 93)章節,以反映觸發組態的變更。整本指南已更新主題和影像,以反映導覽列的變更。

2017 年 8 月29 日

新增主題 已新增處理使用者偏好設定 (p. 216)主題。已更新 檢視標籤詳細資訊 (p. 197)主題。產品和服務整合 (p. 68)主題中已更新有關Amazon CloudWatch Events 的整合資訊。

2017 年 8 月3 日

新增主題 已新增Eclipse 與 AWS CodeCommit 整合 (p. 19) 和將 VisualStudio 與 AWS CodeCommit 整合 (p. 16) 主題。

2017 年 6 月29 日

更新主題 CodeCommit 現已在兩個新增的區域提供:Asia Pacific(Mumbai) 和 Canada (Central)。已更新區域和 Git 連線端點 (p. 289)主題。

2017 年 6 月29 日

更新主題 CodeCommit 現已在四個新增的區域提供:Asia Pacific(Seoul)、South America (São Paulo)、US West (N. California)和 Europe (London)。已更新區域和 Git 連線端點 (p. 289)主題。

2017 年 6 月6 日

更新主題 CodeCommit 現已在四個新增的區域提供:Asia Pacific(Tokyo)、Asia Pacific (Singapore)、Asia Pacific (Sydney) 和Europe (Frankfurt)。已更新區域和 Git 連線端點 (p. 289)主題,來提供 Git 連線端點和 CodeCommit 支援區域的相關資訊。

2017 年 5 月25 日

新增主題 已新增比較和合併分支 (p. 210)主題。已更新使用分支 (p. 201)章節的內容,來提供如何透過 CodeCommit 主控台,使用儲存庫中分支的相關資訊。

2017 年 5 月18 日

新增主題 已新增比較遞交 (p. 184)主題來提供有關比較遞交的資訊。已針對使用儲存庫 (p. 74)、遞交 (p. 170)和分支 (p. 201)而更新使用者指南的結構。

2017 年 3 月28 日

更新主題 已更新檢視遞交詳細資訊 (p. 175)主題,來提供在主控台檢視遞交和其父系之間差異的相關資訊,以及在 AWS CLI 中使用 get-differences 命令來檢視遞交之間差異的相關資訊。

2017 年 1 月24 日

新增主題 已新增使用 AWS CloudTrail 記錄 AWS CodeCommit API 呼叫 (p. 303)主題,來提供有關使用 AWS CloudFormation 以記錄CodeCommit 連線的資訊。

2017 年 1 月11 日

API 版本 2015-04-13317

Page 326: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南舊版更新

變更 描述 變更日期

新增主題 已新增適用於使用 Git 登入資料的 HTTPS 使用者 (p. 7) 主題,來提供有關透過 HTTPS 使用 Git 登入資料以設定 CodeCommit連線的資訊。

2016 年 12 月22 日

更新主題 已更新產品和服務整合 (p. 68)主題來包含 AWS CodeBuild 的整合相關資訊。

2016 年 5 月12 日

更新主題 CodeCommit 現已在另一個區域提供:Europe (Ireland)。已更新區域和 Git 連線端點 (p. 289)主題,來提供 Git 連線端點和CodeCommit 支援區域的相關資訊。

2016 年 11 月16 日

更新主題 CodeCommit 現已在另一個區域提供:US West (Oregon)。已更新區域和 Git 連線端點 (p. 289)主題,來提供 Git 連線端點和CodeCommit 支援區域的相關資訊。

2016 年 11 月14 日

新增主題 已更新為 Lambda 函數建立觸發 (p. 98)主題,以反映在建立Lambda 函數時建立 CodeCommit 觸發的能力。此簡化程序讓建立觸發的過程更精簡,並自動以 CodeCommit 叫用 Lambda 函數所需的許可來設定觸發。已新增為現有的 Lambda 函數建立觸發 (p. 101)主題,來包含在 Lambda 主控台為現有 CodeCommit函數建立觸發的相關資訊。

2016 年 10 月19 日

新增主題 CodeCommit 現已在另一個區域提供:US East (Ohio)。已新增區域和 Git 連線端點 (p. 289)主題,來提供 Git 連線端點和CodeCommit 支援區域的相關資訊。

2016 年 10 月17 日

主題更新 已更新產品和服務整合 (p. 68)主題來包含 AWS ElasticBeanstalk 的整合相關資訊。

2016 年 10 月13 日

主題更新 已更新產品和服務整合 (p. 68)主題來包含 AWS CloudFormation的整合相關資訊。

2016 年 10 月6 日

主題更新 已修訂適用於 Windows 上的 SSH 連線 (p. 29)主題,來提供在 Windows 上使用 Bash 模擬器 (而不是 PuTTY 工具組) 執行SSH 連線的相關指導。

2016 年 9 月29 日

主題更新 已更新檢視遞交詳細資訊 (p. 175)和CodeCommit 教學 (p. 42) 主題,來包含有關 CodeCommit 主控台上 Commit Visualizer 的資訊。已更新限制 (p. 297)主題,來增加單一推送所允許的參考數目。

2016 年 9 月14 日

主題更新 已更新檢視遞交詳細資訊 (p. 175)和 CodeCommit 教學 (p. 42)主題,來包含在 CodeCommit 主控台上檢視遞交歷史記錄的相關資訊。

2016 年 7 月28 日

新增主題 已新增將 Git 儲存庫遷移至 AWS CodeCommit (p. 217) 和將本機或無版本控制的內容遷移到 AWS CodeCommit (p. 224) 主題。

2016 年 6 月29 日

主題更新 故障診斷 (p. 239) 和適用於 Windows 上使用 AWS CLI 登入資料協助程式的 HTTPS 連線 (p. 37)主題已完成次要更新。

2016 年 6 月22 日

主題更新 已更新產品和服務整合 (p. 68)和「存取許可參考」主題來包含CodePipeline 的整合相關資訊。

2016 年 4 月18 日

新增主題 已新增管理儲存庫的觸發 (p. 93)章節。新的主題包含如何建立、編輯和刪除觸發的範例 (包括政策和程式碼範例)。

2016 年 3 月7 日

API 版本 2015-04-13318

Page 327: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南舊版更新

變更 描述 變更日期

新增主題 已新增產品和服務整合 (p. 68)主題。故障診斷 (p. 239)已完成次要更新。

2016 年 3 月7 日

主題更新 針對 適用於 Linux, macOS, or Unix 上的 SSH 連線 (p. 25)和 適用於 Windows 上的 SSH 連線 (p. 29),除了 MD5 伺服器指紋,還增加適用於 CodeCommit 的 SHA256 伺服器指紋。

2015 年 12 月9 日

新增主題 已新增瀏覽儲存庫中的檔案 (p. 131)主題。故障診斷 (p. 239)中已增加新的問題。整本使用者指南已完成次要改進和修正。

2015 年 10 月5 日

新增主題 已新增適用於不使用 AWS CLI 的 SSH 使用者 (p. 23)主題。已簡化設定 (p. 5)章節中的主題。已提供指導,此指導可協助使用者依其作業系統和慣用的通訊協定,以決定該遵循的步驟。

2015 年 8 月5 日

主題更新 在 SSH 和 Linux, macOS, or Unix:設定 Git 和 CodeCommit的公有和私有金鑰 (p. 26)和 SSH 和 Windows:設定 Git 和CodeCommit 的公有和私有金鑰 (p. 30)中,已新增對 SSH 金鑰ID 步驟的澄清和範例。

2015 年 7 月24 日

主題更新 已更新 SSH 和 Windows:設定 Git 和 CodeCommit 的公有和私有金鑰 (p. 30)中的步驟,來解決 IAM 和儲存公有金鑰檔案的相關問題。

2015 年 7 月22 日

主題更新 已更新故障診斷 (p. 239),來提供導覽輔助工具。關於登入資料金鑰鏈問題,已新增更多疑難排解資訊。

2015 年 7 月20 日

主題更新 在 AWS KMS 和加密 (p. 302)和「存取許可參考」主題中,已新增與 AWS Key Management Service 許可相關的詳細資訊。

2015 年 7 月17 日

主題更新 故障診斷 (p. 239)中已多增加一節,提供針對 AWS KeyManagement Service 的問題進行疑難排解的相關資訊。

2015 年 7 月10 日

初始版本 此為 CodeCommit 使用者指南的初始版本。 2015 年 7 月9 日

API 版本 2015-04-13319

Page 328: AWS CodeCommit - 使用者指南 · AWS CodeCommit 使用者指南 同步儲存庫之間的變更..... 115

AWS CodeCommit 使用者指南

AWS GlossaryFor the latest AWS terminology, see the AWS Glossary in the AWS General Reference.

API 版本 2015-04-13320