套件群組原始伺服器控制項 - CodeArtifact

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

套件群組原始伺服器控制項

套件原始伺服器控制項用於設定套件版本如何進入網域。您可以在套件群組上設定原始伺服器控制項,以設定與套件群組相關聯的每個套件版本如何在網域中輸入指定的儲存庫。

套件群組原始伺服器控制設定包含下列各項:

  • 限制設定:這些設定會定義套件是否可以 CodeArtifact 從發佈、內部上游或外部、公有儲存庫輸入儲存庫。

  • 允許的儲存庫清單:每個限制設定都可以設定為允許特定儲存庫。如果將限制設定設定為允許特定儲存庫,則該限制將具有對應的允許儲存庫清單。

注意

套件群組的原始伺服器控制設定與個別套件的原始伺服器控制設定略有不同。如需套件原始伺服器控制設定的詳細資訊,請參閱 套件原始伺服器控制設定

限制設定

套件群組原始伺服器控制設定的限制設定決定與該群組相關聯的套件如何在網域中輸入儲存庫。

PUBLISH

PUBLISH設定會設定套件版本是否可以使用套件管理員或類似工具直接發佈到網域中的任何儲存庫。

  • ALLOW:套件版本可以直接發佈到所有儲存庫。

  • BLOCK:套件版本無法直接發佈到任何儲存庫。

  • ALLOW_SPECIFIC_REPOSITORIES:套件版本只能直接發佈到允許發佈的儲存庫清單中指定的儲存庫。

  • INHERITPUBLISH設定是從第一個父套件群組繼承,其設定不是 INHERIT

EXTERNAL_UPSTREAM

EXTERNAL_UPSTREAM 設定會設定套件管理員要求時,是否可以從外部、公有儲存庫擷取套件版本。如需支援的外部儲存庫清單,請參閱 支援的外部連線儲存

  • ALLOW:任何套件版本都可以透過外部連線從公有來源擷取到所有儲存庫。

  • BLOCK:套件版本無法從具有外部連線的公有來源擷取到任何儲存庫。

  • ALLOW_SPECIFIC_REPOSITORIES:套件版本只能從公有來源擷取到外部上游的允許儲存庫清單中指定的儲存庫。

  • INHERITEXTERNAL_UPSTREAM設定是從第一個父套件群組繼承,其設定不是 INHERIT

INTERNAL_UPSTREAM

INTERNAL_UPSTREAM 設定會設定套件管理員要求時,是否可從相同 CodeArtifact 網域的內部上游儲存庫保留套件版本。

  • ALLOW:任何套件版本都可以從設定為上游 CodeArtifact 儲存庫的其他儲存庫保留。

  • BLOCK:套件版本無法從設定為上游 CodeArtifact 儲存庫的其他儲存庫保留。

  • ALLOW_SPECIFIC_REPOSITORIES:套件版本只能從設定為上游儲存庫的其他 CodeArtifact 儲存庫保留到內部上游的允許儲存庫清單中指定的儲存庫。

  • INHERITINTERNAL_UPSTREAM設定是從第一個父套件群組繼承,其設定不是 INHERIT

允許的儲存庫清單

當限制設定設定為 時ALLOW_SPECIFIC_REPOSITORIES,套件群組會包含隨附的允許儲存庫清單,其中包含該限制設定允許的儲存庫清單。因此,套件群組包含 0 到 3 個允許的儲存庫清單,每個設定為 的設定各一個ALLOW_SPECIFIC_REPOSITORIES

當您將儲存庫新增至套件群組的允許儲存庫清單時,您必須指定要將其新增至哪個允許的儲存庫清單。

可能的允許儲存庫清單如下所示:

  • EXTERNAL_UPSTREAM:允許或封鎖從新增儲存庫中的外部儲存庫擷取套件版本。

  • INTERNAL_UPSTREAM:允許或封鎖從新增儲存 CodeArtifact 庫中的另一個儲存庫提取套件版本。

  • PUBLISH:允許或封鎖從套件管理員直接發佈套件版本至新增的儲存庫。

編輯套件群組原始伺服器控制設定

若要新增或編輯套件群組的原始伺服器控制項,請執行下列程序的步驟。如需套件群組原始伺服器控制設定的相關資訊,請參閱 限制設定允許的儲存庫清單

新增或編輯套件群組原始伺服器控制項 (CLI)
  1. 如果您尚未設定 , AWS CLI 請依照 中的步驟進行設定使用 設定 AWS CodeArtifact

  2. 使用 update-package-group-origin-configuration命令來新增或編輯套件原始伺服器控制項。

    • 對於 --domain,輸入包含您要更新之套件群組的 CodeArtifact 網域。

    • 對於 --domain-owner,輸入網域擁有者的 帳戶號碼。

    • 對於 --package-group,輸入您要更新的套件群組。

    • 對於 --restrictions,輸入代表原始伺服器控制限制的鍵值對。

    • 對於 --add-allowed-repositories,輸入包含限制類型和儲存庫名稱的JSON物件,以新增至該限制的對應允許儲存庫清單。

    • 對於 --remove-allowed-repositories,輸入包含限制類型和儲存庫名稱的JSON物件,以從該限制的對應允許儲存庫清單中移除。

    aws codeartifact update-package-group-origin-configuration \ --domain my_domain \ --domain-owner 111122223333 \ --package-group '/nuget/*' \ --restrictions INTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES \ --add-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo \ --remove-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo2

    下列範例會在一個命令中新增多個限制和多個儲存庫。

    aws codeartifact update-package-group-origin-configuration \ --domain my_domain \ --domain-owner 111122223333 \ --package-group '/nuget/*' \ --restrictions PUBLISH=BLOCK,EXTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES,INTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES \ --add-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo2 \ --remove-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo2

套件群組原始伺服器控制組態範例

下列範例顯示常見套件管理案例的套件原始伺服器控制組態。

允許發佈具有私有名稱的套件,但不擷取

此案例可能是套件管理中的常見案例:

  • 允許使用私有名稱的套件從套件管理員發佈至您網域中的儲存庫,並封鎖從外部公有儲存庫擷取至您網域中的儲存庫。

  • 允許從外部、公有儲存庫將所有其他套件擷取至您網域中的儲存庫,並封鎖從套件管理員發佈至您網域中的儲存庫。

若要達到此目的,您應該設定包含私有名稱 (包含) 和 PUBLISH:ALLOWEXTERNAL_UPSTREAM: BLOCKINTERNAL_UPSTREAM: ALLOW原始伺服器設定的模式套件群組。這將確保具有私有名稱的套件可以直接發佈,但無法從外部儲存庫擷取。

下列 AWS CLI 命令會使用符合所需行為的原始伺服器限制設定來建立和設定套件群組:

若要建立套件群組:

aws codeartifact create-package-group \ --domain my_domain \ --package-group /npm/space/anycompany~ \ --domain-owner 111122223333 \ --contact-info contact@email.com | URL \ --description "my package group"

若要更新套件群組的原始伺服器組態:

aws codeartifact update-package-group-origin-configuration \ --domain my_domain \ --domain-owner 111122223333 \ --package-group '/npm/space/anycompany~' \ --restrictions PUBLISH=ALLOW,EXTERNAL_UPSTREAM=BLOCK,INTERNAL_UPSTREAM=ALLOW

允許透過一個儲存庫從外部儲存庫擷取

在此案例中,您的網域具有多個儲存庫。在這些儲存庫中, repoA 具有與 的上游連線repoB,其與公有儲存庫 具有外部連線npmjs.com,如下所示:

repoA --> repoB --> npmjs.com

您想要允許從特定套件群組擷取套件,/npm/space/anycompany~npmjs.comrepoA,但僅限 到 repoB。您也想要封鎖將與套件群組相關聯的套件擷取到網域中的任何其他儲存庫,並封鎖使用套件管理員直接發佈套件。若要達成此目標,您可以建立和設定套件群組,如下所示:

PUBLISH:、 BLOCKEXTERNAL_UPSTREAM: ALLOW_ SPECIFICREPOSITORIESINTERNAL_UPSTREAM: ALLOW_SPECIFIC_ REPOSITORIES的原始伺服器限制設定。

repoArepoB新增至適當的允許儲存庫清單:

  • repoA 應新增至INTERNAL_UPSTREAM清單,因為它會從其內部上游 取得套件repoB

  • repoB 應新增至EXTERNAL_UPSTREAM清單,因為它會從外部儲存庫 取得套件npmjs.com

下列 AWS CLI 命令會使用符合所需行為的原始伺服器限制設定來建立和設定套件群組:

若要建立套件群組:

aws codeartifact create-package-group \ --domain my_domain \ --package-group /npm/space/anycompany~ \ --domain-owner 111122223333 \ --contact-info contact@email.com | URL \ --description "my package group"

若要更新套件群組的原始伺服器組態:

aws codeartifact update-package-group-origin-configuration \ --domain my_domain \ --domain-owner 111122223333 \ --package-group /npm/space/anycompany~ \ --restrictions PUBLISH=BLOCK,EXTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES,INTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES \ --add-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=repoA originRestrictionType=EXTERNAL_UPSTREAM,repositoryName=repoB

套件群組原始伺服器控制設定如何與套件原始伺服器控制設定互動

由於套件具有原始伺服器控制設定,且其相關聯的套件群組具有原始伺服器控制設定,因此了解這兩個不同設定如何互相互動非常重要。如需設定之間互動的相關資訊,請參閱 套件原始伺服器控制如何與套件群組原始伺服器控制互動