

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
<a name="copy-package"></a>

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
<a name="copypackageversions-iam-actions"></a>

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](repo-policies.md)

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. Ersetze es *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 unter[Lesen Sie eine Richtlinie](repo-policies.md#reading-a-policy). 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**

------
#### [ JSON ]

****  

```
{
    "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**

------
#### [ JSON ]

****  

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

------

## Kopieren Sie die Paketversionen
<a name="copy-package-versions"></a>

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
<a name="copy-package-upstream"></a>

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](repos-upstream.md).

## Kopieren Sie ein NPM-Paket mit Gültigkeitsbereich
<a name="copying-a-scoped-npm-package"></a>

 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
<a name="copying-a-maven-package"></a>

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
<a name="versions-that-do-not-exist-in-the-source-repository"></a>

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 existieren
<a name="versions-that-already-exist-in-the-destination-repository"></a>

 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-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ührt`successfulVersions`, 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 gekennzeichnet`SKIPPED`, 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
<a name="specify-package-version-revision"></a>

 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 Pakets`my-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](codeartifact-concepts.md#welcome-concepts-package-version-revision) und [CopyPackageVersion](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_CopyPackageVersions.html) in der *CodeArtifact -API-Referenz*. 

## NPM-Pakete kopieren
<a name="copying-npm-packages"></a>

 Weitere Informationen zum `copy-package-versions` Verhalten mit npm-Paketen finden Sie unter [npm-Tags und](npm-tags.md#tags-and-cpv) in der API. CopyPackageVersions 