Package 群組原點控制項 - CodeArtifact

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

Package 群組原點控制項

Package 原始控制項是用來設定套件版本如何進入網域。您可以在套裝程式群組上設定原始控制項,以設定與套裝程式群組關聯的每個套件版本如何在網域中輸入指定的儲存庫。

Package 群組原始控制設定包含下列項目:

  • 限制設定:這些設定定義套裝程式是否可以 CodeArtifact 從發佈、內部上行或外部公用儲存庫中輸入儲存區域。

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

注意

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

限制設定

套裝程式群組的原始控制設定值會決定與該群組關聯的套裝程式如何進入網域中的儲存區域。

發佈

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

  • 允許:Package 版本可以直接發佈到所有儲存庫。

  • BLOCK:Package 版本不能直接發佈到任何存儲庫。

  • ALLOW_SPECION_LATIONS:Package 版本只能直接發佈至允許的儲存庫清單中指定的儲存庫以進行發佈。

  • 繼承:此PUBLISH設定會繼承自第一個父套件群組,其設定不是INHERIT

外部上游

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

  • 允許:任何套件版本都可以從具有外部連線的公開來源擷取到所有儲存庫中。

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

  • ALLOW_SPECION_LAT EGORS:Package 版本只能從公用來源擷取至外部上行串流允許的儲存庫清單中指定的儲存庫。

  • 繼承:此EXTERNAL_UPSTREAM設定會繼承自第一個父套件群組,其設定不是INHERIT

內部 _ 上游

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

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

  • BLOCK:無法從配置為上游儲存庫的其他 CodeArtifact 儲存庫中保留 Package 版本。

  • ALLOW_ CodeArtifact SPECION_LATEGORS:Package 版本只能從設定為上游儲存庫的其他存放庫保留至內部上游允許的儲存庫清單中指定的儲存庫中。

  • 繼承:此INTERNAL_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

Package 群組原始控制項組態範例

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

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

這種情況很可能是套件管理中的常見案例:

  • 允許將包含私人名稱的套件從套件管理程式發佈到您網域中的儲存庫,並阻止它們從外部公用儲存庫擷取到您網域中的儲存庫。

  • 允許所有其他套件從外部公用儲存庫擷取到您網域中的儲存庫,並阻止套件管理員將它們發佈到您網域中的儲存庫。

要實現這一目標,您應該配置一個包含私有名稱和原始設置的模式的軟件包組:發布:允許外部 _ 上游:塊和部 _ 上游:允許。這樣可以確保具有私人名稱的套件可以直接發佈,但無法從外部儲存庫中擷取。

下列 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。您也想要封鎖擷取與套裝程式群組關聯至網域中任何其他儲存庫的套件,並封鎖套件管理員直接發佈套件。若要達成此目的,您可以建立並設定封裝群組,如下所示:

發布:塊」和「外部 _ 上游:允許 _ 特定存儲庫」和「內部 _ 上游:允許特定存儲庫」的原始限制設置。

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

套件群組原始控制項設定如何與套件原始控制項設定互動

由於套件具有原始控制設定,而且它們的關聯套件群組有原始控制設定,所以瞭解這兩個不同的設定如何互動是非常重要的。若要取得有關設定之間互動的資訊,請參閱套件原始控制項如何與套件群組原始控制項互動