Controles de origem do grupo de pacotes - CodeArtifact

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Controles de origem do grupo de pacotes

Os controles de origem do pacote são usados para configurar como as versões do pacote podem entrar em um domínio. Você pode configurar controles de origem em um grupo de pacotes para configurar como as versões de cada pacote associado ao grupo de pacotes podem entrar em repositórios específicos no domínio.

As configurações de controle de origem do grupo de pacotes consistem no seguinte:

  • Configurações de restrição: essas configurações definem se os pacotes podem entrar em um repositório no CodeArtifact por meio de publicação, upstreams internos ou repositórios públicos externos.

  • Listas de repositórios permitidos: cada configuração de restrição pode ser definida para permitir repositórios específicos. Se uma configuração de restrição for definida para permitir repositórios específicos, essa restrição terá uma lista correspondente de repositórios permitidos.

nota

As configurações de controle de origem para grupos de pacotes são ligeiramente diferentes das configurações de controle de origem para pacotes individuais. Para obter mais informações sobre as configurações de controle de origem para pacotes, consulte Configurações de controle de origem do pacote.

Configurações de restrição

As configurações de restrição das configurações de controle de origem de um grupo de pacotes determinam como os pacotes associados a esse grupo podem entrar nos repositórios no domínio.

PUBLISH

A configuração PUBLISH define se as versões do pacote podem ser publicadas diretamente em qualquer repositório no domínio usando gerenciadores de pacotes ou ferramentas similares.

  • ALLOW: as versões do pacote podem ser publicadas diretamente em todos os repositórios.

  • BLOCK: as versões do pacote não podem ser publicadas diretamente em nenhum repositório.

  • ALLOW_SPECIFIC_REPOSITORIES: as versões do pacote só podem ser publicadas diretamente nos repositórios especificados na lista de repositórios permitidos para publicação.

  • INHERIT: a configuração PUBLISH é herdada do primeiro grupo de pacotes principal com uma configuração que não é INHERIT.

EXTERNAL_UPSTREAM

A configuração EXTERNAL_UPSTREAM define se as versões do pacote podem ser ingeridas de repositórios externos públicos quando solicitadas por um gerenciador de pacotes. Para ver uma lista dos repositórios externos, consulte Repositórios de conexão externa compatíveis.

  • ALLOW: qualquer versão do pacote pode ser ingerida em todos os repositórios de uma fonte pública com uma conexão externa.

  • BLOCK: as versões do pacote não podem ser ingeridas em nenhum repositório de uma fonte pública com uma conexão externa.

  • ALLOW_SPECIFIC_REPOSITORIES: as versões do pacote só podem ser ingeridas de uma fonte pública em repositórios especificados na lista de repositórios permitidos para upstreams externos.

  • INHERIT: a configuração EXTERNAL_UPSTREAM é herdada do primeiro grupo de pacotes principal com uma configuração que não é INHERIT.

INTERNAL_UPSTREAM

A configuração INTERNAL_UPSTREAM define se as versões do pacote podem ser retidas de repositórios upstream internos no mesmo domínio do CodeArtifact quando solicitadas por um gerenciador de pacotes.

  • ALLOW: qualquer versão do pacote pode ser retida de outros repositórios do CodeArtifact configurados como repositórios upstream.

  • BLOCK: as versões do pacote não podem ser retidas de outros repositórios do CodeArtifact configurados como repositórios upstream.

  • ALLOW_SPECIFIC_REPOSITORIES: as versões do pacote só podem ser retidas de outros repositórios do CodeArtifact configurados como repositórios upstream em repositórios especificados na lista de repositórios permitidos para upstreams internos.

  • INHERIT: a configuração INTERNAL_UPSTREAM é herdada do primeiro grupo de pacotes principal com uma configuração que não é INHERIT.

Listas de repositórios permitidos

Quando uma configuração de restrição é definida como ALLOW_SPECIFIC_REPOSITORIES, o grupo de pacotes passa a incluir uma lista de repositórios permitidos, que contém os repositórios permitidos para essa configuração de restrição. Portanto, um grupo de pacotes contém de 0 a 3 listas de repositórios permitidos, uma para cada configuração definida como ALLOW_SPECIFIC_REPOSITORIES.

Ao adicionar um repositório à lista de repositórios permitidos de um grupo de pacotes, é necessário especificar em qual lista adicioná-lo.

As possíveis listas de repositórios permitidos são as seguintes:

  • EXTERNAL_UPSTREAM: permite ou bloqueia a ingestão de versões de pacotes de repositórios externos no repositório adicionado.

  • INTERNAL_UPSTREAM: permite ou bloqueia a extração de versões de pacotes de outro repositório do CodeArtifact no repositório adicionado.

  • PUBLISH: permite ou bloqueia a publicação direta de versões de pacotes dos gerenciadores de pacotes no repositório adicionado.

Editar configurações de controle de origem do grupo de pacotes

Para adicionar ou editar controles de origem de um grupo de pacotes, execute as etapas no procedimento a seguir. Para obter informações sobre as configurações de controle de origem do grupo de pacotes, consulte Configurações de restrição e Listas de repositórios permitidos.

Como adicionar ou editar controles de origem do grupo de pacotes (CLI)
  1. Caso não tenha feito isso, configure a AWS CLI seguindo as etapas emConfigurando com AWS CodeArtifact.

  2. Use o comando update-package-group-origin-configuration para adicionar ou editar controles de origem do pacote.

    • Para --domain, insira o domínio do CodeArtifact que contém o grupo de pacotes que deseja atualizar.

    • Para --domain-owner, insira o número da conta do proprietário do domínio.

    • Para --package-group, insira o grupo de pacotes que deseja atualizar.

    • Para --restrictions, insira pares de chave-valor que representam as restrições de controle de origem.

    • Para --add-allowed-repositories, insira um objeto JSON contendo o tipo de restrição e o nome do repositório para adicionar à lista correspondente de repositórios permitidos para a restrição.

    • Para --remove-allowed-repositories, insira um objeto JSON contendo o tipo de restrição e o nome do repositório a serem removidos da lista correspondente de repositórios permitidos para a restrição.

    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

    O exemplo a seguir adiciona várias restrições e vários repositórios em um comando.

    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

Exemplos de configuração do controle de origem do grupo de pacotes

Os exemplos a seguir mostram configurações de controle de origem de pacotes para cenários comuns de gerenciamento de pacotes.

Permitir que pacotes com nomes privados sejam publicados, mas não ingeridos

Este cenário provavelmente é comum no gerenciamento de pacotes:

  • Permita que pacotes com nomes privados sejam publicados em repositórios em seu domínio por meio de gerenciadores de pacotes e impeça que sejam ingeridos em repositórios em seu domínio por meio de repositórios públicos externos.

  • Permita que todos os outros pacotes sejam ingeridos em repositórios em seu domínio por meio de repositórios públicos externos e impeça que sejam publicados em repositórios em seu domínio por meio de gerenciadores de pacotes.

Para fazer isso, você deve configurar um grupo de pacotes com um padrão que inclua os nomes privados e as configurações de origem de PUBLISH: ALLOW, EXTERNAL_UPSTREAM: BLOCK e INTERNAL_UPSTREAM: ALLOW. Isso garantirá que pacotes com nomes privados possam ser publicados diretamente, mas não possam ser ingeridos de repositórios externos.

Os seguintes comandos da AWS CLI criam e configuram um grupo de pacotes com configurações de restrição de origem que correspondem ao comportamento desejado:

Para criar o grupo de pacotes:

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"

Para atualizar a configuração de origem do grupo de pacotes:

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

Permitir a ingestão de repositórios externos por meio de um repositório

Neste cenário, seu domínio tem vários repositórios. Desses repositórios, repoA tem uma conexão upstream com repoB, que tem uma conexão externa com o repositório público, npmjs.com, conforme mostrado:

repoA --> repoB --> npmjs.com

Você deseja permitir a ingestão de pacotes de um grupo de pacotes específico, /npm/space/anycompany~ de npmjs.com para repoA, mas somente por meio de repoB. Você também deseja bloquear a ingestão de pacotes associados ao grupo de pacotes em qualquer outro repositório em seu domínio e bloquear a publicação direta de pacotes com gerenciadores de pacotes. Para fazer isso, você cria e configura o grupo de pacotes da seguinte forma:

Configurações de restrição de origem de PUBLISH: BLOCK, EXTERNAL_UPSTREAM: ALLOW_SPECIFIC_REPOSITORIES e INTERNAL_UPSTREAM: ALLOW_SPECIFIC_REPOSITORIES.

repoA e repoB adicionados à lista apropriada de repositórios permitidos:

  • repoA deve ser adicionado à lista INTERNAL_UPSTREAM, pois obterá pacotes de seu upstream interno, repoB.

  • repoB deve ser adicionado à lista EXTERNAL_UPSTREAM, pois obterá pacotes do repositório externo, npmjs.com.

Os seguintes comandos da AWS CLI criam e configuram um grupo de pacotes com configurações de restrição de origem que correspondem ao comportamento desejado:

Para criar o grupo de pacotes:

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"

Para atualizar a configuração de origem do grupo de pacotes:

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

Como as configurações de controle de origem do grupo de pacotes interagem com as configurações de controle de origem do pacote

Como tanto os pacotes quanto os grupos de pacotes associados têm configurações de controle de origem, é importante entender como essas duas configurações diferentes interagem entre si. Para obter mais informações sobre a interação entre as configurações, consulte Como os controles de origem do pacote interagem com os controles de origem do grupo de pacotes.