從外部連線要求套件 - CodeArtifact

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

從外部連線要求套件

下列各節說明如何從外部連線要求套件,以及要求套件時的預期 CodeArtifact 行為。

從外部連線擷取套件

若要在將外部連線新增至 CodeArtifact儲存庫 (如中所述) 之後從外部連線擷取套件將 CodeArtifact 存儲庫 Connect 到公共存儲庫,請設定套件管理員使用您的存放庫並安裝套件。

注意

下列指示使用npm, 來檢視其他套件類型的組態和使用指示 CodeArtifact 與 Maven 一起使用,請參閱使用CodeArtifact取代為NuGet、或 CodeArtifact 搭配 Python 使用

若要從外部連線擷取套件
  1. 使用 CodeArtifact 儲存庫配置和驗證您的套件管理員。對於 npm,請使用下列 aws codeartifact login 命令。

    aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo
  2. 公有儲存庫使用套件。對於npm,請使用以下npm install命令,將 lodash 替換為您要安裝的軟件包。

    npm install lodash
  3. 將套件複製到 CodeArtifact 儲存庫之後,您可以使用list-packages和指list-package-versions令來檢視套件。

    aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo

    輸出範例:

    { "packages": [ { "format": "npm", "package": "lodash" } ] }

    此命list-package-versions令會列出複製到 CodeArtifact 儲存庫中的套件的所有版本。

    aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package lodash

    輸出範例:

    { "defaultDisplayVersion: "1.2.5" "format": "npm", "package": "lodash", "namespace": null, "versions": [ { "version": "1.2.5", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ] }

外部連延延

使用外部連線從公用儲存庫擷取套件時,從公用存放庫擷取套件的時間和儲存在您的存放 CodeArtifact 庫中會有延遲。例如,假設您已經安裝了 npm 套件「lodash」的 1.2.5 版,如中所述從外部連線擷取套件。雖然npm install lodash lodash 命令已成功完成,但套件版本可能尚未出現在您的 CodeArtifact 儲存庫中。套件版本通常需要 3 分鐘左右的時間才會出現在您的儲存庫中,但偶爾可能需要更長的時間。

由於這種延遲,您可能已成功擷取套件版本,但可能還無法在 CodeArtifact 主控台中的存放庫中或呼叫 ListPackages 和 ListPackageVersions API 作業時看到該版本。 CodeArtifact 一旦以非同步方式保存套件版本,它就會在主控台和透過 API 要求顯示。

CodeArtifact 外部儲存庫無法使用時的行為

有時候,外部儲存庫會發生中斷情況,表示 CodeArtifact 無法從其擷取套件,或者擷取套件的速度會比正常情況慢得多。發生這種情況時,已經從外部存儲庫(例如 npmjs.com)提取並存儲在存儲 CodeArtifact 庫中的軟件包版本將繼續可以從中下載 CodeArtifact。但是,即使已設定與該儲存庫的外部連線,尚未儲存於中的套件也 CodeArtifact 可能無法使用。例如,您的 CodeArtifact 存儲庫可能包含 npm 軟件包版本,lodash 4.17.19 因為這是您到目前為止在應用程序中使用的版本。當您要升級到時4.17.20,通常 CodeArtifact 會從 npmjs.com 獲取該新版本並將其存儲在您的 CodeArtifact 存儲庫中。但是,如果 npmjs.com 發生中斷,則此新版本將無法使用。唯一的解決方法是在 npmjs.com 恢復後再試一次。

外部儲存庫中斷也會影響將新套件版本發佈至 CodeArtifact。在已設定外部連線的存放庫中, CodeArtifact 將不允許發佈已存在於外部存放庫中的套件版本。如需詳細資訊,請參閱套件概觀。但是,在極少數情況下,外部存放庫中斷可能表示 CodeArtifact 沒有外部存放庫中存在哪些套件和套件版本的 up-to-date 資訊。在這種情況下, CodeArtifact 可能會允許發布一個軟件包版本,它通常會拒絕。

新套件版本的可用性

若要讓公用儲存庫 (例如 npmjs.com) 中的套件版本可以透過 CodeArtifact 儲存庫取得,必須先將其新增至區域套件中繼資料快取。此快取會由每個AWS區域維護,並包含描述受支援公用儲存庫內容的 CodeArtifact 中繼資料。由於此快取的原因,在將新套件版本發佈至公用存放庫與可用時間之間會有延遲 CodeArtifact。此延遲因套件類型而異。

對於 npm、Python 和 Nuget 套件,從新的套件版本發佈到 npmjs.com、pypi.org 或 nuget.org 之後,可能會有最多 30 分鐘的延遲時間,以及可從 CodeArtifact 存放庫安裝的時間。 CodeArtifact 自動同步這兩個儲存庫的中繼資料,以確保快取是最新的。

對於 Maven 軟件包,從新軟件包版本發布到公共存儲庫以及可從存儲庫安裝之後,最多可能會延遲 3 小時。 CodeArtifact CodeArtifact 最多每 3 小時檢查一次軟件包的新版本。在 3 小時的快取存留期過期之後,對指定套件名稱的第一個要求,將導致該套件的所有新版本匯入區域快取。

對於常用的 Maven 軟件包,通常會每 3 小時導入一次新版本,因為請求的高速率意味著一旦緩存存留期過期,通常會更新緩存。對於不常使用的套裝程式,直到從 CodeArtifact儲存庫要求套件的版本之前,快取將不會有最新版本。在第一個要求中,只有先前匯入的版本可從中使用 CodeArtifact,但此要求會導致快取更新。在後續的要求中,套件的新版本將會新增至快取中,並可供下載。

匯入包含多個資產的套件版本

Maven 和 Python 軟件包可以在每個軟件包版本中具有多個資產。這使得導入這些格式的軟件包比 npm 和 NuGet packages 更複雜,每個軟件包版本只有一個資產。如需針對這些套件類型匯入哪些資產的說明,以及新增資產的可用方式的說明,請參閱從上流和外部連接請求 Python 包從上流和外部連接請求 Maven 軟件包