Copia i pacchetti tra i repository - CodeArtifact

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Copia i pacchetti tra i repository

È possibile copiare le versioni dei pacchetti da un repository a un altro in. CodeArtifact Ciò può essere utile per scenari come i flussi di lavoro per la promozione dei pacchetti o la condivisione delle versioni dei pacchetti tra team o progetti. I repository di origine e di destinazione devono trovarsi nello stesso dominio per copiare le versioni dei pacchetti.

IAMAutorizzazioni richieste per copiare i pacchetti

Per copiare le versioni dei pacchetti CodeArtifact, l'utente chiamante deve disporre delle IAM autorizzazioni richieste e la politica basata sulle risorse allegata ai repository di origine e destinazione deve disporre delle autorizzazioni richieste. Per ulteriori informazioni sulle politiche e sugli archivi di autorizzazioni basati sulle risorse, vedere. CodeArtifact Policy del repository

L'utente che chiama copy-package-versions deve avere l'ReadFromRepositoryautorizzazione sul repository di origine e l'autorizzazione sul repository di destinazione. CopyPackageVersions

Il repository di origine deve disporre dell'ReadFromRepositoryautorizzazione e il repository di destinazione deve avere l'CopyPackageVersionsautorizzazione assegnata all'IAMaccount o all'utente che copia i pacchetti. Le seguenti politiche sono esempi di politiche di repository da aggiungere al repository di origine o al repository di destinazione con il comando. put-repository-permissions-policy Replace (Sostituisci) 111122223333 con l'ID dell'account chiamante. copy-package-versions

Nota

La chiamata put-repository-permissions-policy sostituirà l'attuale politica del repository, se ne esiste una. Puoi usare il get-repository-permissions-policy comando per vedere se esiste una politica, per maggiori informazioni vediLeggi una politica. Se una politica esiste, potresti voler aggiungere queste autorizzazioni ad essa invece di sostituirla.

Esempio di politica di autorizzazione del repository di origine

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Resource": "*" } ] }

Esempio di politica di autorizzazione del repository di destinazione

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:CopyPackageVersions" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Resource": "*" } ] }

Copia le versioni dei pacchetti

Usa il copy-package-versions comando in CodeArtifact per copiare una o più versioni del pacchetto da un repository di origine a un repository di destinazione nello stesso dominio. L'esempio seguente copierà le versioni 6.0.2 e 4.0.0 di un pacchetto npm denominato my-package dal repository al repository. my_repo repo-2

aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 --source-repository my_repo \ --destination-repository repo-2 --package my-package --format npm \ --versions 6.0.2 4.0.0

È possibile copiare più versioni dello stesso nome di pacchetto in un'unica operazione. Per copiare versioni di nomi di pacchetto diversi, è necessario chiamare ciascuno copy-package-versions di essi.

Il comando precedente produrrà l'output seguente, supponendo che entrambe le versioni possano essere copiate correttamente.

{ "successfulVersions": { "6.0.2": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, "4.0.0": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }

Copia un pacchetto dai repository upstream

Normalmente, cerca nel repository specificato dall'--source-repositoryopzione copy-package-versions solo le versioni da copiare. Tuttavia, è possibile copiare le versioni sia dal repository di origine che dai relativi repository upstream utilizzando l'opzione. --include-from-upstream Se utilizzate il CodeArtifact SDK, chiamate il CopyPackageVersions API con il includeFromUpstream parametro impostato su true. Per ulteriori informazioni, consulta Lavorare con i repository upstream in CodeArtifact.

Copia un pacchetto npm con ambito

Per copiare una versione del pacchetto npm in un ambito, usa l'--namespaceopzione per specificare l'ambito. Ad esempio, per copiare il pacchetto@types/react, usa--namespace types. Il @ simbolo deve essere omesso durante l'utilizzo--namespace.

aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 --source-repository repo-1 \ --destination-repository repo-2 --format npm --namespace types \ --package react --versions 0.12.2

Copia le versioni del pacchetto Maven

Per copiare le versioni dei pacchetti Maven tra i repository, specifica il pacchetto da copiare passando l'ID del gruppo Maven con l'--namespaceopzione e il Maven ArtifactID con l'opzione. --name Ad esempio, per copiare una singola versione di: com.google.guava:guava

aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 \ --source-repository my_repo --destination-repository repo-2 --format maven --namespace com.google.guava \ --package guava --versions 27.1-jre

Se la versione del pacchetto viene copiata correttamente, l'output sarà simile al seguente.

{ "successfulVersions": { "27.1-jre": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }

Versioni che non esistono nel repository di origine

Se si specifica una versione che non esiste nel repository di origine, la copia avrà esito negativo. Se alcune versioni esistono nel repository di origine e altre no, tutte le versioni non verranno copiate. Nell'esempio seguente, la versione 0.2.0 del pacchetto array-unique npm è presente nel repository dei sorgenti, ma la versione 5.6.7 no:

aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 \ --source-repository my_repo --destination-repository repo-2 --format npm \ --package array-unique --versions 0.2.0 5.6.7

L'output in questo scenario sarà simile al seguente.

{ "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" } } }

Il codice SKIPPED di errore viene utilizzato per indicare che la versione non è stata copiata nel repository di destinazione perché non è stato possibile copiare un'altra versione.

Versioni già esistenti nel repository di destinazione

Quando una versione del pacchetto viene copiata in un repository in cui esiste già, CodeArtifact confronta le risorse del pacchetto e i metadati a livello di versione del pacchetto nei due repository.

Se le risorse e i metadati della versione del pacchetto sono identici negli archivi di origine e di destinazione, non viene eseguita una copia ma l'operazione viene considerata riuscita. Ciò significa che copy-package-versions è idempotente. Quando ciò si verifica, la versione che era già presente nei repository di origine e di destinazione non verrà elencata nell'output di. copy-package-versions

Nell'esempio seguente, due versioni del pacchetto npm array-unique sono presenti nel repository dei sorgenti. repo-1 La versione 0.2.1 è presente anche nel repository di destinazione dest-repo e la versione 0.2.0 no.

aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 \ --source-repository my_repo --destination-repository repo-2 --format npm --package array-unique \ --versions 0.2.1 0.2.0

L'output in questo scenario sarà simile al seguente.

{ "successfulVersions": { "0.2.0": { "revision": "Yad+B1QcBq2kdEVrx1E1vSfHJVh8Pr61hBUkoWPGWX0=", "status": "Published" } }, "failedVersions": {} }

La versione 0.2.0 è elencata in successfulVersions quanto è stata copiata correttamente dal repository di origine a quello di destinazione. La versione 0.2.1 non viene mostrata nell'output in quanto era già presente nell'archivio di destinazione.

Se le risorse o i metadati della versione del pacchetto differiscono negli archivi di origine e di destinazione, l'operazione di copia avrà esito negativo. È possibile utilizzare il --allow-overwrite parametro per forzare una sovrascrittura.

Se alcune versioni esistono nel repository di destinazione e altre no, tutte le versioni non verranno copiate. Nell'esempio seguente, la versione 0.3.2 del pacchetto array-unique npm è presente sia nell'archivio di origine che in quello di destinazione, ma i contenuti della versione del pacchetto sono diversi. La versione 0.2.1 è presente nel repository di origine ma non in quello di destinazione.

aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 \ --source-repository my_repo --destination-repository repo-2 --format npm --package array-unique \ --versions 0.3.2 0.2.1

L'output in questo scenario sarà simile al seguente.

{ "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" } } }

La versione 0.2.1 è contrassegnata come SKIPPED se non fosse stata copiata nel repository di destinazione. Non è stato copiato perché la copia della versione 0.3.2 non è riuscita perché era già presente nel repository di destinazione, ma non era identica nei repository di origine e di destinazione.

Specificare una revisione della versione del pacchetto

Una revisione della versione del pacchetto è una stringa che specifica un insieme specifico di risorse e metadati per una versione del pacchetto. È possibile specificare una revisione della versione del pacchetto per copiare le versioni del pacchetto che si trovano in uno stato specifico. Per specificare una revisione della versione del pacchetto, utilizzate il --version-revisions parametro per passare al comando una o più versioni del pacchetto separate da virgole e le coppie di revisione della versione del pacchetto. copy-package-versions

Nota

È necessario specificare il parametro o con--versions. --version-revisions copy-package-versions Non è possibile specificare entrambi.

L'esempio seguente copierà la versione 0.3.2 del pacchetto solo my-package se è presente nell'archivio dei sorgenti con la revisione della versione del pacchetto. REVISION-1-SAMPLE-6C81EFF7DA55CC

aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 --source-repository repo-1 \ --destination-repository repo-2 --format npm --namespace my-namespace \ --package my-package --version-revisions 0.3.2=REVISION-1-SAMPLE-6C81EFF7DA55CC

L'esempio seguente copia due versioni del pacchettomy-package, 0.3.2 e 0.3.13. La copia avrà successo solo se nel repository di origine la versione 0.3.2 di my-package ha una revisione e la versione 0.3.13 ha una revisioneREVISION-1-SAMPLE-6C81EFF7DA55CC. REVISION-2-SAMPLE-55C752BEE772FC

aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 --source-repository repo-1 \ --destination-repository repo-2 --format npm --namespace my-namespace \ --package my-package --version-revisions 0.3.2=REVISION-1-SAMPLE-6C81EFF7DA55CC,0.3.13=REVISION-2-SAMPLE-55C752BEE772FC

Per trovare le revisioni di una versione del pacchetto, usa il comando o. describe-package-version list-package-versions

Per ulteriori informazioni, vedere Revisione della versione del pacchetto e CopyPackageVersionnel CodeArtifact APIReference.

Copia i pacchetti npm

Per ulteriori informazioni sul copy-package-versions comportamento con i pacchetti npm, vedere i tag npm e il. CopyPackageVersions API