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'ReadFromRepository
autorizzazione sul repository di origine e l'autorizzazione sul repository di destinazione. CopyPackageVersions
Il repository di origine deve disporre dell'ReadFromRepository
autorizzazione e il repository di destinazione deve avere l'CopyPackageVersions
autorizzazione 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-owner111122223333
--source-repositorymy_repo
\ --destination-repositoryrepo-2
--packagemy-package
--format npm \ --versions6.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-repository
opzione 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'--namespace
opzione 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-owner111122223333
--source-repositoryrepo-1
\ --destination-repositoryrepo-2
--format npm --namespacetypes
\ --packagereact
--versions0.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'--namespace
opzione 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-owner111122223333
\ --source-repositorymy_repo
--destination-repositoryrepo-2
--format maven --namespacecom.google.guava
\ --packageguava
--versions27.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-owner111122223333
\ --source-repositorymy_repo
--destination-repositoryrepo-2
--format npm \ --packagearray-unique
--versions0.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-owner111122223333
\ --source-repositorymy_repo
--destination-repositoryrepo-2
--format npm --packagearray-unique
\ --versions0.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-owner111122223333
\ --source-repositorymy_repo
--destination-repositoryrepo-2
--format npm --packagearray-unique
\ --versions0.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-owner111122223333
--source-repositoryrepo-1
\ --destination-repositoryrepo-2
--format npm --namespacemy-namespace
\ --packagemy-package
--version-revisions0.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-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
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