配置和使用貨物 CodeArtifact - CodeArtifact

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

配置和使用貨物 CodeArtifact

您可以使用 Cargo 從 CodeArtifact 倉庫發布和下載箱子,或者從 Rust 社區的箱子註冊處 crates.io 中獲取箱子。本主題說明如何將 Cargo 設定為使用 CodeArtifact 儲存庫進行驗證和使用。

配置貨物 CodeArtifact

要使用 Cargo 從中安裝和發布箱子 AWS CodeArtifact,您首先需要使用 CodeArtifact 存儲庫信息配置它們。請遵循下列其中一個程序中的步驟,以您的 CodeArtifact 儲存庫端點資訊和憑證來設定 Cargo。

使用控制台說明配置貨物

您可以使用控制台中的配置說明將 Cargo 連接到您的 CodeArtifact 存儲庫。控制台說明提供了為您的 CodeArtifact 存儲庫定制的 Cargo 配置。您可以使用此自定義配置來設置 Cargo,而無需查找和填寫您的 CodeArtifact 信息。

  1. 請在以下位置開啟 AWS CodeArtifact 主控台。 https://console.aws.amazon.com/codesuite/codeartifact/home

  2. 在導覽窗格中,選擇儲存庫,然後選擇要連線至 Cargo 的儲存庫。

  3. 選擇 [檢視連線指示]。

  4. 選擇您的作業系統。

  5. 選擇「貨運」。

  6. 按照生成的說明將 Cargo 連接到您的 CodeArtifact 存儲庫。

手動配置貨物

如果您無法或不想使用控制台中的配置說明,可以使用以下說明手動將 Cargo 連接到您的 CodeArtifact 儲存庫。

macOS and Linux

為了配置 Cargo CodeArtifact,您需要在 Cargo 配置中將 CodeArtifact 存儲庫定義為註冊表並提供憑據。

  • 用您的註冊表名稱替換我的註冊表。

  • 使用您的網域名稱取代我的網 CodeArtifact 域名稱。

  • 請以網域擁有者的 AWS 帳號識別碼取代 111122223333。如果您正在訪問您擁有的域中的存儲庫,則不需要包含--domain-owner。如需詳細資訊,請參閱 跨帳戶網域

  • 用您的 CodeArtifact 存儲庫名稱替換 my_repo

複製配置以發布 Cargo 軟件包並將其下載到您的存儲庫,並將其保存在~/.cargo/config.toml文件中以供系統級配置或項目級配置使.cargo/config.toml用:

[registries.my_registry] index = "sparse+https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/cargo/my_repo/" credential-provider = "cargo:token-from-stdout aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --region us-west-2 --query authorizationToken --output text" [registry] default = "my_registry" [source.crates-io] replace-with = "my_registry"
Windows: Download packages only

為了配置 Cargo CodeArtifact,您需要在 Cargo 配置中將 CodeArtifact 存儲庫定義為註冊表並提供憑據。

  • 用您的註冊表名稱替換我的註冊表。

  • 使用您的網域名稱取代我的網 CodeArtifact 域名稱。

  • 請以網域擁有者的 AWS 帳號識別碼取代 111122223333。如果您正在訪問您擁有的域中的存儲庫,則不需要包含--domain-owner。如需詳細資訊,請參閱 跨帳戶網域

  • 用您的 CodeArtifact 存儲庫名稱替換 my_repo

複製配置以僅從您的存儲庫下載 Cargo 軟件包,並將其保存在%USERPROFILE%\.cargo\config.toml文件中以供系統級配置或項目級配置使.cargo\config.toml用:

[registries.my_registry] index = "sparse+https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/cargo/my_repo/" credential-provider = "cargo:token-from-stdout aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --region us-west-2 --query authorizationToken --output text" [registry] default = "my_registry" [source.crates-io] replace-with = "my_registry"
Windows: Publish and download packages
  1. 為了配置 Cargo CodeArtifact,您需要在 Cargo 配置中將 CodeArtifact 存儲庫定義為註冊表並提供憑據。

    • 用您的註冊表名稱替換我的註冊表。

    • 使用您的網域名稱取代我的網 CodeArtifact 域名稱。

    • 請以網域擁有者的 AWS 帳號識別碼取代 111122223333。如果您正在訪問您擁有的域中的存儲庫,則不需要包含--domain-owner。如需詳細資訊,請參閱 跨帳戶網域

    • 用您的 CodeArtifact 存儲庫名稱替換 my_repo

    複製配置以發布 Cargo 軟件包並將其下載到您的存儲庫中,並將其保存在%USERPROFILE%\.cargo\config.toml文件中,以供系統級配置或項目級配置使.cargo\config.toml用。

    建議您使用認證提供者cargo:token,該提供者會使用儲存在~/.cargo/credentials.toml檔案中的認證。cargo publish如果使用期間,您可能會遇到錯誤,cargo:token-from-stdout因為 Cargo 客戶端在期間未正確修剪授權令牌cargo publish

    [registries.my_registry] index = "sparse+https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/cargo/my_repo/" credential-provider = "cargo:token" [registry] default = "my_registry" [source.crates-io] replace-with = "my_registry"
  2. 若要使用 Windows 將 Cargo 套件發佈到您的儲存庫,您必須使用 CodeArtifact get-authorization-token指令和 Cargo login 指令來擷取授權權杖和您的認證。

    • my_registry 取代為您的登錄名稱 (如中所定義)。[registries.my_registry]

    • 使用您的網域名稱取代我的網 CodeArtifact 域名稱。

    • 請以網域擁有者的 AWS 帳號識別碼取代 111122223333。如果您正在訪問您擁有的域中的存儲庫,則不需要包含--domain-owner。如需詳細資訊,請參閱 跨帳戶網域

    aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --region us-west-2 --query authorizationToken --output text | cargo login --registry my_registry
    注意

    生成的授權令牌有效期為 12 小時。如果自創建令牌以來已經過去了 12 個小時,則需要創建一個新的。

上述範例中的[registries.my_registry]章節會定義登錄,my_registry並提供indexcredential-provider資訊。

  • index指定登錄的索引 CodeArtifact URL,也就是以/. 非 Git 儲存庫的登錄需要sparse+前置詞。

  • credential-provider指定指定登錄的認證提供者。如果credential-provider未設定,則registry.global-credential-providers會使用中的提供者。通過設置credential-providercargo:token-from-stdout,Cargo 客戶端將在從 CodeArtifact 存儲庫發布或下載時自動獲取新的授權令牌,因此您無需每 12 小時手動刷新一次授權令牌。

[registry]節定義了使用的預設登錄。

  • default指定在中定義的登錄名稱[registries.my_registry],當從 CodeArtifact 存放庫發行或下載時,依預設使用。

[source.crates-io]部分定義了未指定時使用的默認註冊表。

  • replace-with = "my_registry"將公共註冊表 crates.io 替換為中定義的 CodeArtifact 存儲庫。[registries.my_registry]如果您需要從外部連接(例如 crates.io)請求軟件包,建議您使用此配置。

    若要取得的所有好處 (例如可防止相依性混淆攻擊的套件原始控制項),建議您使用原始碼取代。 CodeArtifact取代來源時,會將所有要求 CodeArtifact 代理至外部連線,並將套件從外部連線複製到您的存放庫。如果沒有替換原始碼,Cargo 用戶端將直接根據您專案中Cargo.toml檔案中的組態擷取套件。如果依賴項沒有標記registry=my_registry,Cargo 客戶端將直接從 crates.io 中檢索它,而無需與您的存儲庫進行通信。 CodeArtifact

    注意

    如果您開始使用來源取代,然後將組態檔更新為不使用來源取代,您可能會遇到錯誤。相反的情況也可能導致錯誤。因此,建議您避免變更專案的組態。

安裝貨物箱

使用下列程序從 CodeArtifact 儲存庫或 cra tes.io 安裝貨物箱。

安裝貨物箱 CodeArtifact

您可以使用 Cargo (cargo) CLI 從您的 CodeArtifact 儲存庫快速安裝特定版本的貨物箱。

要從 CodeArtifact 存儲庫安裝貨物箱 cargo
  1. 如果尚未執行,請依照中的步驟設配置和使用貨物 CodeArtifactcargo CLI,使其具有適當認證使用 CodeArtifact 存放庫。

  2. 使用以下命令從中 CodeArtifact安裝貨物箱:

    cargo add my_cargo_package@1.0.0

    有關更多信息,請參閱貨物簿中的貨物添加

出版貨物箱 CodeArtifact

請遵循下列程序,使用 cargo CLI 將貨物包裝箱發佈至 CodeArtifact 儲存庫。

  1. 如果尚未執行,請依照中的步驟設配置和使用貨物 CodeArtifactcargo CLI,使其具有適當認證使用 CodeArtifact 存放庫。

  2. 使用下列指令將貨物箱發佈至 CodeArtifact 儲存庫:

    cargo publish

    有關更多信息,請參閱《貨物書》中的貨物發布