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á.
Copiar pacotes entre repositórios
Você pode copiar versões de pacotes de um repositório para outro no CodeArtifact. Isso pode ser útil para cenários como fluxos de trabalho de promoção de pacotes ou compartilhamento de versões de pacotes entre equipes ou projetos. Os repositórios de origem e de destino devem ter o mesmo domínio para copiar versões de pacotes.
IAMPermissões necessárias para copiar pacotes
Para copiar as versões do pacote CodeArtifact, o usuário chamador deve ter as IAM permissões necessárias e a política baseada em recursos anexada aos repositórios de origem e destino deve ter as permissões necessárias. Para obter mais informações sobre políticas e CodeArtifact repositórios de permissões com base em recursos, consulte. Políticas de repositório
O usuário que está chamando copy-package-versions
deve ter a permissão ReadFromRepository
no repositório de origem e a permissão CopyPackageVersions
no repositório de destino.
O repositório de origem deve ter a ReadFromRepository
permissão e o repositório de destino deve ter a CopyPackageVersions
permissão atribuída à IAM conta ou ao usuário que copia pacotes. As políticas a seguir são exemplos de políticas de repositório a serem adicionadas ao repositório de origem ou ao repositório de destino com o comando put-repository-permissions-policy
. Substituir 111122223333
com o ID da conta que está ligandocopy-package-versions
.
nota
Chamar put-repository-permissions-policy
substituirá a política atual do repositório, se houver. Você pode usar o comando get-repository-permissions-policy
para ver se existe uma política. Para obter mais informações, consulte Ler uma política. Se existir uma política, talvez você queira adicionar essas permissões a ela em vez de substituí-la.
Exemplo de política de permissões do repositório de origem
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Resource": "*" } ] }
Exemplo de política de permissões do repositório de destino
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:CopyPackageVersions" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Resource": "*" } ] }
Copiar versões do pacote
Use o copy-package-versions
comando in CodeArtifact para copiar uma ou mais versões do pacote de um repositório de origem para um repositório de destino no mesmo domínio. O exemplo a seguir copiará as versões 6.0.2 e 4.0.0 de um pacote npm chamado my-package
do repositório my_repo
para o repositório repo-2
.
aws codeartifact copy-package-versions --domain
my_domain
--domain-owner111122223333
--source-repositorymy_repo
\ --destination-repositoryrepo-2
--packagemy-package
--format npm \ --versions6.0.2 4.0.0
Copie várias versões do mesmo nome de pacote em uma única operação. Para copiar versões de nomes de pacotes diferentes, você deve chamar copy-package-versions
para cada um deles.
O comando anterior produzirá a seguinte saída, supondo que ambas as versões possam ser copiadas com sucesso.
{ "successfulVersions": { "6.0.2": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, "4.0.0": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }
Copiar um pacote dos repositórios upstream
Normalmente, copy-package-versions
só procura no repositório especificado pela opção --source-repository
as versões a serem copiadas. No entanto, você pode copiar versões do repositório de origem e dos repositórios upstream usando a opção --include-from-upstream
. Se você usar o CodeArtifact SDK, chame o CopyPackageVersions
API com o includeFromUpstream
parâmetro definido como verdadeiro. Para obter mais informações, consulte Trabalhando com repositórios upstream em CodeArtifact.
Copiar um pacote npm com escopo definido
Para copiar uma versão do pacote npm em um escopo, use a opção --namespace
para especificar o escopo. Por exemplo, para copiar o pacote @types/react
, use --namespace types
. O símbolo @
deve ser omitido ao usar --namespace
.
aws codeartifact copy-package-versions --domain
my_domain
--domain-owner111122223333
--source-repositoryrepo-1
\ --destination-repositoryrepo-2
--format npm --namespacetypes
\ --packagereact
--versions0.12.2
Copiar versões do pacote Maven
Para copiar versões do pacote Maven entre repositórios, especifique o pacote a ser copiado passando o ID do grupo Maven com a opção --namespace
e o artifactID Maven com a opção --name
. Por exemplo, para copiar uma única versão de com.google.guava:guava
:
aws codeartifact copy-package-versions --domain
my_domain
--domain-owner111122223333
\ --source-repositorymy_repo
--destination-repositoryrepo-2
--format maven --namespacecom.google.guava
\ --packageguava
--versions27.1-jre
Se a versão do pacote for copiada com sucesso, o resultado será semelhante ao seguinte.
{ "successfulVersions": { "27.1-jre": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }
Versões que não existem no repositório de origem
Se você especificar uma versão que não existe no repositório de origem, a cópia falhará. Se existirem algumas versões no repositório de origem e outras não existirem, nenhuma versão será copiada. No exemplo a seguir, a versão 0.2.0 do pacote npm do array-unique
está presente no repositório de origem, mas a versão 5.6.7 não está:
aws codeartifact copy-package-versions --domain
my_domain
--domain-owner111122223333
\ --source-repositorymy_repo
--destination-repositoryrepo-2
--format npm \ --packagearray-unique
--versions0.2.0 5.6.7
A saída neste cenário será semelhante ao seguinte:
{ "successfulVersions": {}, "failedVersions": { "0.2.0": { "errorCode": "SKIPPED", "errorMessage": "Version 0.2.0 was skipped" }, "5.6.7": { "errorCode": "NOT_FOUND", "errorMessage": "Could not find version 5.6.7" } } }
O código de erro SKIPPED
é usado para indicar que a versão não foi copiada para o repositório de destino porque outra versão não pôde ser copiada.
Versões que já existem no repositório de destino
Quando uma versão do pacote é copiada para um repositório onde ela já existe, CodeArtifact compara os ativos do pacote e os metadados do nível da versão do pacote nos dois repositórios.
Se os ativos e metadados da versão do pacote forem idênticos nos repositórios de origem e de destino, uma cópia não será executada, mas a operação será considerada bem-sucedida. Isso significa que copy-package-versions
é idempotente. Quando isso ocorrer, a versão que já estava presente nos repositórios de origem e de destino não será listada na saída docopy-package-versions
.
No exemplo a seguir, duas versões do pacote npm array-unique
estão presentes no repositório de origem repo-1
. A versão 0.2.1 também está presente no repositório de destino dest-repo
e a versão 0.2.0 não está.
aws codeartifact copy-package-versions --domain
my_domain
--domain-owner111122223333
\ --source-repositorymy_repo
--destination-repositoryrepo-2
--format npm --packagearray-unique
\ --versions0.2.1 0.2.0
A saída neste cenário será semelhante ao seguinte:
{ "successfulVersions": { "0.2.0": { "revision": "Yad+B1QcBq2kdEVrx1E1vSfHJVh8Pr61hBUkoWPGWX0=", "status": "Published" } }, "failedVersions": {} }
A versão 0.2.0 está listada no successfulVersions
porque foi copiada com sucesso do repositório de origem para o de destino. A versão 0.2.1 não é mostrada na saída, pois já estava presente no repositório de destino.
Se os ativos ou metadados da versão do pacote forem diferentes nos repositórios de origem e de destino, a operação de cópia falhará. Você pode usar o parâmetro --allow-overwrite
para forçar uma substituição.
Se existirem algumas versões no repositório de destino e outras não existirem, nenhuma versão será copiada. No exemplo a seguir, a versão 0.3.2 do pacote npm array-unique
está presente nos repositórios de origem e de destino, mas o conteúdo da versão do pacote é diferente. A versão 0.2.1 está presente no repositório de origem, mas não no de destino.
aws codeartifact copy-package-versions --domain
my_domain
--domain-owner111122223333
\ --source-repositorymy_repo
--destination-repositoryrepo-2
--format npm --packagearray-unique
\ --versions0.3.2 0.2.1
A saída neste cenário será semelhante ao seguinte:
{ "successfulVersions": {}, "failedVersions": { "0.2.1": { "errorCode": "SKIPPED", "errorMessage": "Version 0.2.1 was skipped" }, "0.3.2": { "errorCode": "ALREADY_EXISTS", "errorMessage": "Version 0.3.2 already exists" } } }
A versão 0.2.1 está marcada como SKIPPED
porque não foi copiada para o repositório de destino. Ela não foi copiada porque a cópia da versão 0.3.2 falhou porque ela já estava presente no repositório de destino, mas não era idêntica nos repositórios de origem e de destino.
Especificar uma revisão da versão do pacote
A revisão da versão do pacote é uma string que especifica um determinado conjunto de ativos e metadados da versão de um pacote. Você pode especificar uma revisão da versão do pacote para copiar as versões do pacote que estão em um estado definido. Para especificar uma revisão da versão do pacote, use o parâmetro --version-revisions
para passar uma ou mais versões do pacote separadas por vírgula e os pares de revisão da versão do pacote para o comando copy-package-versions
.
nota
É necessário especificar o parâmetro --versions
ou --version-revisions
com copy-package-versions
. Não é possível especificar ambos.
O exemplo a seguir só copiará a versão 0.3.2 do pacote my-package
se ela estiver presente no repositório de origem com a revisão da versão do pacote REVISION-1-SAMPLE-6C81EFF7DA55CC
.
aws codeartifact copy-package-versions --domain
my_domain
--domain-owner111122223333
--source-repositoryrepo-1
\ --destination-repositoryrepo-2
--format npm --namespacemy-namespace
\ --packagemy-package
--version-revisions0.3.2=REVISION-1-SAMPLE-6C81EFF7DA55CC
O exemplo a seguir copia duas versões do pacote my-package
, 0.3.2 e 0.3.13. A cópia só será bem-sucedida se, no repositório de origem, a versão 0.3.2 do my-package
tiver revisão REVISION-1-SAMPLE-6C81EFF7DA55CC
e a versão 0.3.13 tiver revisão REVISION-2-SAMPLE-55C752BEE772FC
.
aws codeartifact copy-package-versions --domain
my_domain
--domain-owner111122223333
--source-repositoryrepo-1
\ --destination-repositoryrepo-2
--format npm --namespacemy-namespace
\ --packagemy-package
--version-revisions0.3.2=REVISION-1-SAMPLE-6C81EFF7DA55CC
,0.3.13=REVISION-2-SAMPLE-55C752BEE772FC
Para localizar as revisões de uma versão do pacote, use o comando describe-package-version
ou list-package-versions
.
Para obter mais informações, consulte Revisão da versão do pacote e CopyPackageVersionna CodeArtifact APIReferência.
Copiar pacotes npm
Para obter mais informações sobre copy-package-versions
o comportamento com pacotes npm, consulte tags npm e o. CopyPackageVersions API