AWS CodeCommit 與 CodeArtifact 完整教學:原始碼與套件的雲端儲存解決方案

更新日期: 2025 年 6 月 9 日

在現代軟體開發流程中,「程式碼儲存」與「套件管理」是兩個不可或缺的基礎。

你可能習慣使用 GitHub 存放原始碼,或透過 npm 安裝套件,但如果你想要一個 可控、安全、企業內部專用 的替代方案,那你應該認識 AWS 提供的兩項服務:

  • 📁 CodeCommit:雲端 Git 原始碼儲存庫
  • 📦 CodeArtifact:可支援 npm、PyPI、Maven 等格式的套件倉庫

本篇文章將帶你一一了解它們的用途、特色、適用情境與基本操作方式,幫助你打造自主可控的開發環境。

什麼是 CodeCommit?為什麼該用它來儲存程式碼?

CodeCommit 是 AWS 的雲端 Git 儲存服務

CodeCommit 是 AWS 提供的一項 完全託管(Fully Managed) 的 Git 儲存庫服務,目的是讓使用者可以像操作 GitHub、GitLab 一樣儲存和管理原始碼,但完全部署在 AWS 環境中。

你不需自己架設 Git 伺服器,也不需要擔心備份、資安或系統維運問題,一切由 AWS 打理。

CodeCommit 支援標準 Git 指令,因此無論你是用命令列、VS Code、SourceTree 或任何 Git 工具,都能無縫對接使用。

CodeCommit 的 5 大特點說明

功能面向說明
✅ 預設私有儲存每個建立的儲存庫預設皆為私有,確保原始碼不會不小心曝光,適合企業內部使用
✅ 無容量限制AWS 不會針對 CodeCommit 儲存庫的檔案數量或大小設上限,適合長期儲存完整歷史與大型專案
✅ 整合 IAM 權限透過 IAM Policy 可細緻設定誰可以讀、誰可以寫、誰只能列出 repo,強化團隊開發權限管理
✅ 高可用性AWS 背後自動進行資料備援與高可用部署,即使單一區域出狀況也能維持服務不中斷
✅ 安全性強化資料傳輸與儲存全面加密(可自訂 KMS 金鑰),且整合 CloudTrail 可審查所有存取與操作記錄行為

CodeCommit 適合哪些使用情境?

不是每個團隊都要用 GitHub。

以下是 CodeCommit 特別適合的狀況:

  • 🔒 資安要求嚴格:像金融、醫療、政府等單位,通常會要求程式碼不能儲存在境外服務(如 GitHub)
  • 🧑‍💼 想自行控管使用者權限與行為:透過 IAM,可以把 CodeCommit 權限整合到公司的統一身份管理系統中
  • 🧰 希望整個開發流程都落在 AWS 上:例如程式碼在 CodeCommit、參數存在 Parameter Store、建置在 CodeBuild
  • 🧑‍🔧 有維運/合規稽核需求:搭配 CloudTrail,所有操作皆可被紀錄與稽核

Step by Step:如何使用 CodeCommit 建立 Git 儲存庫?

以下是你可以快速上手 CodeCommit 的完整步驟:

🔧 Step 1:建立 Repository

  1. 登入 AWS Console
  2. 搜尋「CodeCommit」,進入服務
  3. 點選「建立儲存庫(Create repository)
  4. 輸入儲存庫名稱與描述(例如 my-project-repo
  5. 點選建立,完成後你會看到該 repo 的 Git URL(可選擇 HTTPS 或 SSH)

🔐 Step 2:設定你的 Git 認證方式

你可以選擇兩種方式來連接 CodeCommit:

  1. 使用 HTTPS + AWS CodeCommit 認證密碼
  • 建議給一般使用者或一次性設定
  • 可從 AWS IAM 使用者頁面「安全憑證」產生專用密碼(不是 IAM 密碼)
  1. 使用 SSH 金鑰登入
  • 適合進階使用者與自動化工具
  • 將 SSH 公鑰註冊在 IAM 使用者中,即可使用 SSH 連線

🧪 Step 3:實際操作 Git 專案

以下為完整流程範例:

# 1. 透過 Git Clone 下載儲存庫
git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/my-project-repo

# 2. 進入資料夾並新增檔案
cd my-project-repo
echo "# Hello AWS CodeCommit" > README.md

# 3. 加入 Git 管理並提交
git add README.md
git commit -m "initial commit"

# 4. 推送到遠端(AWS 上)
git push origin main

補充:支援 CI/CD、自動觸發通知

CodeCommit 也支援:

  • 與 AWS SNS 整合:當有 Push、PR、合併時自動通知團隊
  • 觸發 Lambda 或其他工作流程:可建立 Webhook-like 機制自動響應程式碼變動
  • 與 CodeArtifact 結合:搭配內部套件管理系統,維持開發一致性

什麼是 AWS CodeArtifact?它可以取代 npm registry 嗎?

CodeArtifact 是企業級的套件倉庫與套件代理服務

AWS CodeArtifact 是一個由 AWS 提供的全託管、多格式套件儲存服務,目的是幫助開發團隊更安全、有效地管理程式套件與函式庫的存取與發佈流程。

在開發中,我們經常會:

  • npm、PyPI、Maven、NuGet 等公共倉庫安裝套件
  • 撰寫自己的共用套件(如企業內部 UI 元件、工具函式庫)
  • 面臨套件安全性、授權、供應鏈風險的問題

CodeArtifact 的出現,就是為了解決這些問題,它不僅提供私有套件倉庫的功能,也能代理公共套件來源,統一由 AWS 幫你管理、過濾、封存依賴資源。

CodeArtifact 的 5 大核心功能詳解

功能項目說明
✅ 多格式支援支援 npm、PyPI、Maven、NuGet 等主流套件格式,讓前後端/後端都能一致使用
✅ 上游代理功能可設定 proxy,例如將 npmjs.org 套件緩存到內部,再供內網使用,避免直接連外、加速安裝並加強資安
✅ 私有套件發佈與版本控管支援將自己寫的模組(如 React UI library)上傳發佈,可設定版本號、標籤,與公開倉庫操作一致
✅ IAM 權限控管搭配 AWS IAM,可細緻設定「誰能讀」、「誰能寫」、「誰能刪除」,符合企業開發流程中的多角色協作需求
✅ Token 登入與整合安裝與發佈套件時會產生一組有效時間的 token,讓 npm login、pip install 等流程都能安全完成

CodeArtifact 適合哪些情境?為什麼企業會需要它?

你可能會問:「我用 npm registry 不是很好嗎?為什麼還需要用 AWS 來建套件倉庫?」

這其實關乎控管、合規、安全與效能等問題,以下是幾個典型的使用情境:

📌 1. 建立內部共用模組平台(例如 UI 元件、工具函式庫)

如果你有多個團隊共用模組,與其每個人都複製貼上,不如發佈成私有 npm 套件:

npm publish --registry=你的 CodeArtifact 倉庫

每個團隊就能:

npm install @your-team/button

且能進行版本控管、發佈流程管理,完全不依賴 Git。

📌 2. 安全審核第三方套件,避免供應鏈攻擊

CodeArtifact 支援「代理公共套件來源」,你可以設定某些套件必須經過掃描與審核才能被安裝。

舉例:

  • 原本直接從 npmjs.org 安裝
  • 改由 CodeArtifact 代理一次
  • 將套件快取在 AWS 上,由內部控制版本與授權
  • 防止使用者安裝有問題的最新版(如:含惡意程式碼的套件)

📌 3. 提升安裝速度與穩定性,降低外部依賴

  • 有時 npm registry 國際連線速度不穩
  • 有時開發環境在封閉內網中(如金融內部網)
  • 有時要做災難備援(不希望某天 registry 掛掉就卡住)

CodeArtifact 可以:

  • 快取套件版本,斷線也能安裝
  • 離線部署環境使用
  • 大幅減少開發、建置階段的下載時間

操作教學:如何將 npm 套件發佈到 CodeArtifact?

這裡提供你完整的 4 步驟教學流程:

🔨 Step 1:建立 Domain 與 Repository

  1. 登入 AWS Console,搜尋並點開「CodeArtifact
  2. 先建立一個 Domain(概念上是套件倉庫的範圍)
  3. 再建立一個 Repository(真正存放套件的空間,可對應不同部門)

建議命名方式如下:

類型範例
Domain 名稱my-org-domain
Repository 名稱frontend-shared-lib

你也可以選擇讓 repo 接管上游 npm registry 的代理角色。

🔐 Step 2:取得存取權杖(Token)

aws codeartifact get-authorization-token \
  --domain my-org-domain \
  --domain-owner 123456789012 \
  --query authorizationToken \
  --output text

你會拿到一個臨時 token(有效時間通常是 12 小時)。

🔧 Step 3:設定 npm 使用 CodeArtifact 倉庫

npm config set registry https://my-org-domain-123456789012.d.codeartifact.ap-northeast-1.amazonaws.com/npm/frontend-shared-lib/

npm config set //my-org-domain-123456789012.d.codeartifact.ap-northeast-1.amazonaws.com/npm/frontend-shared-lib/:_authToken=你的_token

📤 Step 4:發佈與安裝套件

發佈套件(例如你的 UI button 套件)
npm publish --registry=https://.../npm/frontend-shared-lib/
安裝套件
npm install @your-team/button

若已設定 registry 為 CodeArtifact,就可直接安裝。

CodeCommit 與 CodeArtifact 的差異與互補

功能面向CodeCommitCodeArtifact
儲存內容Git 原始碼(整個專案、分支、歷史)套件模組(如 npm 套件、Python library)
適用用途程式碼版本管理、多人協作模組共用、依賴管理、套件代理與授權控管
權限管理IAM 控制誰能讀寫哪個 repositoryIAM 控制誰能讀寫哪個 domain/repository
整合工具Git CLI、IDE(VS Code、JetBrains 等)npm、yarn、pip、twine、maven 等工具鏈
發佈頻率不定期 commit / push針對版本號發佈,符合套件語意化版本管理(semver)

結語:想自主掌控開發流程,這兩個工具不能少

如果你正在建構屬於自己的雲端開發平台,CodeCommit 與 CodeArtifact 是 AWS 提供的強大基礎工具:

  • 不再依賴外部 Git 儲存服務,自己掌控原始碼版本歷史
  • 不再擔心第三方套件來源安全性,可預先代理、審核、封存
  • 讓內部模組可重複、版本化、部署一致

現在就開始試用,逐步打造屬於你團隊的雲端開發生態吧!

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *