Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Copier des packages entre les référentiels
Vous pouvez copier les versions des packages d'un référentiel à un autre dans CodeArtifact. Cela peut être utile pour des scénarios tels que les flux de travail de promotion de packages ou le partage de versions de packages entre des équipes ou des projets. Les référentiels source et de destination doivent se trouver dans le même domaine pour copier les versions des packages.
Autorisations IAM requises pour copier des packages
Pour copier les versions des packages CodeArtifact, l'utilisateur appelant doit disposer des autorisations IAM requises et la politique basée sur les ressources associée aux référentiels source et de destination doit disposer des autorisations requises. Pour plus d'informations sur les politiques d'autorisations et les CodeArtifact référentiels basés sur les ressources, consultez. Politiques de référentiel
L'utilisateur appelant copy-package-versions doit disposer de l'ReadFromRepositoryautorisation sur le référentiel source et de l'CopyPackageVersionsautorisation sur le référentiel de destination.
Le référentiel source doit disposer de l'ReadFromRepositoryautorisation et le référentiel de destination doit disposer de l'CopyPackageVersionsautorisation attribuée au compte IAM ou à l'utilisateur qui copie les packages. Les politiques suivantes sont des exemples de politiques de référentiel à ajouter au référentiel source ou au référentiel de destination à l'aide de la put-repository-permissions-policy commande. 111122223333Remplacez-le par l'identifiant du compte appelantcopy-package-versions.
Note
L'appel put-repository-permissions-policy remplacera la politique de dépôt actuelle, s'il en existe une. Vous pouvez utiliser la get-repository-permissions-policy commande pour voir si une politique existe, pour plus d'informations, voirLire une politique. Si une politique existe, vous souhaiterez peut-être y ajouter ces autorisations au lieu de la remplacer.
Exemple de politique d'autorisation du référentiel source
Exemple de politique d'autorisation du référentiel de destination
Copier les versions des packages
Utilisez la copy-package-versions commande in CodeArtifact pour copier une ou plusieurs versions de package d'un référentiel source vers un référentiel de destination dans le même domaine. L'exemple suivant copiera les versions 6.0.2 et 4.0.0 d'un package npm nommé my-package depuis le my_repo référentiel vers le référentiel. repo-2
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333--source-repositorymy_repo\ --destination-repositoryrepo-2--packagemy-package--format npm \ --versions6.0.2 4.0.0
Vous pouvez copier plusieurs versions du même nom de package en une seule opération. Pour copier des versions de différents noms de packages, vous devez appeler chacun copy-package-versions d'entre eux.
La commande précédente produira le résultat suivant, en supposant que les deux versions puissent être copiées correctement.
{ "successfulVersions": { "6.0.2": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, "4.0.0": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }
Copier un package depuis les référentiels en amont
Normalement, recherche copy-package-versions uniquement les versions à copier dans le référentiel spécifié par l'--source-repositoryoption. Vous pouvez toutefois copier des versions à partir du référentiel source et de ses référentiels en amont à l'aide de --include-from-upstream cette option. Si vous utilisez le CodeArtifact SDK, appelez l'CopyPackageVersionsAPI avec le includeFromUpstream paramètre défini sur true. Pour de plus amples informations, veuillez consulter Utilisation de référentiels en amont dans CodeArtifact.
Copier un package npm limité
Pour copier la version d'un package npm dans une étendue, utilisez l'--namespaceoption permettant de spécifier la portée. Par exemple, pour copier le package@types/react, utilisez--namespace types. Le @ symbole doit être omis lors de l'utilisation--namespace.
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333--source-repositoryrepo-1\ --destination-repositoryrepo-2--format npm --namespacetypes\ --packagereact--versions0.12.2
Copier les versions des packages Maven
Pour copier les versions de packages Maven entre les référentiels, spécifiez le package à copier en transmettant l'ID du groupe Maven avec l'--namespaceoption et le Maven ArtifactID avec l'option. --name Par exemple, pour copier une seule version de com.google.guava:guava :
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333\ --source-repositorymy_repo--destination-repositoryrepo-2--format maven --namespacecom.google.guava\ --packageguava--versions27.1-jre
Si la version du package est copiée avec succès, la sortie sera similaire à la suivante.
{ "successfulVersions": { "27.1-jre": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }
Versions qui n'existent pas dans le référentiel source
Si vous spécifiez une version qui n'existe pas dans le référentiel source, la copie échouera. Si certaines versions existent dans le référentiel source et d'autres non, toutes les versions ne pourront pas être copiées. Dans l'exemple suivant, la version 0.2.0 du package array-unique npm est présente dans le référentiel source, mais pas la version 5.6.7 :
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333\ --source-repositorymy_repo--destination-repositoryrepo-2--format npm \ --packagearray-unique--versions0.2.0 5.6.7
Le résultat de ce scénario sera similaire au suivant.
{ "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" } } }
Le code SKIPPED d'erreur est utilisé pour indiquer que la version n'a pas été copiée dans le référentiel de destination car aucune autre version n'a pu être copiée.
Versions qui existent déjà dans le référentiel de destination
Lorsqu'une version de package est copiée dans un référentiel où elle existe déjà, CodeArtifact compare ses actifs de package et les métadonnées au niveau de la version du package dans les deux référentiels.
Si les actifs et les métadonnées de la version du package sont identiques dans les référentiels source et de destination, aucune copie n'est effectuée mais l'opération est considérée comme réussie. Cela signifie qu'il copy-package-versions est idempotent. Dans ce cas, la version qui était déjà présente dans les référentiels source et de destination ne sera pas répertoriée dans la sortie decopy-package-versions.
Dans l'exemple suivant, deux versions du package npm array-unique sont présentes dans le référentiel repo-1 source. La version 0.2.1 est également présente dans le référentiel de destination dest-repo et la version 0.2.0 ne l'est pas.
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333\ --source-repositorymy_repo--destination-repositoryrepo-2--format npm --packagearray-unique\ --versions0.2.1 0.2.0
Le résultat de ce scénario sera similaire au suivant.
{ "successfulVersions": { "0.2.0": { "revision": "Yad+B1QcBq2kdEVrx1E1vSfHJVh8Pr61hBUkoWPGWX0=", "status": "Published" } }, "failedVersions": {} }
La version 0.2.0 est répertoriée successfulVersions car elle a été copiée avec succès du référentiel source vers le référentiel de destination. La version 0.2.1 n'apparaît pas dans la sortie car elle était déjà présente dans le référentiel de destination.
Si les actifs ou les métadonnées de la version du package diffèrent dans les référentiels source et de destination, l'opération de copie échouera. Vous pouvez utiliser --allow-overwrite ce paramètre pour forcer une réécriture.
Si certaines versions existent dans le référentiel de destination et d'autres non, toutes les versions ne pourront pas être copiées. Dans l'exemple suivant, la version 0.3.2 du package array-unique npm est présente à la fois dans les référentiels source et de destination, mais le contenu de la version du package est différent. La version 0.2.1 est présente dans le référentiel source mais pas dans la destination.
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333\ --source-repositorymy_repo--destination-repositoryrepo-2--format npm --packagearray-unique\ --versions0.3.2 0.2.1
Le résultat de ce scénario sera similaire au suivant.
{ "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 version 0.2.1 est marquée comme étant due au SKIPPED fait qu'elle n'a pas été copiée dans le référentiel de destination. Elle n'a pas été copiée car la copie de la version 0.3.2 a échoué car elle était déjà présente dans le référentiel de destination, mais n'était pas identique dans les référentiels source et de destination.
Spécifier une révision de version de package
Une révision de version de package est une chaîne qui spécifie un ensemble spécifique de ressources et de métadonnées pour une version de package. Vous pouvez spécifier une révision de version de package pour copier les versions de package qui se trouvent dans un état spécifique. Pour spécifier une révision de version de package, utilisez le --version-revisions paramètre pour transmettre à la commande une ou plusieurs versions de package séparées par des virgules et les paires de révisions de version de copy-package-versions package.
Note
Vous devez spécifier le --versions ou le --version-revisions paramètre aveccopy-package-versions. Vous ne pouvez pas spécifier les deux.
L'exemple suivant copiera la version 0.3.2 du package uniquement my-package si elle est présente dans le référentiel source avec la révision REVISION-1-SAMPLE-6C81EFF7DA55CC de la version du package.
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333--source-repositoryrepo-1\ --destination-repositoryrepo-2--format npm --namespacemy-namespace\ --packagemy-package--version-revisions0.3.2=REVISION-1-SAMPLE-6C81EFF7DA55CC
L'exemple suivant copie deux versions du packagemy-package, 0.3.2 et 0.3.13. La copie ne réussira que si, dans le référentiel source, la version 0.3.2 my-package possède une révision REVISION-1-SAMPLE-6C81EFF7DA55CC et la version 0.3.13 une révision. REVISION-2-SAMPLE-55C752BEE772FC
aws codeartifact copy-package-versions --domainmy_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
Pour rechercher les révisions d'une version de package, utilisez la list-package-versions commande describe-package-version ou.
Pour plus d'informations, veuillez consulter les sections Révision de la version du package et CopyPackageVersion (français non garanti) de la Référence d'API CodeArtifact .
Copier les packages npm
Pour plus d'informations sur copy-package-versions le comportement avec les packages npm, consultez les balises npm et l' CopyPackageVersionsAPI.