AWS CodeArtifact 常見問答集

一般問題

AWS CodeArtifact 是全受管成品儲存庫服務,可讓各種規模的組織輕鬆且安全存放、發佈和共享其軟體開發程序中使用的軟體套件。CodeArtifact 與常用的套件管理程式和建置工具搭配使用,如 Maven 和 Gradle (Java)、npm 和 yarn (JavaScript)、pip 和 twine (Python),或 NuGet (.NET)。

  • npm/Yarn
  • pip/twine
  • Maven/Gradle
  • NuGet
  • RubyGems
  • SwiftPM
  • 通用
  • Cargo

使用 CodeArtifact 無須預付費用或簽訂合約。您只需按儲存的軟體套件、提出的請求數以及在 AWS 區域外傳輸的資料付費。CodeArtifact 提供每月儲存和請求的免費用量方案。如需定價詳細資訊,請參閱定價詳細資訊。

下列 13 個 AWS 區域提供 CodeArtifact:

  • 美國東部 (維吉尼亞北部)
  • 美國東部 (俄亥俄)
  • 美國西部 (奧勒岡)
  • 歐洲 (愛爾蘭)
  • 歐洲 (倫敦)
  • 歐洲 (法蘭克福)
  • 歐洲 (斯德哥爾摩)
  • 歐洲 (米蘭)
  • 歐洲 (巴黎)
  • 亞太區域 (雪梨)
  • 亞太區域 (東京)
  • 亞太區域 (孟買)
  • 亞太區域 (新加坡)

 

開始使用/使用 CodeArtifact

可使用 AWS 管理主控台、軟體開發套件或 CLI 建立新網域或儲存庫,開始使用 CodeArtifact。然後,您可以使用熱門的套件管理程式和建置工具 (如 npm 或 yarn CLI (JavaScript)、maven 或 gradle (Java)、pip (Python),或 NuGet (.NET)) 將套件發佈至您的儲存庫。您也可以透過 CodeArtifact 儲存庫使用來自 npm registry、Maven Central、Python Package Index (PyPI) 或 NuGet.org 等公用儲存庫的開放原始碼套件,CodeArtifact 儲存庫存放任何以此方法使用的套件。

網域是 CodeArtifact 特定的結構,允許跨多個 AWS 帳戶分組和管理由單一組織擁有的多個 CodeArtifact 儲存庫。例如,組織可能建立集中式儲存庫,讓不同團隊共享套件;此外,也建立專案等級的儲存庫,以儲存僅由單一團隊或應用程式使用的套件。

CodeArtifact 儲存庫包含一組套件版本,而每個版本對應至一組資產。它們是多語言儲存庫,也就是內含任何支援類型的套件之單一儲存庫。每個儲存庫使用 npm CLI、Maven CLI (mvn)、pip 和 NuGet 之類的工具,公開擷取和發佈套件的端點。 如需有關 AWS CodeArtifact 中資源限制的資訊,請參閱 AWS CodeArtifact 中的配額

您可以使用主控台精靈,或以程式設計方式使用 AWS 開發套件或 CLI 來建立儲存庫。如需詳細資訊,請參閱 AWS CodeArtifact 文件中的建立儲存庫

您可以使用原生語言工具發佈成品,如 npm 或 yarn (JavaScript)、maven 或 gradle (Java)、twine (Python),或 NuGet (.NET)。例如,使用 npm 發佈新套件版本需要以下兩個命令:首先,執行 CodeArtifact CLI "login" 指令,然後執行 npm publish 以將套件上傳至儲存庫。作為持續整合 (CI) 工作流程的一部分,AWS CodeBuild 可執行相同的指令來發佈新套件版本。在這裡進一步了解。

您可以使用語言原生工具擷取成品。例如,若要安裝 npm 套件 webpack 及其所有相依性,請執行 CodeArtifact CLI "login" 指令,然後執行 npm install webpack。npm 從 CodeArtifact 擷取 webpack,根據 webpack 的 package.json 檔案中的資訊執行相依性解決方案,然後從 CodeArtifact 遞迴擷取所有必要相依性。 在這裡進一步了解。

在 CodeArtifact 主控台上,使用外部連線建立儲存庫,以從 npm registry 之類的公有儲存庫提取套件。您也可以使用 AssociateExternalConnection API 建立 CodeArtifact 儲存庫與公有儲存庫之間的連線。無論要求怎樣的套件,如果這些套件尚未存在,CodeArtifact 會從外部儲存庫提取和快取所需的套件。

身份驗證和存取控制

首先安裝 AWS CLI,然後為已擁有適當 CodeArtifact 存取權限的 IAM 使用者或角色設定 AWS 登入資料。接著使用 CLI 呼叫 CodeArtifact GetAuthorizationToken API。此 API 發佈授權字符,並可將它納入套件管理程式和建置工具提出的要求之 HTTP Authorization 標頭內。CLI 提供呼叫 GetAuthorizationToken 的 login 命令,並自動設定套件管理程式,以針對所有請求使用此字符。這類似於 Amazon ECR 提供的 get-login 命令,以便使用 Docker CLI 與 ECR 互動的開發人員熟悉此模式。

是。CodeArtifact 儲存庫支援資源政策,以啟用跨帳戶存取。您可以透過主控台或 AWS CLI 新增資源政策。

是。CodeArtifact 支援套件層級的寫入許可。您可以將陳述式新增至儲存庫資源政策文件,以將套件 ARN 指定為資源,來進行設定。CodeArtifact 僅支援儲存庫層級的讀取許可,也就是指定的 IAM 主體可讀取儲存庫的所有套件,或完全不讀取。

是。CodeArtifact 存放的所有套件都使用 TLS 進行傳輸中加密,使用 AES-256 對稱金鑰進行靜態加密。CodeArtifact 同時支援 AWS Key Management Service (KMS) 客戶管理的 CMK,以及 AWS 管理的 CMK。

整合

是。您可以指定 CodeArtifact 儲存庫,以用於在您的 CodeBuild 專案組態中使用和發佈套件。可用的 CodeBuild 映像包括 CodeArtifact 支援的所有套件類型之用戶端工具。CodeBuild 會設定建置工具或套件管理程式以使用指定的儲存庫,並在使用建置的 IAM 角色開始建置時擷取 CodeArtifact 授權字符。您也可以指定在完成建置後應發佈至 CodeArtifact 儲存庫的建置成品。一旦成品內容變更,可使用 CodeArtifact 接收的 CloudWatch Events 事件,觸發 CodeBuild 建置。

是。使用 Amazon EventBridge,當存放在 CodeArtifact 儲存庫中的套件變更時,您可以觸發 CodePipeline 建置 - 例如,當發佈新版本的套件時。

是。您可以使用 CloudFormation 建立 CodeArtifact 資源,例如網域和儲存庫。如需詳細資訊,請參閱CodeArtifact 文件