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
- 登入 AWS Console
- 搜尋「CodeCommit」,進入服務
- 點選「建立儲存庫(Create repository)」
- 輸入儲存庫名稱與描述(例如
my-project-repo
) - 點選建立,完成後你會看到該 repo 的 Git URL(可選擇 HTTPS 或 SSH)
🔐 Step 2:設定你的 Git 認證方式
你可以選擇兩種方式來連接 CodeCommit:
- 使用 HTTPS + AWS CodeCommit 認證密碼
- 建議給一般使用者或一次性設定
- 可從 AWS IAM 使用者頁面「安全憑證」產生專用密碼(不是 IAM 密碼)
- 使用 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
- 登入 AWS Console,搜尋並點開「CodeArtifact」
- 先建立一個 Domain(概念上是套件倉庫的範圍)
- 再建立一個 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 的差異與互補
功能面向 | CodeCommit | CodeArtifact |
---|---|---|
儲存內容 | Git 原始碼(整個專案、分支、歷史) | 套件模組(如 npm 套件、Python library) |
適用用途 | 程式碼版本管理、多人協作 | 模組共用、依賴管理、套件代理與授權控管 |
權限管理 | IAM 控制誰能讀寫哪個 repository | IAM 控制誰能讀寫哪個 domain/repository |
整合工具 | Git CLI、IDE(VS Code、JetBrains 等) | npm、yarn、pip、twine、maven 等工具鏈 |
發佈頻率 | 不定期 commit / push | 針對版本號發佈,符合套件語意化版本管理(semver) |
結語:想自主掌控開發流程,這兩個工具不能少
如果你正在建構屬於自己的雲端開發平台,CodeCommit 與 CodeArtifact 是 AWS 提供的強大基礎工具:
- 不再依賴外部 Git 儲存服務,自己掌控原始碼版本歷史
- 不再擔心第三方套件來源安全性,可預先代理、審核、封存
- 讓內部模組可重複、版本化、部署一致
現在就開始試用,逐步打造屬於你團隊的雲端開發生態吧!