Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Pakete zwischen Repositorys kopieren
Sie können Paketversionen von einem Repository in ein anderes kopieren CodeArtifact. Dies kann für Szenarien wie Workflows zur Förderung von Paketen oder die gemeinsame Nutzung von Paketversionen zwischen Teams oder Projekten hilfreich sein. Das Quell- und das Ziel-Repository müssen sich in derselben Domäne befinden, um Paketversionen kopieren zu können.
Erforderliche IAM Berechtigungen zum Kopieren von Paketen
Zum Kopieren von Paketversionen muss der aufrufende Benutzer über die erforderlichen IAM Berechtigungen verfügen CodeArtifact, und die ressourcenbasierte Richtlinie, die mit den Quell- und Ziel-Repositorys verknüpft ist, muss über die erforderlichen Berechtigungen verfügen. Weitere Informationen zu ressourcenbasierten Berechtigungsrichtlinien und Repositorys finden Sie unter. CodeArtifact Repository-Richtlinien
Der Benutzer, der anruft, copy-package-versions
muss über die ReadFromRepository
Berechtigungen für das Quell-Repository und über die CopyPackageVersions
Berechtigung für das Ziel-Repository verfügen.
Das Quell-Repository muss über die ReadFromRepository
entsprechende Berechtigung verfügen und das Ziel-Repository muss über die CopyPackageVersions
Berechtigung verfügen, die dem IAM Konto oder Benutzer zugewiesen wurde, der Pakete kopiert. Die folgenden Richtlinien sind Beispiele für Repository-Richtlinien, die mit dem put-repository-permissions-policy
Befehl zum Quell-Repository oder Ziel-Repository hinzugefügt werden können. Ersetzen 111122223333
mit der ID des Accounts, der anruftcopy-package-versions
.
Anmerkung
Der Aufruf ersetzt put-repository-permissions-policy
die aktuelle Repository-Richtlinie, falls eine existiert. Sie können den get-repository-permissions-policy
Befehl verwenden, um zu überprüfen, ob eine Richtlinie existiert. Weitere Informationen finden Sie unterLesen Sie eine Richtlinie. Wenn eine Richtlinie existiert, sollten Sie ihr diese Berechtigungen hinzufügen, anstatt sie zu ersetzen.
Beispiel für eine Berechtigungsrichtlinie für das Quell-Repository
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Resource": "*" } ] }
Beispiel für eine Berechtigungsrichtlinie für ein Ziel-Repository
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:CopyPackageVersions" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Resource": "*" } ] }
Kopieren Sie die Paketversionen
Verwenden Sie den copy-package-versions
Befehl in CodeArtifact , um eine oder mehrere Paketversionen von einem Quell-Repository in ein Ziel-Repository in derselben Domäne zu kopieren. Im folgenden Beispiel werden die Versionen 6.0.2 und 4.0.0 eines npm-Pakets mit dem Namen my-package
aus dem Repository in das my_repo
Repository kopiert. 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
Sie können mehrere Versionen desselben Paketnamens in einem einzigen Vorgang kopieren. Um Versionen verschiedener Paketnamen zu kopieren, müssen Sie copy-package-versions
jede Version aufrufen.
Der vorherige Befehl erzeugt die folgende Ausgabe, vorausgesetzt, beide Versionen konnten erfolgreich kopiert werden.
{ "successfulVersions": { "6.0.2": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, "4.0.0": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }
Kopiert ein Paket aus Upstream-Repositorys
Normalerweise sucht es copy-package-versions
nur in dem mit der --source-repository
Option angegebenen Repository nach zu kopierenden Versionen. Sie können jedoch Versionen sowohl aus dem Quell-Repository als auch aus seinen Upstream-Repositorys kopieren, indem Sie die --include-from-upstream
Option verwenden. Wenn Sie die verwenden CodeArtifact SDK, rufen Sie die auf, CopyPackageVersions
API wobei der includeFromUpstream
Parameter auf true gesetzt ist. Weitere Informationen finden Sie unter Arbeiten mit Upstream-Repositorys in CodeArtifact.
Kopieren Sie ein NPM-Paket mit Gültigkeitsbereich
Um eine NPM-Paketversion in einen Bereich zu kopieren, verwenden Sie die --namespace
Option, um den Bereich anzugeben. Um das Paket beispielsweise zu kopieren@types/react
, verwenden Sie--namespace types
. Das @
Symbol muss bei der Verwendung weggelassen werden--namespace
.
aws codeartifact copy-package-versions --domain
my_domain
--domain-owner111122223333
--source-repositoryrepo-1
\ --destination-repositoryrepo-2
--format npm --namespacetypes
\ --packagereact
--versions0.12.2
Kopieren Sie die Maven-Paketversionen
Um Maven-Paketversionen zwischen Repositorys zu kopieren, geben Sie das zu kopierende Paket an, indem Sie die Maven-Gruppen-ID mit der --namespace
Option und die Maven-ArtifactID mit der Option übergeben. --name
Um beispielsweise eine einzelne Version von zu kopieren: 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
Wenn die Paketversion erfolgreich kopiert wurde, sieht die Ausgabe wie folgt aus.
{ "successfulVersions": { "27.1-jre": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }
Versionen, die im Quell-Repository nicht existieren
Wenn Sie eine Version angeben, die im Quell-Repository nicht existiert, schlägt der Kopiervorgang fehl. Wenn einige Versionen im Quell-Repository existieren und andere nicht, schlägt das Kopieren aller Versionen fehl. Im folgenden Beispiel ist Version 0.2.0 des array-unique
npm-Pakets im Quell-Repository vorhanden, Version 5.6.7 jedoch nicht:
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
Die Ausgabe in diesem Szenario wird der folgenden ähneln.
{ "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" } } }
Der SKIPPED
Fehlercode wird verwendet, um anzuzeigen, dass die Version nicht in das Ziel-Repository kopiert wurde, weil eine andere Version nicht kopiert werden konnte.
Versionen, die bereits im Ziel-Repository existieren
Wenn eine Paketversion in ein Repository kopiert wird, in dem sie bereits existiert, werden ihre Paketressourcen und Metadaten auf Paketversionsebene in den beiden Repositorys CodeArtifact verglichen.
Wenn die Ressourcen und Metadaten der Paketversion in den Quell- und Ziel-Repositorys identisch sind, wird kein Kopiervorgang durchgeführt, der Vorgang wird jedoch als erfolgreich angesehen. Das bedeutet, dass es copy-package-versions
idempotent ist. In diesem Fall wird die Version, die bereits im Quell- und im Ziel-Repository vorhanden war, in der Ausgabe von nicht aufgeführt. copy-package-versions
Im folgenden Beispiel array-unique
sind zwei Versionen des npm-Pakets im Quell-Repository vorhanden. repo-1
Version 0.2.1 ist auch im Ziel-Repository vorhanden dest-repo
und Version 0.2.0 nicht.
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
Die Ausgabe in diesem Szenario wird der folgenden ähneln.
{ "successfulVersions": { "0.2.0": { "revision": "Yad+B1QcBq2kdEVrx1E1vSfHJVh8Pr61hBUkoWPGWX0=", "status": "Published" } }, "failedVersions": {} }
Version 0.2.0 ist in aufgeführtsuccessfulVersions
, weil sie erfolgreich vom Quell- in das Ziel-Repository kopiert wurde. Version 0.2.1 wird in der Ausgabe nicht angezeigt, da sie bereits im Ziel-Repository vorhanden war.
Wenn sich die Inhalte oder Metadaten der Paketversion in den Quell- und Ziel-Repositorys unterscheiden, schlägt der Kopiervorgang fehl. Sie können den --allow-overwrite
Parameter verwenden, um ein Überschreiben zu erzwingen.
Wenn einige Versionen im Ziel-Repository existieren und andere nicht, können alle Versionen nicht kopiert werden. Im folgenden Beispiel ist Version 0.3.2 des array-unique
npm-Pakets sowohl im Quell- als auch im Ziel-Repository vorhanden, der Inhalt der Paketversion ist jedoch unterschiedlich. Version 0.2.1 ist im Quell-Repository vorhanden, aber nicht im Ziel-Repository.
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
Die Ausgabe in diesem Szenario wird der folgenden ähneln.
{ "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" } } }
Version 0.2.1 ist als gekennzeichnetSKIPPED
, weil sie nicht in das Ziel-Repository kopiert wurde. Sie wurde nicht kopiert, weil die Kopie von Version 0.3.2 fehlschlug, weil sie bereits im Ziel-Repository vorhanden war, aber im Quell- und Ziel-Repository nicht identisch war.
Angabe einer Paketversionsrevision
Eine Paketversionsrevision ist eine Zeichenfolge, die einen bestimmten Satz von Elementen und Metadaten für eine Paketversion angibt. Sie können eine Paketversionsrevision angeben, um Paketversionen zu kopieren, die sich in einem bestimmten Status befinden. Um eine Paketversionsrevision anzugeben, verwenden Sie den --version-revisions
Parameter, um eine oder mehrere durch Kommas getrennte Paketversionen und die Revisionspaare der Paketversion an den copy-package-versions
Befehl zu übergeben.
Anmerkung
Sie müssen den --versions
oder den --version-revisions
Parameter mit angeben. copy-package-versions
Sie können nicht beides angeben.
Im folgenden Beispiel wird Version 0.3.2 des Pakets nur kopiert, my-package
wenn es im Quell-Repository mit der Paketversionsrevision REVISION-1-SAMPLE-6C81EFF7DA55CC
vorhanden ist.
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
Das folgende Beispiel kopiert zwei Versionen des Paketsmy-package
, 0.3.2 und 0.3.13. Das Kopieren ist nur erfolgreich, wenn im Quell-Repository Version 0.3.2 von Revision REVISION-1-SAMPLE-6C81EFF7DA55CC
und Version my-package
0.3.13 Revision hat. 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
Um die Revisionen einer Paketversion zu finden, verwenden Sie den Befehl oder den describe-package-version
Befehl. list-package-versions
Weitere Informationen finden Sie unter Revision der Paketversion und CopyPackageVersionin der CodeArtifact APIReferenz.
Kopieren Sie npm-Pakete
Weitere Informationen zum copy-package-versions
Verhalten mit npm-Paketen finden Sie unter npm-Tags und in. CopyPackageVersions API