Pakete zwischen Repositorys kopieren - CodeArtifact

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 dem 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 Sie 111122223333 durch die ID des Accounts, der anruft. copy-package-versions

Anmerkung

Durch den Aufruf put-repository-permissions-policy wird die aktuelle Repository-Richtlinie ersetzt, 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-owner 111122223333 --source-repository my_repo \ --destination-repository repo-2 --package my-package --format npm \ --versions 6.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 das CodeArtifact SDK verwenden, rufen Sie die CopyPackageVersions API auf, 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-owner 111122223333 --source-repository repo-1 \ --destination-repository repo-2 --format npm --namespace types \ --package react --versions 0.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-owner 111122223333 \ --source-repository my_repo --destination-repository repo-2 --format maven --namespace com.google.guava \ --package guava --versions 27.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-owner 111122223333 \ --source-repository my_repo --destination-repository repo-2 --format npm \ --package array-unique --versions 0.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 vorhanden sind

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 Vermögenswerte 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-owner 111122223333 \ --source-repository my_repo --destination-repository repo-2 --format npm --package array-unique \ --versions 0.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-owner 111122223333 \ --source-repository my_repo --destination-repository repo-2 --format npm --package array-unique \ --versions 0.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-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

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-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

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 API-Referenz.

Kopieren Sie npm-Pakete

Weitere Informationen zum copy-package-versions Verhalten mit npm-Paketen finden Sie unter npm-Tags und in der API. CopyPackageVersions