

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.

# Arbeiten Sie mit Paketen in CodeArtifact
<a name="packages"></a>

In den folgenden Themen erfahren Sie, wie Sie mithilfe der CodeArtifact CLI und der API Aktionen für Pakete ausführen.

**Topics**
+ [Überblick über Pakete](packages-overview.md)
+ [Listet die Paketnamen auf](list-packages.md)
+ [Paketversionen auflisten](list-packages-versions.md)
+ [Listet die Ressourcen der Paketversion auf](list-assets.md)
+ [Laden Sie die Ressourcen der Paketversion herunter](download-assets.md)
+ [Pakete zwischen Repositorys kopieren](copy-package.md)
+ [Löschen Sie ein Paket oder eine Paketversion](delete-package.md)
+ [Details und Abhängigkeiten der Paketversion anzeigen und aktualisieren](describe-package-version.md)
+ [Aktualisiere den Status der Paketversion](update-package-version-status.md)
+ [Einstellungen zur Paketherkunft bearbeiten](package-origin-controls.md)

# Überblick über Pakete
<a name="packages-overview"></a>

Ein *Paket* ist ein Softwarepaket und die Metadaten, die zur Auflösung von Abhängigkeiten und zur Installation der Software erforderlich sind. In CodeArtifact besteht ein Paket aus einem Paketnamen, einem optionalen [Namespace](codeartifact-concepts.md#welcome-concepts-package-namespace) wie `@types` in`@types/node`, einer Reihe von Paketversionen und Metadaten auf Paketebene wie npm-Tags.

**Contents**
+ [Unterstützte Paketformate](#supported-package-formats)
+ [Veröffentlichen von Paketen](#package-publishing)
  + [Veröffentlichungsberechtigungen](#package-publishing-permissions)
  + [Paket-Assets überschreiben](#package-publishing-overwrite-assets)
  + [Private Pakete und öffentliche Repositorys](#package-publishing-upstreams-direct)
  + [Veröffentlichen gepatchter Paketversionen](#package-publishing-patched-versions)
  + [Beschränkungen der Asset-Größe für die Veröffentlichung](#package-publishing-asset-size-limits)
  + [Latenz bei der Veröffentlichung](#package-publishing-latency)
+ [Status der Paketversion](#package-version-status)
+ [Normalisierung von Paketnamen, Paketversion und Assetnamen](#package-name-normalization)

## Unterstützte Paketformate
<a name="supported-package-formats"></a>

AWS CodeArtifact [unterstützt die [Paketformate Cargo](using-cargo.md), [Generic](using-generic.md), [Maven](using-maven.md), [npm [NuGet](using-nuget.md)](using-npm.md), [PyPI](using-python.md), [Ruby und Swift](using-ruby.md).](using-swift.md)

## Veröffentlichen von Paketen
<a name="package-publishing"></a>

 Sie können neue Versionen jedes [unterstützten Paketformats](#supported-package-formats) mit Tools wie`npm`,, `twine` `Maven` `Gradle``nuget`, und in einem CodeArtifact Repository veröffentlichen`dotnet`.

### Veröffentlichungsberechtigungen
<a name="package-publishing-permissions"></a>

Ihr AWS Identity and Access Management (IAM-) Benutzer oder Ihre Rolle muss über Berechtigungen zum Veröffentlichen im Ziel-Repository verfügen. Die folgenden Berechtigungen sind erforderlich, um Pakete zu veröffentlichen:
+ **Fracht:** `codeartifact:PublishPackageVersion`
+ **generisch:** `codeartifact:PublishPackageVersion`
+ **Maven:** `codeartifact:PublishPackageVersion` und `codeartifact:PutPackageMetadata`
+ **npm:** `codeartifact:PublishPackageVersion`
+ **NuGet:** `codeartifact:PublishPackageVersion` und `codeartifact:ReadFromRepository`
+ **Python:** `codeartifact:PublishPackageVersion`
+ **Rubin:** `codeartifact:PublishPackageVersion`
+ **Schnell:** `codeartifact:PublishPackageVersion`

In der obigen Liste von Berechtigungen muss Ihre IAM-Richtlinie die `package` Ressource für die `codeartifact:PutPackageMetadata` Berechtigungen `codeartifact:PublishPackageVersion` und angeben. Sie muss auch die `repository` Ressource für die `codeartifact:ReadFromRepository` Berechtigung angeben.

Weitere Hinweise zu Berechtigungen in CodeArtifact finden Sie unter[AWS CodeArtifact Referenz zu Berechtigungen](auth-and-access-control-permissions-reference.md).

### Paket-Assets überschreiben
<a name="package-publishing-overwrite-assets"></a>

 Sie können ein bereits vorhandenes Paket-Asset mit einem anderen Inhalt nicht erneut veröffentlichen. Nehmen wir beispielsweise an, Sie haben bereits ein Maven-Paket mit einem JAR-Asset veröffentlicht. `mypackage-1.0.jar` Sie können dieses Asset nur dann erneut veröffentlichen, wenn die Prüfsumme der alten und neuen Assets identisch ist. Um dasselbe Asset mit neuem Inhalt erneut zu veröffentlichen, löschen Sie zuerst die Paketversion, indem Sie den **delete-package-versions** Befehl verwenden. Der Versuch, denselben Asset-Namen mit anderem Inhalt erneut zu veröffentlichen, führt zu einem HTTP-409-Konfliktfehler. 

 Für Paketformate, die mehrere Assets unterstützen (Generic, PyPI und Maven), können Sie einer vorhandenen Paketversion neue Assets mit unterschiedlichen Namen hinzufügen, vorausgesetzt, Sie verfügen über die erforderlichen Berechtigungen. Bei generischen Paketen können Sie neue Assets hinzufügen, solange sich die Paketversion im Status befindet. `Unfinished` Da npm nur ein einzelnes Asset pro Paketversion unterstützt, müssen Sie, um eine veröffentlichte Paketversion auf irgendeine Weise zu ändern, diese zuerst mit dem folgenden Befehl **delete-package-versions** löschen. 

 Wenn Sie versuchen, ein bereits vorhandenes Objekt erneut zu veröffentlichen (z. B.`mypackage-1.0.jar`) und der Inhalt des veröffentlichten Elements und des neuen Elements identisch sind, ist der Vorgang erfolgreich, da der Vorgang idempotent ist. 

### Private Pakete und öffentliche Repositorys
<a name="package-publishing-upstreams-direct"></a>

 CodeArtifact veröffentlicht keine in Repositorys gespeicherten Pakete in öffentlichen CodeArtifact Repositorys wie npmjs.com oder Maven Central. CodeArtifact importiert Pakete aus öffentlichen Repositorys in ein CodeArtifact Repository, verschiebt Pakete jedoch nie in die andere Richtung. Pakete, die Sie in CodeArtifact Repositorys veröffentlichen, bleiben privat und stehen nur den AWS Konten, Rollen und Benutzern zur Verfügung, denen Sie Zugriff gewährt haben.

### Veröffentlichen gepatchter Paketversionen
<a name="package-publishing-patched-versions"></a>

 Manchmal möchten Sie vielleicht eine modifizierte Paketversion veröffentlichen, möglicherweise eine, die in einem öffentlichen Repository verfügbar ist. Möglicherweise haben Sie einen Fehler in einer kritischen Anwendungsabhängigkeit namens gefunden`mydep 1.1`, und Sie müssen ihn beheben, bevor der Paketanbieter die Änderung überprüfen und akzeptieren kann. Wie bereits beschrieben, CodeArtifact verhindert es, dass Sie `mydep 1.1` in Ihrem CodeArtifact Repository veröffentlichen, wenn das öffentliche Repository von Ihrem CodeArtifact Repository aus über Upstream-Repositorys und eine externe Verbindung erreichbar ist.

Um dieses Problem zu umgehen, veröffentlichen Sie die Paketversion in einem anderen CodeArtifact Repository, in dem das öffentliche Repository nicht erreichbar ist. Verwenden Sie dann die `copy-package-versions` API, um die gepatchte Version von in das CodeArtifact Repository `mydep 1.1` zu kopieren, von wo aus Sie sie verwenden werden. 

### Beschränkungen der Asset-Größe für die Veröffentlichung
<a name="package-publishing-asset-size-limits"></a>

Die maximale Größe eines Paket-Assets, das veröffentlicht werden kann, wird durch das **maximale Kontingent für die Asset-Dateigröße** begrenzt, das unter angezeigt wird[Kontingente in AWS CodeArtifact](service-limits.md). Sie können beispielsweise kein Maven-JAR- oder Python-Rad veröffentlichen, das das maximale Kontingent für die aktuelle Asset-Dateigröße überschreitet. Wenn Sie größere Assets speichern müssen CodeArtifact, fordern Sie eine Erhöhung des Kontingents an.

Zusätzlich zum maximalen Kontingent für die Größe der Asset-Datei beträgt die maximale Größe einer Veröffentlichungsanforderung für NPM-Pakete 2 GB. Dieses Limit ist unabhängig vom maximalen Kontingent für die Größe der Asset-Datei und kann nicht durch eine Erhöhung des Kontingents erhöht werden. In einer npm-Publishing-Anfrage (HTTP PUT) werden Paketmetadaten und der Inhalt des NPM-Paket-Tar-Archivs gebündelt. Aus diesem Grund variiert die tatsächliche maximale Größe eines npm-Pakets, das veröffentlicht werden kann, und hängt von der Größe der enthaltenen Metadaten ab.

**Anmerkung**  
Veröffentlichte npm-Pakete sind auf eine maximale Größe von weniger als 2 GB beschränkt.

### Latenz bei der Veröffentlichung
<a name="package-publishing-latency"></a>

In einem CodeArtifact Repository veröffentlichte Paketversionen stehen oft in weniger als einer Sekunde zum Herunterladen zur Verfügung. Wenn Sie beispielsweise eine npm-Paketversion in CodeArtifact with veröffentlichen`npm publish`, sollte diese Version in weniger als einer Sekunde für einen `npm install` Befehl verfügbar sein. Die Veröffentlichung kann jedoch inkonsistent sein und manchmal länger dauern. Wenn Sie unmittelbar nach der Veröffentlichung eine Paketversion verwenden müssen, versuchen Sie es erneut, um sicherzustellen, dass der Download zuverlässig ist. Wiederholen Sie den Download beispielsweise nach dem Veröffentlichen der Paketversion bis zu dreimal, wenn die gerade veröffentlichte Paketversion beim ersten Download-Versuch zunächst nicht verfügbar ist.

**Anmerkung**  
Das Importieren einer Paketversion aus einem öffentlichen Repository dauert in der Regel länger als das Veröffentlichen. Weitere Informationen finden Sie unter [Latenz bei externen Verbindungen](external-connection-requesting-packages.md#external-connection-latency).

## Status der Paketversion
<a name="package-version-status"></a>

Jede Paketversion in CodeArtifact hat einen Status, der den aktuellen Status und die Verfügbarkeit der Paketversion beschreibt. Sie können den Status der Paketversion im SDK AWS CLI und SDK ändern. Weitere Informationen finden Sie unter [Aktualisiere den Status der Paketversion](update-package-version-status.md). 

Die folgenden Werte sind für den Paketversionsstatus möglich:
+  **Veröffentlicht** — Die Paketversion wurde erfolgreich veröffentlicht und kann mit einem Paketmanager angefordert werden. Die Paketversion wird in die Paketversionslisten aufgenommen, die an die Paketmanager zurückgegeben werden, z. B. in der Ausgabe von`npm view <package-name> versions`. Alle Ressourcen der Paketversion sind im Repository verfügbar. 
+  **Unfertig** — Der Client hat ein oder mehrere Elemente für eine Paketversion hochgeladen, sie aber noch nicht fertiggestellt, indem er sie in den `Published` Status verschoben hat. Derzeit können nur generische Versionen und Maven-Paketversionen den Status haben. `Unfinished` Bei Maven-Paketen kann dies der Fall sein, wenn der Client ein oder mehrere Assets für eine Paketversion hochlädt, aber keine `maven-metadata.xml` Datei für das Paket veröffentlicht, die diese Version enthält. Wenn eine Maven-Paketversion **unfertig** ist, wird sie nicht in Versionslisten aufgenommen, die an solche `mvn` Clients zurückgegeben werden`gradle`, sodass sie nicht als Teil eines Builds verwendet werden kann. Generische Pakete können bewusst im `Unfinished` Status belassen werden, indem das `unfinished` Flag beim Aufruf der [PublishPackageVersion](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PublishPackageVersion.html)API angegeben wird. Ein generisches Paket kann in den `Published` Status geändert werden, indem das `unfinished` Flag weggelassen oder die API aufgerufen wird. [UpdatePackageVersionsStatus](https://docs.aws.amazon.com//codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html) 
+  **Nicht gelistet** — Die Inhalte der Paketversion stehen im Repository zum Herunterladen zur Verfügung, aber die Paketversion ist nicht in der Liste der Versionen enthalten, die an die Paketmanager zurückgegeben werden. Bei einem npm-Paket enthält die Ausgabe von beispielsweise nicht `npm view <package-name> versions` die Paketversion. Dies bedeutet, dass die Logik zur Abhängigkeitsauflösung von npm die Paketversion nicht auswählt, da die Version nicht in der Liste der verfügbaren Versionen erscheint. Wenn jedoch bereits in einer `npm package-lock.json` Datei auf die Paketversion „**Nicht gelistet**“ verwiesen wird, kann sie dennoch heruntergeladen und installiert werden, z. B. während der Ausführung. `npm ci` 
+  **Archiviert** — Die Ressourcen der Paketversion können nicht mehr heruntergeladen werden. Die Paketversion wird nicht in die Liste der Versionen aufgenommen, die an die Paketmanager zurückgegeben werden. Da die Ressourcen nicht verfügbar sind, wird die Nutzung der Paketversion durch Clients blockiert. Wenn der Build Ihrer Anwendung von einer Version abhängt, die auf **Archiviert** aktualisiert wurde, schlägt der Build fehl, vorausgesetzt, die Paketversion wurde nicht lokal zwischengespeichert. [Sie können einen Paketmanager oder ein Build-Tool nicht verwenden, um eine **archivierte** Paketversion erneut zu veröffentlichen, da sie immer noch im Repository vorhanden ist. Sie können jedoch den Status der Paketversion mit der API wieder auf **Nicht gelistet** oder **Veröffentlicht** ändern. UpdatePackageVersionsStatus ](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html) 
+  **Verworfen** — Die Paketversion erscheint nicht in den Auflistungen und die Inhalte können nicht aus dem Repository heruntergeladen werden. **Der Hauptunterschied zwischen „**Verworfen**“ und „**Archiviert**“ besteht darin, dass bei einem Status von „Verworfen“ die Inhalte der Paketversion dauerhaft von gelöscht werden CodeArtifact.** **Aus diesem Grund können Sie eine Paketversion nicht von „Verworfen“ in „**Archiviert**“, „**Nicht gelistet**“ oder „**Veröffentlicht**“ verschieben.** Die Paketversion kann nicht mehr verwendet werden, da die Assets gelöscht wurden. Nachdem eine Paketversion als **entsorgt** markiert wurde, wird Ihnen die Speicherung der Paketressourcen nicht mehr in Rechnung gestellt. 

Paketversionen aller Status werden standardmäßig zurückgegeben, wenn sie list-package-versions ohne `--status` Parameter aufgerufen werden.

 Abgesehen von den zuvor aufgeführten Status kann eine Paketversion auch mit der [DeletePackageVersionsAPI](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DeletePackageVersions.html) gelöscht werden. Nach dem Löschen befindet sich eine Paketversion nicht mehr im Repository und Sie können diese Paketversion mit einem Paketmanager oder einem Build-Tool nach Belieben erneut veröffentlichen. Nachdem eine Paketversion gelöscht wurde, wird Ihnen die Speicherung der Inhalte dieser Paketversion nicht mehr in Rechnung gestellt. 

## Normalisierung von Paketnamen, Paketversion und Assetnamen
<a name="package-name-normalization"></a>

CodeArtifact normalisiert Paketnamen, Paketversionen und Assetnamen, bevor sie gespeichert werden, was bedeutet, dass sich die Namen oder Versionen in denen CodeArtifact möglicherweise von dem Namen oder der Version unterscheiden, die bei der Veröffentlichung des Pakets angegeben wurden. Weitere Informationen darüber, wie Namen und Versionen CodeArtifact für jeden Pakettyp normalisiert werden, finden Sie in der folgenden Dokumentation:
+ [Normalisierung von Python-Paketnamen](python-name-normalization.md)
+ [NuGet Normalisierung von Paketnamen, Version und Assetnamen](nuget-name-normalization.md)

CodeArtifact führt keine Normalisierung für andere Paketformate durch.

# Listet die Paketnamen auf
<a name="list-packages"></a>

Verwenden Sie den `list-packages` Befehl in CodeArtifact , um eine Liste aller Paketnamen in einem Repository abzurufen. Dieser Befehl gibt nur die Paketnamen zurück, nicht die Versionen.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo
```

Beispielausgabe:

```
{
    "nextToken": "eyJidWNrZXRJZCI6I...",
    "packages": [
        {
            "package": "acorn",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "acorn-dynamic-import",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "ajv",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "ajv-keywords",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "anymatch",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "ast",
            "namespace": "webassemblyjs",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        }
    ]
}
```

## NPM-Paketnamen auflisten
<a name="list-packages-npm"></a>

Um nur die Namen der npm-Pakete aufzulisten, setzen Sie den Wert der `--format` Option auf. `npm`

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format npm
```

Um npm-Pakete in einem Namespace (*npm-Bereich*) aufzulisten, verwenden Sie die Optionen und. `--namespace` `--format`

**Wichtig**  
Der Wert für die `--namespace` Option sollte den Anfang nicht enthalten. `@` Um nach dem Namespace zu suchen`@types`, setzen Sie den Wert auf*types*.

**Anmerkung**  
Die `--namespace` Option filtert nach dem Namespace-Präfix. Jedes npm-Paket mit einem Bereich, der mit dem an die `--namespace` Option übergebenen Wert beginnt, wird in der `list-packages` Antwort zurückgegeben.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format npm --namespace types
```

Beispielausgabe:

```
{
    "nextToken": "eyJidWNrZXRJZ...",
    "packages": [
        {
            "package": "3d-bin-packing",
            "namespace": "types",
            "format": "npm"

        },
        {
            "package": "a-big-triangle",
            "namespace": "types",
            "format": "npm"

        },
        {
            "package": "a11y-dialog",
            "namespace": "types",
            "format": "npm"

        }
    ]
}
```

## Listet die Namen der Maven-Pakete auf
<a name="list-packages-maven"></a>

Um nur die Namen der Maven-Pakete aufzulisten, setzen Sie den Wert der `--format` Option auf. `maven` Sie müssen in der Option auch die Maven-Gruppen-ID angeben. `--namespace`

**Anmerkung**  
Die `--namespace` Option filtert nach dem Namespace-Präfix. Jedes npm-Paket mit einem Bereich, der mit dem an die `--namespace` Option übergebenen Wert beginnt, wird in der `list-packages` Antwort zurückgegeben.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format maven --namespace org.apache.commons
```

Beispielausgabe:

```
{
    "nextToken": "eyJidWNrZXRJZ...",
    "packages": [
        {
            "package": "commons-lang3",
            "namespace": "org.apache.commons",
            "format": "maven"

        },
        {
            "package": "commons-collections4",
            "namespace": "org.apache.commons",
            "format": "maven"

        },
        {
            "package": "commons-compress",
            "namespace": "org.apache.commons",
            "format": "maven"

        }
    ]
}
```

## Python-Paketnamen auflisten
<a name="list-packages-python"></a>

Um nur die Namen von Python-Paketen aufzulisten, setzen Sie den Wert der `--format` Option auf`pypi`.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format pypi
```

## Filtern Sie nach dem Präfix des Paketnamens
<a name="list-packages-package-prefix"></a>

 Um Pakete zurückzugeben, die mit einer bestimmten Zeichenfolge beginnen, können Sie die `--package-prefix` Option verwenden. 

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format npm --package-prefix pat
```

Beispielausgabe:

```
{
    "nextToken": "eyJidWNrZXRJZ...",
    "packages": [
        {
            "package": "path",
            "format": "npm"

        },
        {
            "package": "pat-test",
            "format": "npm"

        },
        {
            "package": "patch-math3",
            "format": "npm"

        }
    ]
}
```

## Unterstützte Kombinationen von Suchoptionen
<a name="list-packages-option-combinations"></a>

Sie können die `--package-prefix` Optionen `--format``--namespace`, und in jeder beliebigen Kombination verwenden, mit der Ausnahme, dass diese nicht einzeln verwendet werden `--namespace` kann. Für die Suche nach allen npm-Paketen mit einem Bereich, der mit 1 beginnt, `@types` muss die `--format` Option angegeben werden. Die `--namespace` alleinige Verwendung führt zu einem Fehler. 

 Die Verwendung keiner der drei Optionen wird auch von unterstützt `list-packages` und gibt alle Pakete aller Formate zurück, die im Repository vorhanden sind. 

## Ausgabe formatieren
<a name="list-packages-format-output"></a>

 Sie können Parameter verwenden, die für alle AWS CLI Befehle verfügbar sind, um die `list-packages` Antwort kompakter und lesbarer zu gestalten. Verwenden Sie den `--query` Parameter, um das Format jeder zurückgegebenen Paketversion anzugeben. Verwenden Sie den `--output` Parameter, um die Antwort als Klartext zu formatieren. 

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo \
  --output text --query 'packages[*].[package]'
```

Beispielausgabe:

```
accepts
array-flatten
body-parser
bytes
content-disposition
content-type
cookie
cookie-signature
```

 Weitere Informationen finden Sie unter [Steuern der Befehlsausgabe über die AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html) im *AWS Command Line Interface -Benutzerhandbuch*. 

## Standardwerte und andere Optionen
<a name="list-packages-defaults-options"></a>

 Standardmäßig beträgt die maximale Anzahl von Ergebnissen, die von zurückgegeben werden`list-packages`, 100. Sie können dieses Ergebnislimit ändern, indem Sie die `--max-results` Option verwenden.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo --max-results 20
```

Der zulässige Höchstwert von `--max-results` ist 1.000. Um das Auflisten von Paketen in Repositorys mit mehr als 1.000 Paketen zu ermöglichen, wird `list-packages` die Paginierung mithilfe des `nextToken` Felds in der Antwort unterstützt. Wenn die Anzahl der Pakete im Repository den Wert von übersteigt`--max-results`, können Sie den Wert von an einen anderen Aufruf von übergeben, `nextToken` um die nächste Ergebnisseite `list-packages` zu erhalten.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo \
  --next-token rO0ABXNyAEdjb...
```

# Paketversionen auflisten
<a name="list-packages-versions"></a>

Verwenden Sie den `list-package-versions` Befehl in AWS CodeArtifact , um eine Liste aller Versionen eines Paketnamens in einem Repository abzurufen.

```
aws codeartifact list-package-versions --package kind-of \ 
--domain my_domain --domain-owner 111122223333 \
--repository my_repository --format npm
```

Beispielausgabe:

```
{
  "defaultDisplayVersion": "1.0.1",
  "format": "npm",
  "package": "kind-of",
  "versions": [
      {
          "version": "1.0.1",
          "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      },
      {
          "version": "1.0.0",
          "revision": "REVISION-SAMPLE-2-C752BEEF6D2CFC",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      },
      {
          "version": "0.1.2",
          "revision": "REVISION-SAMPLE-3-654S65A5C5E1FC",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      },
      {
          "version": "0.1.1",
          "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC"",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      },
      {
          "version": "0.1.0",
          "revision": "REVISION-SAMPLE-4-AF669139B772FC",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      }        
  ]
}
```

Sie können dem `list-package-versions` Aufruf den `--status` Parameter hinzufügen, um die Ergebnisse nach dem Status der Paketversion zu filtern. Weitere Hinweise zum Status der Paketversion finden Sie unter[Status der Paketversion](packages-overview.md#package-version-status). 

 Sie können die Antwort `list-package-versions` mithilfe der `--next-token` Parameter `--max-results` und paginieren. Geben Sie für `--max-results` eine Ganzzahl zwischen 1 und 1000 an, um die Anzahl der auf einer einzelnen Seite zurückgegebenen Ergebnisse anzugeben. Die Standardeinstellung ist 50. Um nachfolgende Seiten zurückzugeben, führen Sie den `list-package-versions` Vorgang erneut aus und übergeben Sie den in der vorherigen Befehlsausgabe empfangenen `nextToken` Wert an`--next-token`. Wenn die `--next-token` Option nicht verwendet wird, wird immer die erste Ergebnisseite zurückgegeben. 

 Der `list-package-versions` Befehl listet keine Paketversionen in Upstream-Repositorys auf. Es werden jedoch Verweise auf Paketversionen in einem Upstream-Repository aufgeführt, die während einer Paketversionsanforderung in Ihr Repository kopiert wurden. Weitere Informationen finden Sie unter [Arbeiten mit Upstream-Repositorys in CodeArtifact](repos-upstream.md). 

## NPM-Paketversionen auflisten
<a name="list-packages-versions-npm"></a>

Um alle Paketversionen für ein npm-Paket aufzulisten, setzen Sie den Wert der `--format` Option auf. `npm`

```
aws codeartifact list-package-versions --package my_package --domain my_domain \ 
 --domain-owner 111122223333 --repository my_repo --format npm
```

Verwenden Sie die Option, um npm-Paketversionen in einem bestimmten Namespace (*npm-Bereich*) aufzulisten. `--namespace` Der Wert für die `--namespace` Option sollte den Anfang nicht enthalten. `@` Um nach dem Namespace zu suchen`@types`, setzen Sie den Wert auf*types*.

```
aws codeartifact list-package-versions --package my_package --domain my_domain \
 --domain-owner 111122223333 --repository my_repo --format npm \
 --namespace types
```

## Maven-Paketversionen auflisten
<a name="list-packages-versions-maven"></a>

Um alle Paketversionen für ein Maven-Paket aufzulisten, setzen Sie den Wert der `--format` Option auf. `maven` Sie müssen in der Option auch die Maven-Gruppen-ID angeben. `--namespace`

```
aws codeartifact list-package-versions --package my_package --domain my_domain \
 --domain-owner 111122223333 --repository my_repo --format maven \
 --namespace org.apache.commons
```

## Versionen sortieren
<a name="list-package-versions-sorting"></a>

 `list-package-versions`kann Versionen ausgeben, die nach dem Zeitpunkt der Veröffentlichung in absteigender Reihenfolge sortiert sind (die zuletzt veröffentlichten Versionen werden zuerst aufgeführt). Verwenden Sie den `--sort-by` Parameter mit einem Wert von `PUBLISHED_TIME` wie folgt.

```
aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 --repository my_repository  \
--format npm --package webpack --max-results 5 --sort-by PUBLISHED_TIME
```

 Beispielausgabe: 

```
{

  "defaultDisplayVersion": "4.41.2",
  "format": "npm",
  "package": "webpack",
  "versions": [
      { 
        "version": "5.0.0-beta.7", 
        "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC",
        "status": "Published"
      },
      { 
        "version": "5.0.0-beta.6", 
        "revision": "REVISION-SAMPLE-2-C752BEEF6D2CFC",
        "status": "Published" 
      },
      { 
        "version": "5.0.0-beta.5", 
        "revision": "REVISION-SAMPLE-3-654S65A5C5E1FC",
        "status": "Published"
      },
      { 
        "version": "5.0.0-beta.4", 
        "revision": "REVISION-SAMPLE-4-AF669139B772FC",
        "status": "Published"
      },
      { 
        "version": "5.0.0-beta.3", 
        "revision": "REVISION-SAMPLE-5-C752BEE9B772FC",
        "status": "Published"
      }
  ],
  "nextToken": "eyJsaXN0UGF...."
}
```

## Standardanzeigeversion
<a name="list-package-versions-default-version"></a>

 Der Rückgabewert für `defaultDisplayVersion` hängt vom Paketformat ab: 
+  Für generische, Maven- und PyPI-Pakete ist dies die zuletzt veröffentlichte Paketversion. 
+  Bei npm-Paketen ist dies die Version, auf die das Tag verweist. `latest` Wenn das `latest` Tag nicht gesetzt ist, handelt es sich um die zuletzt veröffentlichte Paketversion. 

## Ausgabe formatieren
<a name="list-package-versions-format-output"></a>

 Sie können Parameter verwenden, die für alle AWS CLI Befehle verfügbar sind, um die `list-package-versions` Antwort kompakter und lesbarer zu gestalten. Verwenden Sie den `--query` Parameter, um das Format jeder zurückgegebenen Paketversion anzugeben. Verwenden Sie den `--output` Parameter, um die Antwort als Klartext zu formatieren. 

```
aws codeartifact list-package-versions --package my-package-name --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format npm --output text --query 'versions[*].[version]'
```

Beispielausgabe:

```
0.1.1
0.1.2
0.1.0
3.0.0
```

 Weitere Informationen finden Sie AWS CLI im *AWS Command Line Interface Benutzerhandbuch* unter [Steuern der Befehlsausgabe](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html). 

# Listet die Ressourcen der Paketversion auf
<a name="list-assets"></a>

Ein *Asset* ist eine einzelne Datei (z. B. eine `.tgz` NPM-Datei oder eine Maven-POM- oder JAR-Datei) CodeArtifact , die in einer Paketversion gespeichert ist. Sie können den `list-package-version-assets` Befehl verwenden, um die Assets in jeder Paketversion aufzulisten.

Führen Sie den `list-package-version-assets` Befehl aus, um die folgenden Informationen zu jedem Asset in Ihrem AWS Konto und Ihrer aktuellen AWS Region zurückzugeben:
+  Sein Name. 
+  Seine Größe in Byte. 
+  Eine Reihe von Hashwerten, die für die Prüfsummenvalidierung verwendet werden. 

Verwenden Sie beispielsweise den folgenden Befehl, um die Ressourcen des Python-Pakets`flatten-json`, Version, aufzulisten`0.1.7`.

```
aws codeartifact list-package-version-assets --domain my_domain --domain-owner 111122223333 \
 --repository my_repo --format pypi --package flatten-json \
 --package-version 0.1.7
```

Nachfolgend sehen Sie die Ausgabe.

```
{
    "format": "pypi",
    "package": "flatten-json",
    "version": "0.1.7",
    "versionRevision": "REVISION-SAMPLE-1-C7F4S5E9B772FC",
    "assets": [
        {
            "name": "flatten_json-0.1.7-py3-none-any.whl",
            "size": 31520,
            "hashes": {
                "MD5": "41bba98d5b9219c43089eEXAMPLE-MD5",
                "SHA-1": "69b215c25dd4cda1d997a786ec6EXAMPLE-SHA-1",
                "SHA-256": "43f24850b7b7b7d79c5fa652418518fbdf427e602b1edabe6EXAMPLE-SHA-256",
                "SHA-512": "3947382ac2c180ee3f2aba4f8788241527c8db9dfe9f4b039abe9fc560aaf5a1fced7bd1e80a0dca9ce320d95f0864e0dec3ac4f2f7b2b2cbEXAMPLE-SHA-512"
            }
        },
        {
            "name": "flatten_json-0.1.7.tar.gz",
            "size": 2865,
            "hashes": {
                "MD5": "41bba98d5b9219c43089eEXAMPLE-MD5",
                "SHA-1": "69b215c25dd4cda1d997a786ec6EXAMPLE-SHA-1",
                "SHA-256": "43f24850b7b7b7d79c5fa652418518fbdf427e602b1edabe6EXAMPLE-SHA-256",
                "SHA-512": "3947382ac2c180ee3f2aba4f8788241527c8db9dfe9f4b039abe9fc560aaf5a1fced7bd1e80a0dca9ce320d95f0864e0dec3ac4f2f7b2b2cbEXAMPLE-SHA-512"
            }
        }
    ]
}
```

## Listet die Assets eines NPM-Pakets auf
<a name="list-assets-npm"></a>

Ein npm-Paket hat immer ein einzelnes Asset mit dem Namen. `package.tgz` Um die Ressourcen eines NPM-Pakets mit Gültigkeitsbereich aufzulisten, schließen Sie den Bereich in die Option ein. `--namespace`

```
aws codeartifact list-package-version-assets --domain my_domain --domain-owner 111122223333 \
 --repository my_repo --format npm --package webpack \
 --namespace types --package-version 4.9.2
```

## Listet die Ressourcen eines Maven-Pakets auf
<a name="list-assets-maven"></a>

Um die Ressourcen eines Maven-Pakets aufzulisten, fügen Sie den Paket-Namespace in die Option ein. `--namespace` Um die Ressourcen des Maven-Pakets aufzulisten: `commons-cli:commons-cli`

```
aws codeartifact list-package-version-assets --domain my_domain --domain-owner 111122223333 \
 --repository my_repo --format maven --package commons-cli \
 --namespace commons-cli --package-version 1.0
```

# Laden Sie die Ressourcen der Paketversion herunter
<a name="download-assets"></a>

Ein *Asset* ist eine einzelne Datei (z. B. eine `.tgz` NPM-Datei oder eine Maven-POM- oder JAR-Datei) CodeArtifact , die in einer Paketversion gespeichert ist. Sie können Paket-Assets mit dem herunterladen. `get-package-version-assets command` Auf diese Weise können Sie Assets abrufen, ohne einen Paketmanager-Client wie `npm` oder zu verwenden`pip`. Um ein Asset herunterzuladen, müssen Sie den Namen des Assets angeben, den Sie mit dem `list-package-version-assets` Befehl abrufen können. Weitere Informationen finden Sie unter[Listet die Ressourcen der Paketversion auf](list-assets.md). Das Asset wird mit einem von Ihnen angegebenen Dateinamen in den lokalen Speicher heruntergeladen.

Im folgenden Beispiel wird das *guava-27.1-jre.jar* Asset aus dem Maven-Paket *com.google.guava:guava* mit Version *27.1-jre* heruntergeladen.

```
aws codeartifact get-package-version-asset --domain my_domain --domain-owner 111122223333 --repository my_repo \
    --format maven --namespace com.google.guava --package guava --package-version 27.1-jre \
    --asset guava-27.1-jre.jar \
    guava-27.1-jre.jar
```

 In diesem Beispiel wurde der Dateiname wie *guava-27.1-jre.jar* durch das letzte Argument im vorherigen Befehl angegeben, sodass das heruntergeladene Asset benannt *guava-27.1-jre.jar* wird. 

Die Ausgabe des Befehls wird wie folgt aussehen:

```
{
    "assetName": "guava-27.1-jre.jar",
    "packageVersion": "27.1-jre",
    "packageVersionRevision": "YGp9ck2tmy03PGSxioclfYzQ0BfTLR9zzhQJtERv62I="
}
```

**Anmerkung**  
Um Assets aus einem NPM-Paket mit Gültigkeitsbereich herunterzuladen, schließen Sie den Bereich in die Option ein. `--namespace` Das `@` Symbol muss bei der Verwendung weggelassen werden. `--namespace` Wenn der Gültigkeitsbereich beispielsweise lautet`@types`, verwenden Sie`--namespace types`.

 Für das Herunterladen von Inhalten mithilfe von `get-package-version-asset` ist eine `codeartifact:GetPackageVersionAsset` Genehmigung für die Paketressource erforderlich. *Weitere Informationen zu ressourcenbasierten Berechtigungsrichtlinien finden Sie im [Benutzerhandbuch unter Ressourcenbasierte Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based).AWS Identity and Access Management * 

# 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 

# Löschen Sie ein Paket oder eine Paketversion
<a name="delete-package"></a>

Mit dem `delete-package-versions` Befehl können Sie eine oder mehrere Paketversionen gleichzeitig löschen. Um ein Paket vollständig aus einem Repository zu entfernen, einschließlich aller zugehörigen Versionen und Konfigurationen, verwenden Sie den `delete-package` Befehl. Ein Paket kann in einem Repository ohne Paketversionen existieren. Dies kann passieren, wenn alle Versionen mit dem `delete-package-versions` Befehl gelöscht wurden oder wenn das Paket mithilfe der `put-package-origin-configuration` API-Operation ohne Versionen erstellt wurde (siehe[Einstellungen zur Paketherkunft bearbeiten](package-origin-controls.md)).

**Topics**
+ [Löschen eines Pakets (AWS CLI)](#delete-package-CLI)
+ [Löschen eines Pakets (Konsole)](#delete-package-console)
+ [Löschen einer Paketversion (AWS CLI)](#delete-package-version-CLI)
+ [Löschen einer Paketversion (Konsole)](#delete-package-version-console)
+ [Löschen eines NPM-Pakets oder einer Paketversion](#delete-package-npm)
+ [Löschen eines Maven-Pakets oder einer Paketversion](#delete-package-maven)
+ [Bewährte Methoden zum Löschen von Paketen oder Paketversionen](#delete-package-bp)

## Löschen eines Pakets (AWS CLI)
<a name="delete-package-CLI"></a>

Mit dem `delete-package` Befehl können Sie ein Paket einschließlich aller Paketversionen und Konfigurationen löschen. Das folgende Beispiel löscht das PyPI-Paket, das im Repo `my-package` `my_repo` in der Domäne benannt ist: `my_domain`

```
aws codeartifact delete-package --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi \
--package my-package
```

Beispielausgabe:

```
{
   "deletedPackage": { 
      "format": "pypi",
      "originConfiguration": { 
         "restrictions": { 
            "publish": "ALLOW",
            "upstream": "BLOCK"
         }
      },
      "package": "my-package"
   }
}
```

Sie können bestätigen, dass das Paket gelöscht wurde, indem Sie es `describe-package` für denselben Paketnamen ausführen:

```
aws codeartifact describe-package --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi --package my-package
```

## Löschen eines Pakets (Konsole)
<a name="delete-package-console"></a>

1. Öffnen Sie die AWS CodeArtifact Konsole unter [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. Wählen Sie im linken Navigationsbereich **Repositorys** aus.

1. Wählen Sie das **Repository** aus, aus dem Sie ein Paket löschen möchten.

1. Wählen Sie das **Package** aus, das Sie löschen möchten.

1. Wählen Sie **Package löschen**.

## Löschen einer Paketversion (AWS CLI)
<a name="delete-package-version-CLI"></a>

Mit dem `delete-package-versions` Befehl können Sie eine oder mehrere Paketversionen gleichzeitig löschen. Das folgende Beispiel löscht die Versionen `4.0.0``4.0.1`, und `5.0.0` des PyPI-Pakets, das `my-package` `my_repo` in der Domäne benannt ist: `my_domain`

```
aws codeartifact delete-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi \
--package my-package --versions 4.0.0 4.0.1 5.0.0
```

Beispielausgabe:

```
{
   "successfulVersions": {
      "4.0.0": {
         "revision": "oxwwYC9dDeuBoCt6+PDSwL6OMZ7rXeiXy44BM32Iawo=",
            "status": "Deleted"
      },
      "4.0.1": {
         "revision": "byaaQR748wrsdBaT+PDSwL6OMZ7rXeiBKM0551aqWmo=",
            "status": "Deleted"
      },
      "5.0.0": {
         "revision": "yubm34QWeST345ts+ASeioPI354rXeiSWr734PotwRw=",
            "status": "Deleted"
      }
   },
   "failedVersions": {}
}
```

Sie können überprüfen, ob die Versionen gelöscht wurden, indem Sie die Ausführung `list-package-versions` für denselben Paketnamen ausführen:

```
aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi --package my-package
```

## Löschen einer Paketversion (Konsole)
<a name="delete-package-version-console"></a>

1. Öffnen Sie die AWS CodeArtifact Konsole unter [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. Wählen Sie im linken Navigationsbereich **Repositorys** aus.

1. Wählen Sie das **Repository** aus, aus dem Sie Paketversionen löschen möchten.

1. Wählen Sie das **Package** aus, aus dem Sie Versionen löschen möchten.

1. Wählen Sie die **Paketversion** aus, die Sie löschen möchten.

1. Wählen Sie **Löschen** aus.
**Anmerkung**  
In der Konsole können Sie jeweils nur eine Paketversion löschen. Verwenden Sie die CLI, um mehrere gleichzeitig zu löschen.

## Löschen eines NPM-Pakets oder einer Paketversion
<a name="delete-package-npm"></a>

Um ein npm-Paket oder einzelne Paketversionen zu löschen, setzen Sie die `--format` Option auf. `npm` Um eine Paketversion in einem NPM-Paket mit Gültigkeitsbereich zu löschen, verwenden Sie die `--namespace` Option, um den Bereich anzugeben. Um das Paket `@types/react` beispielsweise zu löschen, verwenden Sie. `--namespace types` Lassen Sie das `@` Symbol weg, wenn Sie verwenden`--namespace`. 

```
aws codeartifact delete-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format npm --namespace types \
--package react --versions 0.12.2
```

Um das Paket `@types/react` mit all seinen Versionen zu löschen:

```
aws codeartifact delete-package --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format npm --namespace types \
--package react
```

## Löschen eines Maven-Pakets oder einer Paketversion
<a name="delete-package-maven"></a>

Um ein Maven-Paket oder einzelne Paketversionen zu löschen, setzen Sie die `--format` Option auf `maven` und geben Sie das zu löschende Paket an, indem Sie die Maven-Gruppen-ID mit der `--namespace` Option und die Maven-ArtifactID mit der Option übergeben. `--name` Im Folgenden wird beispielsweise gezeigt, wie eine einzelne Version von gelöscht wird: `com.google.guava:guava`

```
 aws codeartifact delete-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format maven --namespace com.google.guava \
--package guava --versions 27.1-jre
```

Das folgende Beispiel zeigt, wie das Paket `com.google.guava:guava` einschließlich aller seiner Versionen gelöscht wird:

```
 aws codeartifact delete-package --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format maven --namespace com.google.guava \
--package guava
```

## Bewährte Methoden zum Löschen von Paketen oder Paketversionen
<a name="delete-package-bp"></a>

Wenn Sie eine Paketversion löschen müssen, empfiehlt es sich als bewährte Methode, ein Repository zu erstellen, um eine Sicherungskopie der Paketversion zu speichern, die Sie löschen möchten. Sie können dies tun, indem Sie zuerst `copy-package-versions` das Backup-Repository aufrufen: 

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

Sobald Sie die Paketversion kopiert haben, können Sie dann das Paket oder die Paketversion aufrufen`delete-package-versions`, die Sie löschen möchten.

```
aws codeartifact delete-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi \
--package my-package --versions 4.0.0 4.0.1 5.0.0
```

# Details und Abhängigkeiten der Paketversion anzeigen und aktualisieren
<a name="describe-package-version"></a>

Informationen zu einer Paketversion, einschließlich Abhängigkeiten, finden Sie unter CodeArtifact. Sie können auch den Status einer Paketversion aktualisieren. Weitere Informationen zum Status der Paketversion finden Sie unter[Status der Paketversion](packages-overview.md#package-version-status). 

## Details zur Paketversion anzeigen
<a name="view-package-details"></a>

 Verwenden Sie den `describe-package-version` Befehl, um Details zu Paketversionen anzuzeigen. Paketversionsdetails werden aus einem Package extrahiert, wenn es veröffentlicht wird CodeArtifact. Die Details in den verschiedenen Paketen variieren und hängen von ihren Formaten und davon ab, wie viele Informationen die Autoren ihnen hinzugefügt haben. 

 Die meisten Informationen in der Ausgabe des `describe-package-version` Befehls hängen vom Paketformat ab. `describe-package-version`Extrahiert beispielsweise die Informationen eines NPM-Pakets aus seiner `package.json` Datei. Die Revision wurde von CodeArtifact erstellt. Weitere Informationen finden Sie unter [Angabe einer Paketversionsrevision](copy-package.md#specify-package-version-revision). 

 Zwei Paketversionen mit demselben Namen können sich im selben Repository befinden, wenn sie sich jeweils in unterschiedlichen Namespaces befinden. Verwenden Sie den optionalen `--namespace` Parameter, um einen Namespace anzugeben. Für weitere Informationen siehe [Versionsdetails des npm-Pakets anzeigen](#describe-package-version-npm) oder [Versionsdetails des Maven-Pakets anzeigen](#describe-package-version-maven).

 Das folgende Beispiel gibt Details zur Version `1.9.0` eines Python-Pakets mit dem Namen zurück`pyhamcrest`, das sich im `my_repo` Repository befindet. 

```
aws codeartifact describe-package-version --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format pypi --package pyhamcrest --package-version 1.9.0
```

 Die Ausgabe könnte wie folgt aussehen.

```
{
  "format": "pypi",
  "package": "PyHamcrest",
  "displayName": "PyHamcrest",
  "version": "1.9.0",
  "summary": "Hamcrest framework for matcher objects",
  "homePage": "https://github.com/hamcrest/PyHamcrest",
  "publishedTime": 1566002944.273,
  "licenses": [
    {
      "id": "license-id",
      "name": "license-name"
    }
  ],
  "revision": "REVISION-SAMPLE-55C752BEE9B772FC"
}
```

**Anmerkung**  
CodeArtifact ruft Paketversionsdetails wie die Paket-Homepage oder Paketlizenzinformationen aus den vom Paketautor bereitgestellten Metadaten ab. Wenn eine dieser Informationen 400 KB überschreitet, was der Größenbeschränkung für DynamoDB-Elemente entspricht, können solche Daten CodeArtifact nicht verarbeitet werden, und Sie sehen diese Informationen möglicherweise nicht auf der Konsole oder in der Antwort von. `describe-package-version` [Zum Beispiel ein Python-Paket wie https://py pi. org/project/rapyd-sdk/](https://pypi.org/project/rapyd-sdk/) hat ein sehr großes Lizenzfeld, sodass diese Informationen nicht von verarbeitet werden würden. CodeArtifact

## Versionsdetails des npm-Pakets anzeigen
<a name="describe-package-version-npm"></a>

Um Details zu einer NPM-Paketversion anzuzeigen, setzen Sie den Wert der `--format` Option auf. **npm** Fügen Sie optional den Namespace der Paketversion (*NPM-Bereich*) in die Option ein. `--namespace` Der Wert für die `--namespace` Option sollte den Anfang nicht enthalten. `@` Um nach dem Namespace zu suchen`@types`, setzen Sie den Wert auf*types*.

Im Folgenden werden Details zur Version `4.41.5` eines `webpack` im Bereich genannten npm-Pakets zurückgegeben. `@types` 

```
aws codeartifact describe-package-version --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format npm --package webpack --namespace types --package-version 4.41.5
```

 Die Ausgabe könnte wie folgt aussehen. 

```
{
  "format": "npm",
  "namespace": "types",
  "package": "webpack",
  "displayName": "webpack",
  "version": "4.41.5",
  "summary": "Packs CommonJs/AMD modules for the browser. Allows ... further output omitted for brevity",
  "homePage": "https://github.com/webpack/webpack",
  "sourceCodeRepository": "https://github.com/webpack/webpack.git",
  "publishedTime": 1577481261.09,
  "licenses": [
    {
      "id": "license-id",
      "name": "license-name"
    }
  ],
  "revision": "REVISION-SAMPLE-55C752BEE9B772FC",
  "status": "Published",
  "origin": {
            "domainEntryPoint": {
                "externalConnectionName": "public:npmjs"
            },
            "originType": "EXTERNAL"
  }
}
```

## Versionsdetails des Maven-Pakets anzeigen
<a name="describe-package-version-maven"></a>

Um Details zu einer Maven-Paketversion anzuzeigen, setzen Sie den Wert der `--format` Option auf `maven` und schließen Sie den Namespace der Paketversion in die Option ein. `--namespace`

 Das folgende Beispiel gibt Details zur Version `1.2` eines Maven-Pakets mit dem Namen zurück`commons-rng-client-api`, das sich im `org.apache.commons` Namespace und im Repository befindet. `my_repo` 

```
aws codeartifact describe-package-version --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format maven --namespace org.apache.commons --package commons-rng-client-api --package-version 1.2
```

 Die Ausgabe könnte wie folgt aussehen.

```
{
  "format": "maven",
  "namespace": "org.apache.commons",
  "package": "commons-rng-client-api",
  "displayName": "Apache Commons RNG Client API",
  "version": "1.2",
  "summary": "API for client code that uses random numbers generators.",
  "publishedTime": 1567920624.849,
  "licenses": [],
  "revision": "REVISION-SAMPLE-55C752BEE9B772FC"
}
```

**Anmerkung**  
CodeArtifact extrahiert keine Paketversionsdetailinformationen aus übergeordneten POM-Dateien. Die Metadaten für eine bestimmte Paketversion enthalten nur Informationen im POM für genau diese Paketversion, nicht für das übergeordnete POM oder ein anderes POM, auf das mithilfe des `parent` POM-Tags transitiv verwiesen wird. Das bedeutet, dass bei der Ausgabe von Metadaten (wie Lizenzinformationen) für Maven-Paketversionen weggelassen `describe-package-version` werden, die auf eine `parent` Referenz angewiesen sind, um diese Metadaten zu enthalten.

## Abhängigkeiten von Paketversionen anzeigen
<a name="view-package-dependencies"></a>

 Verwenden Sie den `list-package-version-dependencies` Befehl, um eine Liste der Abhängigkeiten einer Paketversion abzurufen. Der folgende Befehl listet die Abhängigkeiten eines npm-Pakets mit dem Namen `my-package` Version `4.41.5` im `my_repo` Repository in der `my_domain` Domäne auf. 

```
aws codeartifact list-package-version-dependencies --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format npm --package my-package --package-version 4.41.5
```

 Die Ausgabe könnte wie folgt aussehen. 

```
{
  "dependencies": [
    {
      "namespace": "webassemblyjs",
      "package": "ast",
      "dependencyType": "regular",
      "versionRequirement": "1.8.5"
    },
    {
      "namespace": "webassemblyjs",
      "package": "helper-module-context",
      "dependencyType": "regular",
      "versionRequirement": "1.8.5"
    },
    {
      "namespace": "webassemblyjs",
      "package": "wasm-edit",
      "dependencyType": "regular",
      "versionRequirement": "1.8.5"
    }
  ],
  "versionRevision": "REVISION-SAMPLE-55C752BEE9B772FC"
}
```

*Den Bereich der unterstützten Werte für das DependencyType-Feld finden Sie unter dem [PackageDependency](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageDependency.html)Datentyp in der API. CodeArtifact *

## Readme-Datei zur Paketversion anzeigen
<a name="view-package-readme"></a>

 Einige Paketformate, wie z. B. npm, enthalten eine `README` Datei. Verwenden Sie die`get-package-version-readme`, um die `README` Datei einer Paketversion abzurufen. Der folgende Befehl gibt die `README` Datei eines NPM-Pakets mit dem Namen`my-package`, version`4.41.5`, im `my_repo` Repository in der `my_domain` Domäne zurück. 

**Anmerkung**  
CodeArtifact unterstützt nicht die Anzeige von Readme-Dateien aus generischen Paketen oder Maven-Paketen.

```
aws codeartifact get-package-version-readme --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format npm --package my-package --package-version 4.41.5
```

 Die Ausgabe könnte wie folgt aussehen.

```
{  
  "format": "npm",
  "package": "my-package",
  "version": "4.41.5"
  "readme": "<div align=\"center\">\n   <a href=\https://github.com/webpack/webpack\"> ... more content ... \n",
  "versionRevision": "REVISION-SAMPLE-55C752BEE9B772FC"
}
```

# Aktualisiere den Status der Paketversion
<a name="update-package-version-status"></a>

Jede Paketversion in CodeArtifact hat einen Status, der den aktuellen Status und die Verfügbarkeit der Paketversion beschreibt. Sie können den Status der Paketversion sowohl mit der AWS CLI als auch mit der Konsole ändern.

**Anmerkung**  
Weitere Informationen zum Status der Paketversion, einschließlich einer Liste der verfügbaren Status, finden Sie unter[Status der Paketversion](packages-overview.md#package-version-status). 

## Der Status der Paketversion wird aktualisiert
<a name="updating-pv-status"></a>

Wenn Sie den Status einer Paketversion festlegen, können Sie steuern, wie eine Paketversion verwendet werden kann, ohne sie vollständig aus dem Repository zu löschen. Wenn eine Paketversion beispielsweise den Status hat`Unlisted`, kann sie weiterhin wie gewohnt heruntergeladen werden, erscheint aber nicht in den Paketversionslisten, die auf Befehle wie zurückgegeben werden`npm view`. Die [UpdatePackageVersionsStatus API](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html) ermöglicht das Festlegen des Paketversionsstatus mehrerer Versionen desselben Pakets in einem einzigen API-Aufruf. Eine Beschreibung der verschiedenen Status finden Sie unter[Überblick über Pakete](packages-overview.md).

Verwenden Sie den `update-package-versions-status` Befehl, um den Status einer Paketversion in `Published``Unlisted`, oder `Archived` zu ändern. Informationen zu den für die Verwendung des Befehls erforderlichen IAM-Berechtigungen finden Sie unter[Erforderliche IAM-Berechtigungen, um den Status einer Paketversion zu aktualisieren](#update-package-version-status-iam). Im folgenden Beispiel wird der Status von Version 4.1.0 des npm-Pakets auf gesetzt. `chalk` `Archived`

```
aws codeartifact update-package-versions-status --domain my_domain
 --domain-owner 111122223333 --repository my_repo --format npm --package chalk 
--versions 4.1.0 --target-status Archived
```

Beispielausgabe:

```
{
    "successfulVersions": {
        "4.1.0": {
            "revision": "+Oz8skWbwY3k8M6SrNIqNj6bVH/ax+CxvkJx+No5j8I=",
            "status": "Archived"
        }
    },
    "failedVersions": {}
}
```

In diesem Beispiel wird ein npm-Paket verwendet, aber der Befehl funktioniert auch für andere Formate. Mehrere Versionen können mit einem einzigen Befehl in denselben Zielstatus versetzt werden, siehe das folgende Beispiel.

```
aws codeartifact update-package-versions-status --domain my_domain
 --domain-owner 111122223333 --repository my_repo --format npm --package chalk 
--versions 4.1.0 4.1.1 --target-status Archived
```

Beispielausgabe:

```
{
    "successfulVersions": {
        "4.1.0": {
            "revision": "25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=",
            "status": "Archived"
        },
        "4.1.1": {
            "revision": "+Oz8skWbwY3k8M6SrNIqNj6bVH/ax+CxvkJx+No5j8I=",
            "status": "Archived"
        }
    },
    "failedVersions": {}
}
```

Beachten Sie, dass eine einmal veröffentlichte Paketversion nicht wieder in den `Unfinished` Status zurückversetzt werden kann. Daher ist dieser Status als Wert für den `--target-status` Parameter nicht zulässig. Um die Paketversion in den `Disposed` Status zu verschieben, verwenden Sie stattdessen den `dispose-package-versions` Befehl wie unten beschrieben.

## Erforderliche IAM-Berechtigungen, um den Status einer Paketversion zu aktualisieren
<a name="update-package-version-status-iam"></a>

Um ein Paket `update-package-versions-status` anfordern zu können, müssen Sie über die `codeartifact:UpdatePackageVersionsStatus` entsprechende Berechtigung für die Paketressource verfügen. Das bedeutet, dass Sie die Berechtigung `update-package-versions-status` zum Aufrufen pro Paket erteilen können. Eine IAM-Richtlinie, die die Erlaubnis zum Aufrufen `update-package-versions-status` des npm-Pakets erteilt, *chalk* würde beispielsweise eine Aussage wie die folgende enthalten.

```
{
  "Action": [
    "codeartifact:UpdatePackageVersionsStatus"
  ],
  "Effect": "Allow",
  "Resource": "arn:aws:codeartifact:us-east-1:111122223333:package/my_domain/my_repo/npm//chalk"
}
```

## Der Status eines NPM-Pakets mit Gültigkeitsbereich wird aktualisiert
<a name="update-package-version-status-scoped-npm"></a>

Verwenden Sie den Parameter, um den Paketversionsstatus einer npm-Paketversion mit einem Bereich zu aktualisieren. `--namespace` Verwenden Sie beispielsweise den folgenden Befehl, um die Liste der Version 8.0.0 von `@nestjs/core` aufzuheben.

```
aws codeartifact update-package-versions-status --domain my_domain
 --domain-owner 111122223333 --repository my_repo --format npm --namespace nestjs 
--package core --versions 8.0.0 --target-status Unlisted
```

## Status für ein Maven-Paket wird aktualisiert
<a name="update-package-version-status-maven"></a>

Maven-Pakete haben immer eine Gruppen-ID, die in als Namespace bezeichnet wird. CodeArtifact Verwenden Sie den `--namespace` Parameter, um die Maven-Gruppen-ID beim Aufrufen anzugeben. `update-package-versions-status` Verwenden Sie beispielsweise den folgenden Befehl, um Version 2.13.1 des Maven-Pakets `org.apache.logging.log4j:log4j` zu archivieren.

```
aws codeartifact update-package-versions-status --domain my_domain
 --domain-owner 111122223333 --repository my_repo --format maven 
--namespace org.apache.logging.log4j --package log4j 
--versions 2.13.1 --target-status Archived
```

## Angabe einer Paketversionsrevision
<a name="update-status-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 den Status von Paketversionen zu aktualisieren, 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 Paketversionen zu übergeben. Der Status einer Paketversion wird nur aktualisiert, wenn die aktuelle Version der Paketversion dem angegebenen Wert entspricht.

**Anmerkung**  
Der `—-versions` Parameter muss auch definiert werden, wenn der `--version-revisions` Parameter verwendet wird.

```
aws codeartifact update-package-versions-status --domain my_domain 
   --domain-owner 111122223333 --repository my_repo --format npm --package chalk 
   --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8bzVMJ4=" 
   --versions 4.1.0 --target-status Archived
```

Um mehrere Versionen mit einem einzigen Befehl zu aktualisieren, übergeben Sie den Optionen eine kommagetrennte Liste von Versions- und Versionsrevisionspaaren. `--version-revisions` Der folgende Beispielbefehl definiert zwei verschiedene Revisionspaare für Paketversion und Paketversion.

```
aws codeartifact update-package-versions-status --domain my_domain 
 --domain-owner 111122223333 --repository my_repo --format npm 
 --package chalk
 --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=,4.0.0=E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc="  
 --versions 4.1.0 4.0.0 --target-status Published
```

Beispielausgabe:

```
{
    "successfulVersions": {
        "4.0.0": {
            "revision": "E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=",
            "status": "Published"
        },
        "4.1.0": {
            "revision": "25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=",
            "status": "Published"
        }
    },
    "failedVersions": {}
}
```

Wenn mehrere Paketversionen aktualisiert werden, `--version-revisions` müssen die übergebenen Versionen mit den Versionen identisch sein, an die übergeben wurde`--versions`. Wenn eine Revision falsch angegeben wurde, wird der Status dieser Version nicht aktualisiert.

## Verwenden Sie den erwarteten Statusparameter
<a name="using-expected-status"></a>

Der `update-package-versions-status` Befehl stellt den `--expected-status` Parameter bereit, der die Angabe des erwarteten aktuellen Status einer Paketversion unterstützt. Wenn der aktuelle Status nicht mit dem übergebenen Wert übereinstimmt`--expected-status`, wird der Status dieser Paketversion nicht aktualisiert.

Beispielsweise haben die Versionen 4.0.0 und 4.1.0 des npm-Pakets `chalk` derzeit den Status. *my\$1repo* `Published` Bei einem Aufruf`update-package-versions-status`, der den erwarteten Status von angibt, können beide Paketversionen nicht aktualisiert `Unlisted` werden, da der Status nicht übereinstimmt.

```
aws codeartifact update-package-versions-status --domain my_domain
--domain-owner 111122223333 --repository my_repo --format npm --package chalk 
--versions 4.1.0 4.0.0 --target-status Archived --expected-status Unlisted
```

Beispielausgabe:

```
{
    "successfulVersions": {},
    "failedVersions": {
        "4.0.0": {
            "errorCode": "MISMATCHED_STATUS",
            "errorMessage": "current status: Published, expected status: Unlisted"
        },
        "4.1.0": {
            "errorCode": "MISMATCHED_STATUS",
            "errorMessage": "current status: Published, expected status: Unlisted"
        }
    }
}
```

## Fehler bei einzelnen Paketversionen
<a name="update-package-version-status-errors"></a>

Es gibt mehrere Gründe, warum der Status einer Paketversion beim Aufrufen nicht aktualisiert wird`update-package-versions-status`. Beispielsweise wurde die Revision der Paketversion möglicherweise falsch angegeben oder der erwartete Status entspricht nicht dem aktuellen Status. In diesen Fällen wird die Version in der `failedVersions` Map in der API-Antwort enthalten sein. Wenn eine Version fehlschlägt, werden andere Versionen, die im selben Aufruf von angegeben wurden, `update-package-versions-status` möglicherweise übersprungen und ihr Status wird nicht aktualisiert. Solche Versionen werden auch mit dem Wert `errorCode` von `SKIPPED` in die `failedVersions` Map aufgenommen.

In der aktuellen Implementierung von werden alle anderen Versionen übersprungen`update-package-versions-status`, wenn der Status einer oder mehrerer Versionen nicht geändert werden kann. Das heißt, entweder wurden alle Versionen erfolgreich aktualisiert oder es wurden keine Versionen aktualisiert. Dieses Verhalten ist im API-Vertrag nicht garantiert. In future könnten einige Versionen erfolgreich sein, während andere Versionen bei einem einzigen Aufruf von fehlschlagen`update-package-versions-status`.

Der folgende Beispielbefehl beinhaltet einen Fehler bei der Aktualisierung des Versionsstatus, der auf eine nicht übereinstimmende Paketversion zurückzuführen ist. Dieser Aktualisierungsfehler führt dazu, dass ein weiterer Aufruf zur Aktualisierung des Versionsstatus übersprungen wird.

```
aws codeartifact update-package-versions-status --domain my_domain
  --domain-owner 111122223333 --repository my_repo 
  --format npm --package chalk 
  --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ=,4.0.0=E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=" 
  --versions 4.1.0 4.0.0 --target-status Archived
```

Beispielausgabe:

```
{
    "successfulVersions": {},
    "failedVersions": {
        "4.0.0": {
            "errorCode": "SKIPPED",
            "errorMessage": "version 4.0.0 is skipped"
        },
        "4.1.0": {
            "errorCode": "MISMATCHED_REVISION",
            "errorMessage": "current revision: 25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=, expected revision: 25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ="
        }
    }
}
```

## Entsorgung von Paketversionen
<a name="dispose-package-versions"></a>

Der `Disposed` Paketstatus verhält sich ähnlich wie`Archived`, mit dem Unterschied, dass die Paket-Assets dauerhaft gelöscht werden, CodeArtifact sodass dem Konto des Domaininhabers keine Kosten mehr für den Asset-Speicher in Rechnung gestellt werden. Weitere Informationen zum Status der einzelnen Paketversionen finden Sie unter[Status der Paketversion](packages-overview.md#package-version-status). Verwenden Sie den `dispose-package-versions` Befehl`Disposed`, um den Status einer Paketversion auf zu zu ändern. Diese Funktion ist unabhängig davon`update-package-versions-status`, dass das Löschen einer Paketversion nicht rückgängig gemacht werden kann. Da die Paketressourcen gelöscht werden, kann der Status der Version nicht wieder auf `Archived``Unlisted`, oder `Published` zurückgesetzt werden. Die einzige Aktion, die für eine entsorgte Paketversion ausgeführt werden kann, besteht darin, sie mithilfe des `delete-package-versions` Befehls zu löschen.

Für einen `dispose-package-versions` erfolgreichen Aufruf muss der aufrufende IAM-Principal über die `codeartifact:DisposePackageVersions` entsprechende Berechtigung für die Paketressource verfügen.

Das Verhalten des `dispose-package-versions` Befehls ist ähnlich wie`update-package-versions-status`, einschließlich des Verhaltens der `--expected-status` Optionen `--version-revisions ` und, die in den Abschnitten [Versionsrevision](#update-status-specify-package-version-revision) und [Erwarteter Status](#using-expected-status) beschrieben sind. Der folgende Befehl versucht beispielsweise, eine Paketversion zu löschen, schlägt jedoch fehl, weil der erwartete Status nicht übereinstimmt.

```
aws codeartifact dispose-package-versions —domain my_domain --domain-owner 111122223333 
--repository my_repo --format npm --package chalk --versions 4.0.0 
--expected-status Unlisted
```

Beispielausgabe:

```
{
    "successfulVersions": {},
    "failedVersions": {
        "4.0.0": {
            "errorCode": "MISMATCHED_STATUS",
            "errorMessage": "current status: Published, expected status: Unlisted"
        }
    }
}
```

Wenn derselbe Befehl erneut mit einem `--expected-status` of ausgeführt wird`Published`, ist die Löschung erfolgreich.

```
aws codeartifact dispose-package-versions —domain my_domain --domain-owner 111122223333 
--repository my_repo --format npm --package chalk --versions 4.0.0 
--expected-status Published
```

Beispielausgabe:

```
{
    "successfulVersions": {
        "4.0.0": {
            "revision": "E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=",
            "status": "Disposed"
        }
    },
    "failedVersions": {}
}
```

# Einstellungen zur Paketherkunft bearbeiten
<a name="package-origin-controls"></a>

In können Paketversionen einem Repository hinzugefügt werden AWS CodeArtifact, indem sie direkt veröffentlicht, aus einem Upstream-Repository heruntergeladen oder aus einem externen, öffentlichen Repository aufgenommen werden. Wenn Sie zulassen, dass Paketversionen eines Pakets sowohl durch direkte Veröffentlichung als auch durch Aufnahme aus öffentlichen Repositorys hinzugefügt werden, sind Sie anfällig für Angriffe, die Abhängigkeiten ersetzen. Weitere Informationen finden Sie unter [Angriffe zur Substitution von Abhängigkeiten](dependency-substitution-attacks.md). Um sich vor einem Angriff durch die Substitution von Abhängigkeiten zu schützen, können Sie die Kontrolle des Paketursprungs für ein Paket in einem Repository konfigurieren, um einzuschränken, wie Versionen dieses Pakets dem Repository hinzugefügt werden können.

Die Konfiguration von Kontrollen zur Paketherkunft sollte von jedem Team in Betracht gezogen werden, das zulassen möchte, dass neue Versionen verschiedener Pakete sowohl aus internen Quellen wie Direktveröffentlichungen als auch aus externen Quellen wie öffentlichen Repositorien stammen. Standardmäßig werden die Kontrollen für den Paketursprung darauf konfiguriert, wie die erste Version eines Pakets zum Repository hinzugefügt wird. Hinweise zu den Einstellungen für die Steuerung des Paketursprungs und deren Standardwerte finden Sie unter[Einstellungen zur Kontrolle des Paketursprungs](#package-origin-control-settings).

Um den Paketdatensatz nach der Verwendung des `put-package-origin-configuration` API-Vorgangs zu entfernen, verwenden Sie `delete-package` (siehe[Löschen Sie ein Paket oder eine Paketversion](delete-package.md)).

## Allgemeine Szenarien zur Paketzugriffskontrolle
<a name="package-origin-control-scenarios"></a>

Dieser Abschnitt enthält einige allgemeine Szenarien, wenn eine Paketversion zu einem CodeArtifact Repository hinzugefügt wird. Die Einstellungen zur Kontrolle des Paketursprungs werden für neue Pakete festgelegt, je nachdem, wie die erste Paketversion hinzugefügt wird.

In den folgenden Szenarien ist ein *internes Paket* ein Paket, das direkt von einem Paketmanager in Ihrem Repository veröffentlicht wird, z. B. ein Paket, das Sie oder Ihr Team erstellen und verwalten. Ein *externes Paket* ist ein Paket, das in einem öffentlichen Repository vorhanden ist und über eine externe Verbindung in Ihr Repository aufgenommen werden kann.

**Eine externe Paketversion wird für ein vorhandenes internes Paket veröffentlicht**

Stellen Sie sich in diesem Szenario ein internes Paket, *PackageA*, vor. Ihr Team veröffentlicht die erste Paketversion für *PackageA in einem Repository*. CodeArtifact Da dies die erste Paketversion für dieses Paket ist, werden die Einstellungen für die Kontrolle des Paketursprungs automatisch auf **Veröffentlichen: Zulassen und **Upstream:**** Blockieren gesetzt. Sobald das Paket in Ihrem Repository vorhanden ist, wird ein Paket mit demselben Namen in einem öffentlichen Repository veröffentlicht, das mit Ihrem CodeArtifact Repository verbunden ist. Dies könnte ein versuchter Angriff zur Substitution von Abhängigkeiten auf das interne Paket sein, oder es könnte auch einfach ein Zufall sein. Unabhängig davon sind die Kontrollen zur Paketherkunft so konfiguriert, dass sie die Aufnahme der neuen externen Version blockieren, um sich vor einem möglichen Angriff zu schützen.

In der folgenden Abbildung ist *RepoA* Ihr CodeArtifact Repository mit einer externen Verbindung zu einem öffentlichen Repository. Ihr Repository enthält die Versionen 1.1 und 2.1 von *PackageA*, aber Version 3.0 ist im öffentlichen Repository veröffentlicht. Normalerweise würde *RepoA* Version 3.0 aufnehmen, nachdem das Paket von einem Paketmanager angefordert wurde. Da die Paketaufnahme auf **Blockieren** gesetzt ist, wird Version 3.0 nicht in Ihr CodeArtifact Repository aufgenommen und steht den damit verbundenen Paketmanagern nicht zur Verfügung.

![\[Einfache Grafik, die zeigt, dass eine neue externe Paketversion aus einem öffentlichen Repository blockiert wird.\]](http://docs.aws.amazon.com/de_de/codeartifact/latest/ug/images/package-origin-controls-one.png)


**Eine interne Paketversion wird für ein vorhandenes externes Paket veröffentlicht**

In diesem Szenario existiert ein Paket, *PackageB*, extern in einem öffentlichen Repository, das Sie mit Ihrem Repository verbunden haben. Wenn ein mit Ihrem Repository verbundener Paketmanager *PackageB* anfordert, wird die Paketversion aus dem öffentlichen Repository in Ihr Repository aufgenommen. **Da dies die erste Paketversion von *PackageB* ist, die zu Ihrem Repository hinzugefügt wurde, sind die Einstellungen für den Paketursprung auf **Publish: BLOCK und Upstream:** ALLOW konfiguriert.** Später versuchen Sie, eine Version mit demselben Paketnamen im Repository zu veröffentlichen. Entweder kennen Sie das öffentliche Paket nicht und versuchen, ein Paket, das nichts damit zu tun hat, unter demselben Namen zu veröffentlichen, oder Sie versuchen, eine gepatchte Version zu veröffentlichen, oder Sie versuchen, genau die Paketversion, die bereits extern existiert, direkt zu veröffentlichen. CodeArtifact lehnt die Version ab, die Sie veröffentlichen möchten, ermöglicht es Ihnen jedoch, die Ablehnung explizit zu überschreiben und die Version bei Bedarf zu veröffentlichen.

In der folgenden Abbildung ist *RepoA* Ihr CodeArtifact Repository mit einer externen Verbindung zu einem öffentlichen Repository. Ihr Repository enthält Version 3.0, die es aus dem öffentlichen Repository aufgenommen hat. Sie möchten Version 1.1 in Ihrem Repository veröffentlichen. Normalerweise könnten Sie Version 1.2 in *RepoA* veröffentlichen, aber da die Veröffentlichung auf **Blockieren** eingestellt ist, kann Version 1.2 nicht veröffentlicht werden.

![\[Einfache Grafik, die zeigt, dass eine neue externe Paketversion aus einem öffentlichen Repository blockiert wird.\]](http://docs.aws.amazon.com/de_de/codeartifact/latest/ug/images/package-origin-controls-two.png)


**Veröffentlichung einer gepatchten Paketversion eines vorhandenen externen Pakets**

In diesem Szenario existiert ein Paket, *PackageB*, extern in einem öffentlichen Repository, das Sie mit Ihrem Repository verbunden haben. Wenn ein mit Ihrem Repository verbundener Paketmanager *PackageB* anfordert, wird die Paketversion aus dem öffentlichen Repository in Ihr Repository aufgenommen. **Da dies die erste Paketversion von *PackageB* ist, die zu Ihrem Repository hinzugefügt wurde, sind die Einstellungen für den Paketursprung auf **Publish: BLOCK und Upstream:** ALLOW konfiguriert.** Ihr Team entscheidet, dass es gepatchte Paketversionen dieses Pakets im Repository veröffentlichen muss. Um Paketversionen direkt veröffentlichen zu können, ändert Ihr Team die Einstellungen zur Kontrolle des Paketursprungs in **Publish: ALLOW** und **Upstream: BLOCK**. Versionen dieses Pakets können jetzt direkt in Ihrem Repository veröffentlicht und aus öffentlichen Repositorys aufgenommen werden. **Nachdem Ihr Team die gepatchten Paketversionen veröffentlicht hat, setzt Ihr Team die Einstellungen für den Paketursprung auf **Publish: BLOCK und Upstream: ALLOW** zurück.**

## Einstellungen zur Kontrolle des Paketursprungs
<a name="package-origin-control-settings"></a>

Mit den Kontrollen zur Paketherkunft können Sie konfigurieren, wie Paketversionen zu einem Repository hinzugefügt werden können. Die folgenden Listen enthalten die verfügbaren Einstellungen und Werte für die Steuerung des Paketursprungs.

**Anmerkung**  
Die verfügbaren Einstellungen und Werte unterscheiden sich bei der Konfiguration der Ursprungskontrollen für Paketgruppen. Weitere Informationen finden Sie unter [Herkunftskontrollen für Paketgruppen](package-group-origin-controls.md).

**Veröffentlichen**

Diese Einstellung konfiguriert, ob Paketversionen mithilfe von Paketmanagern oder ähnlichen Tools direkt im Repository veröffentlicht werden können.
+ **ZULASSEN**: Paketversionen können direkt veröffentlicht werden.
+ **BLOCK**: Paketversionen können nicht direkt veröffentlicht werden.

**Upstream**

Diese Einstellung konfiguriert, ob Paketversionen aus externen, öffentlichen Repositorys aufgenommen oder von Upstream-Repositorys beibehalten werden können, wenn dies von einem Paketmanager angefordert wird.
+ **ALLOW**: Jede Paketversion kann aus anderen CodeArtifact Repositorys beibehalten werden, die als Upstream-Repositorys konfiguriert sind, oder von einer öffentlichen Quelle mit einer externen Verbindung aufgenommen werden.
+ **BLOCKIEREN**: Paketversionen können nicht aus anderen CodeArtifact Repositorys aufbewahrt werden, die als Upstream-Repositorys konfiguriert sind, oder von einer öffentlichen Quelle mit einer externen Verbindung aufgenommen werden.

## Standardeinstellungen für die Kontrolle des Paketursprungs
<a name="default-package-origin-control-settings"></a>

Die Standardeinstellungen für die Kontrolle des Paketursprungs werden auf der Grundlage der Einstellungen für die Ursprungskontrolle der Paketgruppe konfiguriert, die dem Paket zugeordnet ist. Weitere Informationen zu Paketgruppen und zur Kontrolle der Herkunft von Paketgruppen finden Sie unter [Arbeiten mit Paketgruppen in CodeArtifact](package-groups.md) und[Herkunftskontrollen für Paketgruppen](package-group-origin-controls.md).

Wenn ein Paket mit einer Paketgruppe verknüpft ist, deren Einschränkungseinstellungen `ALLOW` für jeden Einschränkungstyp aktiviert sind, basieren die Standardsteuerungen für den Paketursprung für ein Paket darauf, wie die erste Version dieses Pakets dem Repository hinzugefügt wurde.
+ Wenn die erste Paketversion direkt von einem Paketmanager veröffentlicht wird, lauten die Einstellungen **Publish: ALLOW und Upstream****: BLOCK**.
+ Wenn die erste Paketversion aus einer öffentlichen Quelle aufgenommen wurde, lauten die Einstellungen **Publish: BLOCK und **Upstream: ALLOW****.

**Anmerkung**  
Für Pakete, die vor etwa Mai 2022 in CodeArtifact Repositorys existierten, gelten standardmäßig die Einstellungen **Publish: ALLOW und Upstream:** **ALLOW**. Die Kontrolle des Paketursprungs muss für solche Pakete manuell festgelegt werden. Die aktuellen Standardwerte wurden seitdem für neue Pakete festgelegt und ab dem Start der Funktion am 14. Juli 2022 durchgesetzt. Weitere Informationen zur Einstellung von Kontrollen zur Herkunft von Paketen finden Sie unter[Die Einstellungen für den Paketursprung werden bearbeitet](#edit-package-origin-controls).

Andernfalls, wenn ein Paket einer Paketgruppe zugeordnet ist, die mindestens eine Einschränkungseinstellung von `BLOCK` oder hat`ALLOW_SPECIFIC_REPOSITORIES`, dann werden die Standardeinstellungen für die Ursprungskontrolle für dieses Paket auf **Publish: ALLOW und Upstream:** **ALLOW gesetzt**.

## Wie die Kontrollen zur Herkunft von Paketen mit den Ursprungskontrollen für Paketgruppen interagieren
<a name="package-origin-controls-interaction-package-groups"></a>

Da Pakete über Einstellungen für die Ursprungskontrolle und die zugehörigen Paketgruppen über Einstellungen für die Ursprungskontrolle verfügen, ist es wichtig zu verstehen, wie diese beiden unterschiedlichen Einstellungen miteinander interagieren.

Die Wechselwirkung zwischen den beiden Einstellungen besteht darin, dass eine Einstellung von `BLOCK` immer Vorrang vor einer Einstellung von hat`ALLOW`. In der folgenden Tabelle sind einige Beispielkonfigurationen und ihre effektiven Origin Control-Einstellungen aufgeführt.


| Einstellung zur Kontrolle des Paketursprungs | Einstellung zur Kontrolle des Ursprungs von Paketgruppen | Effektive Einstellung für die Ursprungskontrolle | 
| --- | --- | --- | 
| VERÖFFENTLICHEN: ZULASSENSTROMAUFWÄRTS: ZULASSEN | VERÖFFENTLICHEN: ZULASSENSTROMAUFWÄRTS: ZULASSEN | VERÖFFENTLICHEN: ZULASSENSTROMAUFWÄRTS: ZULASSEN | 
| VERÖFFENTLICHEN: BLOCKIERENSTROMAUFWÄRTS: ZULASSEN | VERÖFFENTLICHEN: ZULASSENSTROMAUFWÄRTS: ZULASSEN | VERÖFFENTLICHEN: BLOCKIERENSTROMAUFWÄRTS: ZULASSEN | 
| VERÖFFENTLICHEN: ZULASSENSTROMAUFWÄRTS: ZULASSEN | VERÖFFENTLICHEN: ZULASSENSTROMAUFWÄRTS: BLOCKIEREN | VERÖFFENTLICHEN: ZULASSENSTROMAUFWÄRTS: BLOCKIEREN | 

Das bedeutet, dass ein Paket mit den Ursprungseinstellungen **Publish: ALLOW** und **Upstream:** ALLOW quasi auf die Origin-Control-Einstellungen der zugehörigen Paketgruppe zurückstellt.

## Die Einstellungen für den Paketursprung werden bearbeitet
<a name="edit-package-origin-controls"></a>

Die Kontrollen zur Paketherkunft werden automatisch konfiguriert, je nachdem, wie die erste Paketversion eines Pakets zum Repository hinzugefügt wurde. Weitere Informationen finden Sie unter[Standardeinstellungen für die Kontrolle des Paketursprungs](#default-package-origin-control-settings). Gehen Sie wie folgt vor, um Steuerungen für den Paketursprung für ein Paket in einem CodeArtifact Repository hinzuzufügen oder zu bearbeiten.

**Um Steuerelemente für den Paketursprung hinzuzufügen oder zu bearbeiten (Konsole)**

1. Öffnen Sie die AWS CodeArtifact Konsole unter [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. Wählen Sie im Navigationsbereich **Repositories** und dann das Repository aus, das das Paket enthält, das Sie bearbeiten möchten. 

1. Suchen Sie in der Tabelle **Pakete** nach dem Paket, das Sie bearbeiten möchten, und wählen Sie es aus.

1. Wähle auf der Seite mit der Paketübersicht in **Origin Controls** die Option **Bearbeiten** aus.

1. Wählen **Sie unter „Ursprungskontrollen bearbeiten“** die Kontrollen für den Paketursprung aus, die Sie für dieses Paket festlegen möchten. Beide Einstellungen für die Steuerung des Paketursprungs, Publish und Upstream, müssen gleichzeitig festgelegt werden.
   + Um das direkte Veröffentlichen von Paketversionen zuzulassen, wählen Sie unter **Veröffentlichen** die Option **Zulassen** aus. Um die Veröffentlichung von Paketversionen zu blockieren, wählen Sie **Blockieren** aus.
   + **Um die Aufnahme von Paketen aus externen Repositorys und das Abrufen von Paketen aus Upstream-Repositorys zuzulassen, wählen Sie unter **Upstream-Quellen** die Option Zulassen aus.** **Um die gesamte Aufnahme und das Abrufen von Paketversionen aus externen und Upstream-Repositorys zu blockieren, wählen Sie Blockieren.**

**Um Kontrollen zur Paketherkunft hinzuzufügen oder zu bearbeiten ()AWS CLI**

1. Falls nicht, konfigurieren Sie das, AWS CLI indem Sie die Schritte unter befolgen[Einrichtung mit AWS CodeArtifact](get-set-up-for-codeartifact.md).

1. Verwenden Sie den `put-package-origin-configuration` Befehl, um Steuerelemente für den Paketursprung hinzuzufügen oder zu bearbeiten. Ersetzen Sie die folgenden Felder:
   + *my\$1domain*Ersetzen Sie es durch die CodeArtifact Domain, die das Paket enthält, das Sie aktualisieren möchten.
   + *my\$1repo*Ersetzen Sie es durch das CodeArtifact Repository, das das Paket enthält, das Sie aktualisieren möchten.
   + *npm*Ersetzen Sie es durch das Paketformat des Pakets, das Sie aktualisieren möchten.
   + *my\$1package*Ersetzen Sie es durch den Namen des Pakets, das Sie aktualisieren möchten.
   + Ersetzen Sie *ALLOW* und *BLOCK* durch Ihre gewünschten Einstellungen für die Kontrolle des Paketursprungs.

   ```
   aws codeartifact put-package-origin-configuration --domain my_domain \
   --repository my_repo --format npm --package my_package \ 
   --restrictions publish=ALLOW,upstream=BLOCK
   ```

## Veröffentlichungs- und Upstream-Repositorys
<a name="package-publishing-upstreams"></a>

CodeArtifact erlaubt nicht das Veröffentlichen von Paketversionen, die in erreichbaren Upstream-Repositorys oder öffentlichen Repositorys vorhanden sind. Nehmen wir zum Beispiel an, Sie möchten ein Maven-Paket `com.mycompany.mypackage:1.0` in einem Repository `myrepo` veröffentlichen und `myrepo` haben ein Upstream-Repository mit einer externen Verbindung zu Maven Central. Betrachten Sie die folgenden Szenarien.

1. Die Einstellungen für die Kontrolle des Paketursprungs `com.mycompany.mypackage` lauten **Publish: ALLOW** und **Upstream: ALLOW**. Wenn im Upstream-Repository oder in Maven Central vorhanden `com.mycompany.mypackage:1.0` ist, wird jeder Versuch, darin zu veröffentlichen, `myrepo` mit einem 409-Konfliktfehler CodeArtifact zurückgewiesen. Sie könnten immer noch eine andere Version veröffentlichen, z. B. `com.mycompany.mypackage:1.1`

1. Die Einstellungen für die Kontrolle des Paketursprungs `com.mycompany.mypackage` lauten **Publish: ALLOW** und **Upstream: BLOCK**. Sie können jede Version von `com.mycompany.mypackage` in Ihrem Repository veröffentlichen, die noch nicht existiert, da auf Paketversionen nicht zugegriffen werden kann.

1. Die Einstellungen zur Kontrolle des Paketursprungs `com.mycompany.mypackage` lauten **Publish: BLOCK** und **Upstream: ALLOW**. Sie können keine Paketversionen direkt in Ihrem Repository veröffentlichen.