

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.

# AWS IoT Device Management Softwarepaketkatalog
<a name="software-package-catalog"></a>

Mit dem AWS IoT Device Management Softwarepaketkatalog können Sie ein Inventar von Softwarepaketen und deren Versionen verwalten. Sie können Paketversionen einzelnen Dingen und AWS IoT dynamischen Dinggruppen zuordnen und sie über interne Prozesse oder [AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) bereitstellen. 

Ein Softwarepaket enthält eine oder mehrere Paketversionen, eine Sammlung von Dateien, die als einzelne Einheit bereitgestellt werden können. Paketversionen können Firmware, Betriebssystemupdates, Geräteanwendungen, Konfigurationen und Sicherheitspatches enthalten. Da sich die Software im Laufe der Zeit weiterentwickelt, können Sie eine neue Paketversion erstellen und sie in Ihrer Flotte einsetzen. 

Der Hub für AWS IoT Softwarepakete befindet sich darin AWS IoT Core. Sie können den Hub verwenden, um Ihr Softwarepaketinventar und Ihre Metadaten zentral zu registrieren und zu verwalten, wodurch ein Katalog von Softwarepaketen und deren Versionen erstellt wird. Sie können Geräte auf der Grundlage von Softwarepaketen und Paketversionen gruppieren, die auf dem Gerät bereitgestellt werden. Diese Funktion bietet die Möglichkeit, das geräteseitige Paketinventar als benannten Schatten zu verwalten, Geräte anhand von Versionen zuzuordnen und zu gruppieren und die Verteilung der Paketversionen innerhalb der Flotte anhand von Flottenmetriken zu visualisieren.

Wenn Sie ein internes Softwarebereitstellungssystem eingerichtet haben, können Sie diesen Prozess weiterhin für die Bereitstellung Ihrer Paketversionen verwenden. Wenn Sie noch keinen Bereitstellungsprozess eingerichtet haben oder wenn Sie es vorziehen, empfehlen wir, [AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) zu verwenden, um die Funktionen im Softwarepaket-Katalog zu verwenden. Weitere Informationen finden Sie unter [AWS IoT Jobs vorbereiten](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html).

**Topics**
+ [Vorbereitung der Verwendung des Softwarepaket-Katalogs](preparing-to-use-software-package-catalog.md)
+ [Vorbereitung der Sicherheit](preparing-security.md)
+ [Vorbereitung der Flottenindizierung](preparing-fleet-indexing.md)
+ [Jobs vorbereiten AWS IoT](preparing-jobs-for-service-package-catalog.md)
+ [Erste Schritte mit dem Softwarepaket-Katalog](getting-started-with-software-package-catalog.md)

# Vorbereitung der Verwendung des Softwarepaket-Katalogs
<a name="preparing-to-use-software-package-catalog"></a>

Der folgende Abschnitt bietet einen Überblick über den Lebenszyklus der Paketversionen und Informationen zur Verwendung des AWS IoT Device Management Softwarepaketkatalogs. 

## Lebenszyklus der Paketversion
<a name="package-version-lifecycle"></a>

Eine Paketversion kann sich in den folgenden Lebenszyklusstatus weiterentwickeln: `draft`, `published`, und `deprecated`. Sie kann auch `deleted` sein.

![\[Der Lebenszyklus der Paketversion mit dem Entwurf, der Veröffentlichung und der veralteten Version. Sie kann auch gelöscht werden.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/package-catalog-version-lifecycle.png)

+ **Entwurf**

  Wenn Sie eine Paketversion erstellen, befindet sie sich in einem `draft` Status. Dieser Status weist darauf hin, dass das Softwarepaket vorbereitet wird oder unvollständig ist.

  Solange sich die Paketversion in diesem Zustand befindet, können Sie sie nicht bereitstellen. Sie können die Beschreibung, Attribute und Tags der Paketversion bearbeiten.

  Sie können eine Paketversion, die sich im `draft` Status befindet, mithilfe der Konsole `published` oder `deleted` durch Ausführen von [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API-Vorgängen in den Status „In“ [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)oder „Befinden“ umwandeln.
+ **Veröffentlicht**

  Wenn Ihre Paketversion bereit für die Bereitstellung ist, stellen Sie die Paketversion in einen `published` Status um. In diesem Status können Sie wählen, ob Sie die Paketversion als Standardversion identifizieren möchten, indem Sie das Softwarepaket in der Konsole oder über den [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)API-Vorgang bearbeiten. In diesem Status können Sie nur die Beschreibung und die Tags bearbeiten.

  Sie können eine Paketversion, die sich im `published` Status befindet, mithilfe der Konsole `deprecated` oder mithilfe der API-Operationen oder `deleted` durch Ausführen von [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API-Operationen auf den Status „[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)Befinden“ umstellen.
+ **Als veraltet gekennzeichnet**

  Wenn eine neue Paketversion verfügbar ist, können Sie frühere Paketversionen auf `deprecated` umstellen. Sie können weiterhin Jobs mit einer veralteten Paketversion bereitstellen. Sie können auch eine veraltete Paketversion als Standardversion benennen und nur die Beschreibung und die Tags bearbeiten. 

  Erwägen Sie, eine Paketversion auf eine Version umzustellen, `deprecated` wenn die Version veraltet ist, Sie aber immer noch Geräte im Einsatz haben, die die ältere Version verwenden, oder Sie müssen sie aufgrund von Laufzeitabhängigkeiten warten. 

  Sie können eine Paketversion, die sich im `deprecated ` Status befindet, mithilfe der Konsole `published` oder `deleted` durch Ausführen von API-Vorgängen auf die aktuelle Version umstellen. [UpdatePackageVersion[DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)
+ **Deleted (Gelöscht)**

  Wenn Sie eine Paketversion nicht mehr verwenden möchten, können Sie sie löschen, indem Sie die Konsole verwenden oder den [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API-Vorgang ausführen.
**Anmerkung**  
Wenn Sie eine Paketversion löschen, während noch ausstehende Aufträge darauf verweisen, erhalten Sie eine Fehlermeldung, wenn der Auftrag erfolgreich abgeschlossen wurde und versucht wird, den reservierten Named Shadow zu aktualisieren.  
 Wenn die Softwarepaketversion, die Sie löschen möchten, als Standardpaketversion benannt ist, müssen Sie das Paket zuerst aktualisieren, um eine andere Version als Standardversion zu benennen, oder das Feld unbenannt lassen. Sie können dies mithilfe der Konsole oder der [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API-Operation tun. (Um eine benannte Paketversion als Standard zu entfernen, setzen Sie den [unsetDefaultVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html#iot-UpdatePackage-request-unsetDefaultVersion)Parameter auf true, wenn Sie den [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)API-Vorgang ausführen.)

  Wenn Sie ein Softwarepaket über die Konsole löschen, werden alle mit diesem Paket verknüpften Paketversionen gelöscht, sofern nicht eine als Standardversion benannt ist.

## Namenskonventionen für Paketversionen
<a name="package-version-naming"></a>

Wenn Sie Paketversionen benennen, ist es wichtig, eine logische Benennungsstrategie zu planen und anzuwenden, damit Sie und andere leicht die neueste Paketversion und den Versionsverlauf erkennen können. Sie müssen bei der Erstellung der Paketversion einen Versionsnamen angeben, aber die Strategie und das Format hängen weitgehend von Ihrem Geschäftsszenario ab.

Als bewährte Methode empfehlen wir die Verwendung des Semantic [SemVer](https://semver.org/)Versioning-Formats. Zum Beispiel, `1.2.3` wo `1` die Hauptversion für funktionell inkompatible Änderungen ist, `2` die Hauptversion für funktionell kompatible Änderungen und `3` die Patch-Version (für Fehlerbehebungen) ist. Weitere Informationen finden Sie unter [Semantic Versioning 2.0.0](https://semver.org/). Weitere Informationen zu den Anforderungen an die Paketversionsnamen finden Sie unter [VersionName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax) im AWS IoT API-Referenzhandbuch.

## Standardversion
<a name="default-version"></a>

Das Festlegen einer Version als Standard ist optional. Sie können Standard-Paketversionen hinzufügen oder entfernen. Sie können auch eine Paketversion bereitstellen, die nicht als Standardversion benannt ist.

Wenn Sie eine Paketversion erstellen, wird sie in einen `draft` Status versetzt und kann erst dann als Standardversion bezeichnet werden, wenn Sie die Paketversion auf veröffentlicht umstellen. Der Softwarepaket-Katalog wählt nicht automatisch eine Version als Standard aus oder aktualisiert eine neuere Paketversion als Standard. Sie müssen die von Ihnen gewählte Paketversion bewusst über die Konsole oder durch Ausführen des [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API-Vorgangs benennen.

## Versionsattribute
<a name="version-attributes"></a>

Versionsattribute und ihre Werte enthalten wichtige Informationen über Ihre Paketversionen. Wir empfehlen Ihnen, allgemeine Attribute für ein Paket oder eine Paketversion zu definieren. Sie können beispielsweise ein Name-Wert-Paar für Plattform, Architektur, Betriebssystem, Veröffentlichungsdatum, Autor oder Amazon-S3-URL erstellen.

 Wenn Sie einen AWS IoT Job mit einem Jobdokument erstellen, können Sie auch eine Substitutionsvariable (`$parameter`) verwenden, die auf den Wert eines Attributs verweist. Weitere Informationen finden Sie unter [AWS IoT Jobs vorbereiten](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html).

Versionsattribute, die in Paketversionen verwendet werden, werden nicht automatisch zum reservierten benannten Schatten hinzugefügt und können nicht direkt über Fleet Indexing indexiert oder abgefragt werden. Um Paketversionsattribute über Fleet Indexing zu indizieren oder abzufragen, können Sie das Versionsattribut im reservierten benannten Schatten auffüllen.

Wir empfehlen, dass der Versionsattributparameter im reservierten Schatten die vom Gerät gemeldeten Eigenschaften erfasst, z. B. das Betriebssystem und die Installationszeit. Sie können auch über Fleet Indexing indexiert und abgefragt werden.

Für Versionsattribute ist es nicht erforderlich, dass sie einer bestimmten Benennungskonvention entsprechen. Sie können Name-Wert-Paare erstellen, um Ihren Geschäftsanforderungen gerecht zu werden. Die Gesamtgröße aller Attribute in einer Paketversion ist auf 3 KB begrenzt. Weitere Informationen finden Sie unter [Beschränkungen für Softwarepakete und Paketversionen im Softwarepaket-Katalog](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#software_package_catalog_limits).

**Alle Attribute in einem Jobdokument verwenden**

Sie können festlegen, dass alle Attribute der Paketversion automatisch zu Ihrer Auftragsbereitstellung für ausgewählte Geräte hinzugefügt werden. Informationen zur automatischen programmgesteuerten Verwendung aller Paketversionsattribute in einem API- oder CLI-Befehl finden Sie im folgenden Beispiel für ein Jobdokument:

```
"TestPackage": "${aws:iot:package:TestPackage:version:PackageVersion:attributes}"
```

## Software-Stückliste
<a name="software-bill-of-materials"></a>

Die Software-Stückliste (SBOM) bietet eine zentrale Ablage für alle Aspekte Ihres Softwarepakets. Zusätzlich zum Speichern von Softwarepaketen und Paketversionen können Sie die mit jeder Paketversion verknüpfte Softwareliste (SBOM) im AWS IoT Device Management Softwarepaketkatalog speichern. Ein Softwarepaket enthält eine oder mehrere Paketversionen, und jede Paketversion besteht aus einer oder mehreren Komponenten. Jede dieser Komponenten, die die Zusammenstellung einer bestimmten Paketversion unterstützen, kann anhand einer Softwareliste beschrieben und katalogisiert werden. Die unterstützten Industriestandards für Softwarelisten sind SPDX und CyclonedX. Wenn eine SBOM zum ersten Mal erstellt wird, wird sie anhand des Industriestandardformats SPDX und CyclonedX validiert. Weitere Informationen zu SPDX finden Sie unter [System Package Data Exchange](https://spdx.dev/). [Weitere Informationen zu CyclonedX finden Sie unter CyclonedX.](https://cyclonedx.org/)

Die Softwareliste beschreibt alle Aspekte der Komponenten einer bestimmten Paketversion wie Paketinformationen, Dateiinformationen und andere relevante Metadaten. Das folgende Beispiel zeigt die Dokumentstruktur einer Software-Stückliste im SPDX-Format:

![\[Ein Beispiel für eine SBOM im SPDX-Format.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/spdx-2.3-document.png)


### Vorteile der Softwareliste
<a name="spc-sbom-benefits"></a>

Einer der wichtigsten Vorteile des Hinzufügens Ihrer Softwareliste für eine Paketversion im Softwarepaketkatalog ist das Schwachstellenmanagement.

**Verwaltung von Sicherheitslücken**

Die Bewertung und Minderung Ihrer Anfälligkeit gegenüber offensichtlichen Sicherheitsrisiken in Softwarekomponenten ist nach wie vor von entscheidender Bedeutung für den Schutz der Integrität Ihrer Geräteflotte. Mit der zusätzlichen Softwareliste, die im Softwarepaketkatalog für jede Paketversion gespeichert ist, können Sie proaktiv Sicherheitslücken aufdecken, indem Sie mithilfe Ihrer eigenen internen Schwachstellen-Management-Lösung wissen, welche Geräte je nach Paketversion und SBOM gefährdet sind. Sie können Fixes auf den betroffenen Geräten installieren und Ihre Geräteflotte schützen.

### Aufbewahrung von Softwarelisten
<a name="spc-sbom-storage"></a>

Die Softwarelisten (SBOM) für jede Softwarepaketversion werden mithilfe der Amazon S3 S3-Versionierungsfunktion in einem Amazon S3 S3-Bucket gespeichert. Der Amazon S3 S3-Bucket, in dem die SBOM gespeichert ist, muss sich in derselben Region befinden, in der die Paketversion erstellt wurde. Ein Amazon S3 S3-Bucket, der die Versionierungsfunktion verwendet, verwaltet mehrere Varianten eines Objekts in demselben Bucket. Weitere Informationen zur Verwendung der Versionierung in einem Amazon S3 S3-Bucket finden Sie unter [Verwenden der Versionierung in Amazon S3 S3-Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html).

**Anmerkung**  
An jede Softwarepaketversion können mehrere SBOM-Dateien angehängt werden, aber die SBOM-Dateien müssen in einer einzigen Zip-Archivdatei gespeichert werden.

Der spezifische Amazon S3 S3-Schlüssel und die Versions-ID für Ihren Bucket werden verwendet, um jede Version einer Softwareliste für eine Paketversion eindeutig zu identifizieren.

**Anmerkung**  
Für eine Paketversion mit einer einzelnen SBOM-Datei können Sie diese SBOM-Datei in Ihrem Amazon S3-Bucket als Zip-Archivdatei speichern.  
Für eine Paketversion mit mehreren SBOM-Dateien müssen Sie alle SBOM-Dateien in einer einzigen Zip-Archivdatei platzieren und diese Zip-Archivdatei dann in Ihrem Amazon S3 S3-Bucket speichern.  
Alle SBOM-Dateien, die in beiden Szenarien in der einzigen Zip-Archivdatei gespeichert sind, sind entweder als SPDX- oder CyclonedX-.json-Dateien formatiert.

**Richtlinie für Berechtigungen**

Um als spezifizierter AWS IoT Principal auf die im Amazon S3-Bucket gespeicherten SBOM-Zip-Archivdateien zugreifen zu können, benötigen Sie eine ressourcenbasierte Berechtigungsrichtlinie. Im folgenden Beispiel finden Sie die richtige ressourcenbasierte Berechtigungsrichtlinie:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "iot.amazonaws.com"
                ]
        },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::bucketName/*"
        }
    ]
}
```

Weitere Informationen zu ressourcenbasierten Berechtigungsrichtlinien finden Sie unter [AWS IoT ressourcenbasierte Richtlinien](security_iam_service-with-iam.md#security_iam_service-with-iam-resource-based-policies)

**Aktualisierung der SBOM**

Sie können die Softwareliste so oft wie nötig aktualisieren, um Ihre Geräteflotte zu schützen und zu erweitern. Jedes Mal, wenn die Softwareliste in Ihrem Amazon S3 S3-Bucket aktualisiert wird, ändert sich die Versions-ID und Sie müssen die neue Amazon S3 S3-Bucket-URL der entsprechenden Softwarepaketversion zuordnen. Sie werden die neue Versions-ID in der Spalte **Amazon S3 S3-Objekt-Versions-ID** auf der Seite mit der Paketversion im sehen AWS-Managementkonsole. Darüber hinaus können Sie den API-Vorgang `[GetPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_GetPackageVersion.html)` oder den CLI-Befehl verwenden`[get-package-version](https://docs.aws.amazon.com/cli/latest/reference/iot/get-package-version.html)`, um die neue Versions-ID anzuzeigen.

**Anmerkung**  
Wenn Sie Ihre Softwareliste aktualisieren, was zu einer neuen Versions-ID führt, wird keine neue Paketversion erstellt.

Weitere Informationen zu Amazon S3 S3-Objektschlüsseln finden Sie unter [Objektschlüsselnamen erstellen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html).

## Aktivierung der AWS IoT Flottenindizierung
<a name="enable-fleet-indexing"></a>

Die Aktivierung der AWS IoT Flottenindizierung ist eine Voraussetzung für die Verwendung des AWS IoT Device Management Softwarepaketkatalogs. Um die AWS IoT Flottenindizierung mit dem Softwarepaketkatalog zu nutzen, legen Sie den reservierten benannten Schatten (`$package`) als Datenquelle für jedes Gerät fest, auf dem Sie indizieren und Metriken sammeln möchten. Weitere Informationen zu reservierten benannten Schatten finden Sie unter[Reservierter benannter Schatten](#reserved-named-shadow).

Die Flottenindizierung bietet Unterstützung, sodass AWS IoT Dinge anhand dynamischer Dinggruppen gruppiert werden können, die nach der Version des Softwarepakets gefiltert werden. Mit der Flottenindizierung können beispielsweise Objekte identifiziert werden, für die eine bestimmte Paketversion installiert ist oder für die keine Paketversionen installiert sind oder die bestimmten Name-Wert-Paaren entsprechen. Schließlich bietet die Flottenindizierung standardmäßige und benutzerdefinierte Messwerte, anhand derer Sie sich einen Überblick über den Status Ihrer Geräteflotte verschaffen können. Weitere Informationen finden Sie unter [Vorbereitung der Flottenindizierung](preparing-fleet-indexing.md).

**Anmerkung**  
Die Aktivierung der Flottenindizierung für den Softwarepaket-Katalog verursacht Standard-Servicekosten. Weitere Informationen finden Sie unter [AWS IoT Device Management-Preisgestaltung](https://aws.amazon.com/iot-device-management/pricing/). 

## Reservierter benannter Schatten
<a name="reserved-named-shadow"></a>

Der reservierte, benannte Schatten, `$package`, gibt den Status der auf dem Gerät installierten Softwarepakete und Paketversionen wieder. Die Flottenindizierung verwendet den reservierten benannten Schatten als Datenquelle, um Standard- und benutzerdefinierte Messwerte zu erstellen, mit denen Sie den Status Ihrer Flotte abfragen können. Weitere Informationen finden Sie unter [Vorbereitung der Flottenindizierung](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html)

Ein reservierter benannter Schatten ähnelt einem [benannten Schatten](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) mit der Ausnahme, dass sein Name vordefiniert ist und Sie ihn nicht ändern können. Darüber hinaus aktualisiert sich der reservierte benannte Schatten nicht mit Metadaten und verwendet nur die Schlüsselwörter `version` und `attributes`.

Bei Aktualisierungsanfragen, die andere Stichwörter enthalten, wie z. B. `description`, wird unter dem `rejected` Thema eine Fehlermeldung angezeigt. Weitere Informationen finden Sie unter [Geräteschatten-Fehlermeldungen](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-error-messages.html).

Es kann erstellt werden, wenn Sie AWS IoT etwas über die Konsole erstellen, wenn ein AWS IoT Job erfolgreich abgeschlossen und der Shadow aktualisiert wurde und wenn Sie den [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html)API-Vorgang ausführen. Weitere Informationen finden Sie [UpdateThingShadow](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-rest-api.html#API_UpdateThingShadow)im AWS IoT Core Entwicklerhandbuch. 

**Anmerkung**  
Die Indizierung des reservierten benannten Schattens wird nicht auf die Anzahl der benannten Schatten angerechnet, die von der Flottenindizierung indexiert werden können. Weitere Informationen finden Sie unter [AWS IoT Device Management Flottenindizierungsgrenzen und -quoten](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits). Wenn Sie außerdem festlegen, dass AWS IoT Jobs den reservierten Named Shadow aktualisieren, wenn ein Job erfolgreich abgeschlossen wurde, wird der API-Aufruf auf Ihre Device Shadow- und Registrierungsvorgänge angerechnet und kann Kosten verursachen. Weitere Informationen finden Sie unter [Limits und Kontingente für AWS IoT Device Management Jobs](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#job-limits) und [IndexingFilter](https://docs.aws.amazon.com/iot/latest/apireference/API_IndexingFilter.html)API-Datentyp.

**Struktur des `$package` Schattens**

Der reservierte benannte Schatten enthält Folgendes:

```
{
    "state": {
        "reported": {
            "<packageName>": {
                "version": "",
                "attributes": {
                }
            }
        }
    },
    "version" : 1
    "timestamp" : 1672531201
}
```

Die Schatteneigenschaften werden mit den folgenden Informationen aktualisiert:
+  `<packageName>`: Der Name des installierten Softwarepakets, das mit dem [PackageName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html#API_CreatePackage_RequestSyntax)-Parameter aktualisiert wird. 
+  `version`: Der Name der installierten Paketversion, die mit dem [VersionName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax)-Parameter aktualisiert wird. 
+  `attributes`: Optionale Metadaten, die vom Gerät gespeichert und durch Flottenindizierung indexiert werden. Auf diese Weise können Kunden ihre Indizes auf der Grundlage der gespeicherten Daten abfragen. 
+ `version`: Die Versionsnummer des Schattens. Sie wird jedes Mal, wenn der Schatten aktualisiert wird, automatisch erhöht und beginnt bei `1`. 
+ `timestamp`: Gibt an, wann der Schatten zuletzt aktualisiert wurde, und wird in [Unix-Zeit](https://en.wikipedia.org/wiki/Unix_time) aufgezeichnet.

Weitere Informationen zum Format und Verhalten eines benannten Schattens finden Sie unter [AWS-IoT-Device-Shadow-Service Reihenfolge der Nachrichten](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html#message-ordering). 

## Löschen eines Softwarepakets und seiner Paketversionen
<a name="deleting-packages-and-versions"></a>

Führen Sie vor dem Löschen eines Softwarepakets die folgenen Schritte aus:
+ Vergewissern Sie sich, dass das Paket und seine Versionen nicht aktiv bereitgestellt werden. 
+ Löschen Sie zuerst alle zugehörigen Versionen. Wenn eine der Versionen als **Standardversion** gekennzeichnet ist, müssen Sie die benannte Standardversion aus dem Paket entfernen. Da die Angabe einer Standardversion optional ist, besteht kein Konflikt darin, sie zu entfernen. Um die Standardversion aus dem Softwarepaket zu entfernen, bearbeiten Sie das Paket über die Konsole oder verwenden Sie den [ UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API-Vorgang.

Solange es keine benannte Standardpaketversion gibt, können Sie die Konsole verwenden, um ein Softwarepaket zu löschen. Alle zugehörigen Paketversionen werden ebenfalls gelöscht. Wenn Sie einen API-Aufruf zum Löschen von Softwarepaketen verwenden, müssen Sie zuerst die Paketversionen und dann das Softwarepaket löschen. 

# Vorbereitung der Sicherheit
<a name="preparing-security"></a>

In diesem Abschnitt werden die wichtigsten Sicherheitsanforderungen für den AWS IoT Device Management Softwarepaketkatalog beschrieben.

## Ressourcenbasierte Authentifizierung
<a name="resource-based-authorization"></a>

Der Softwarepaket-Katalog verwendet ressourcenbasierte Autorisierung, um zusätzliche Sicherheit bei der Aktualisierung von Software auf Ihrer Flotte zu bieten. Das bedeutet, dass Sie eine AWS Identity and Access Management (IAM-) Richtlinie erstellen müssen, die Rechte zur Ausführung von`create`,`read`, `update``delete`, und `list` Aktionen für Softwarepakete und Paketversionen gewährt, und in diesem `Resources` Abschnitt auf die spezifischen Softwarepakete und Paketversionen verweisen müssen, die Sie bereitstellen möchten. Sie benötigen diese Rechte auch, damit Sie den [reservierten benannten Schatten](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow) aktualisieren können. Sie verweisen auf die Softwarepakete und Paketversionen, indem Sie einen Amazon-Ressourcennamen (ARN) für jede Entität angeben.

**Anmerkung**  
Wenn Sie beabsichtigen, mit der Richtlinie Rechte für API-Aufrufe von Paketversionen (wie [CreatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html), [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html), [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)) zu gewähren, müssen Sie *sowohl* das Softwarepaket als auch die Paketversion ARNs in die Richtlinie aufnehmen. Wenn Sie beabsichtigen, dass die Richtlinie Rechte für Softwarepaket-API-Aufrufe (wie [CreatePackage[UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html), und [DeletePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackage.html)) gewährt, müssen Sie nur den Softwarepaket-ARN in die Richtlinie aufnehmen.

Strukturieren Sie das Softwarepaket und die Paketversion ARNs wie folgt:
+ Softwarepaket: `arn:aws:iot:<region>:<accountID>:package/<packageName>/package` 
+ Paketversion: `arn:aws:iot:<region>:<accountID>:package/<packageName>/version/<versionName>` 

**Anmerkung**  
Es gibt weitere verwandte Rechte, die Sie möglicherweise in diese Richtlinie aufnehmen. Sie könnten beispielsweise einen ARN für `job`, `thinggroup`, und `jobtemplate` angeben. Weitere Informationen und eine vollständige Liste der Richtlinienoptionen finden Sie unter [Schützen von Benutzern und Geräten mit AWS IoT Aufträgen](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs-security.html).

Wenn Sie beispielsweise über ein Softwarepaket und eine Paketversion verfügen, die wie folgt benannt sind:
+ AWS IoT Sache: `myThing`
+ Paketname: `samplePackage`
+ Version `1.0.0`

Die Richtlinie könnte wie das folgende Beispiel aussehen:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:createPackage",
                "iot:createPackageVersion",
                "iot:updatePackage",
                "iot:updatePackageVersion"
            ],
            "Resource": [
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage",
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/1.0.0"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": "arn:aws:iot:us-east-1:111122223333:thing/myThing/$package"
        }
    ]
}
```

## AWS IoT Berufsrechte für die Bereitstellung von Paketversionen
<a name="job-rights-deploy-versions"></a>

Aus Sicherheitsgründen ist es wichtig, dass Sie Rechte zur Bereitstellung von Paketen und Paketversionen gewähren und die spezifischen Pakete und Paketversionen benennen, die sie bereitstellen dürfen. Zu diesem Zweck erstellen Sie eine IAM-Rolle und eine IAM-Richtlinie, die die Erlaubnis zum Bereitstellen von Aufträgen mit Paketversionen erteilt. Die Richtlinie muss die Zielpaketversionen als Ressource angeben.

**IAM-Richtlinie**

Die IAM-Richtlinie gewährt das Recht, einen Job zu erstellen, der das Paket und die Version enthält, die im `Resource` Abschnitt genannt werden.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:CreateJob",
                "iot:CreateJobTemplate"
            ],
            "Resource":[
                "arn:aws:iot:*:111122223333:job/<jobId>",
                "arn:aws:iot:*:111122223333:thing/<thingName>/$package",
                "arn:aws:iot:*:111122223333:thinggroup/<thingGroupName>",
                "arn:aws:iot:*:111122223333:jobtemplate/<jobTemplateName>",
                "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
            ]
        }
    ]
}
```

**Anmerkung**  
Wenn Sie einen Auftrag bereitstellen möchten, der ein Softwarepaket und eine Paketversion deinstalliert, müssen Sie einen ARN autorisieren, in dem sich die Paketversion `$null` befindet, z. B. im Folgenden:

```
arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null
```

## AWS IoT Jobrechte zur Aktualisierung des reservierten benannten Schattens
<a name="job-rights-update-reserved-named-shadow"></a>

Damit Aufträge den reservierten Namensschatten des Objekts aktualisieren können, wenn der Auftrag erfolgreich abgeschlossen wurde, müssen Sie eine IAM-Rolle und eine Richtlinie erstellen. Dafür gibt es zwei Möglichkeiten in der AWS IoT Konsole. Die erste Möglichkeit besteht darin, ein Softwarepaket in der Konsole zu erstellen. Wenn das Dialogfeld **Abhängigkeiten für die Paketverwaltung aktivieren** angezeigt wird, können Sie wählen, ob Sie eine vorhandene Rolle verwenden oder eine neue Rolle erstellen möchten. Oder wählen Sie in der AWS IoT Konsole **Einstellungen**, **Indizierung verwalten** und dann **Indizierung für Gerätepakete und Versionen verwalten** aus. 

**Anmerkung**  
Wenn Sie sich dafür entscheiden, dass der AWS IoT Job Service den reservierten Named Shadow aktualisiert, wenn ein Job erfolgreich abgeschlossen wurde, wird der API-Aufruf auf Ihre **Device Shadow- und Registrierungsvorgänge** angerechnet und kann Kosten verursachen. Weitere Informationen finden Sie unter [AWS IoT Core Preise](https://aws.amazon.com/iot-core/pricing/).

Wenn Sie die Option **Rolle erstellen** verwenden, beginnt der Name der generierten Rolle mit `aws-iot-role-update-shadows` und enthält die folgenden Richtlinien:

**Einrichten einer Rolle**

**Berechtigungen**  
Die Berechtigungsrichtlinie gewährt die Rechte, den Objektschatten abzufragen und zu aktualisieren. Der `$package` Parameter im Ressourcen-ARN zielt auf den reservierten benannten Schatten ab.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:DescribeEndpoint",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": [
            "arn:aws:iot:us-east-1:111122223333:thing/<thingName>/$package"
            ]
        }
    ]
}
```

**Vertrauensstellung**  
Zusätzlich zur Berechtigungsrichtlinie erfordert die Rolle eine Vertrauensbeziehung mit AWS IoT Core , sodass die Entität die Rolle übernehmen und den reservierten benannten Schatten aktualisieren kann.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "iot.amazonaws.com"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

**Eine Benutzerrichtlinie einrichten**

**iam: Erlaubnis PassRole **  
Schließlich müssen Sie die Erlaubnis haben, die Rolle zu übergeben, AWS IoT Core wenn Sie den [ UpdatePackageConfiguration](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageConfiguration.html)API-Vorgang aufrufen.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole",
                "iot:UpdatePackageConfiguration"
            ],
            "Resource": "arn:aws:iam::111122223333:role/<roleName>"
        }
    ]
}
```

## AWS IoT Jobs, Berechtigungen zum Herunterladen von Amazon S3
<a name="job-rights-download-job-document"></a>

Das Auftragsdokument wird in Amazon S3 gespeichert. Sie beziehen sich beim Versand über AWS IoT Jobs auf diese Datei. Sie müssen AWS IoT Jobs die Rechte zum Herunterladen der Datei (`s3:GetObject`) gewähren. Sie müssen auch eine Vertrauensbeziehung zwischen Amazon S3 und AWS IoT Jobs einrichten. Anweisungen zum Erstellen dieser Richtlinien finden Sie unter [Presigned URLs](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-presigned-URLs) in [Managing Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html).

## Berechtigungen zur Aktualisierung der Softwareliste für eine Paketversion
<a name="job-rights-update-sbom"></a>

Um die Softwareliste für eine Paketversion im `Deprecated` Lebenszyklusstatus `Draft``Published`, oder zu aktualisieren, benötigen Sie eine AWS Identity and Access Management Rolle und Richtlinien für das Auffinden der neuen Softwareliste in Amazon S3 und das Aktualisieren der Paketversion in AWS IoT Core.

Zunächst platzieren Sie die aktualisierte Softwareliste in Ihrem versionierten Amazon S3 S3-Bucket und rufen den `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` API-Vorgang mit dem enthaltenen `sboms` Parameter auf. Als Nächstes übernimmt Ihr autorisierter Principal die von Ihnen erstellte IAM-Rolle, sucht die aktualisierte Softwareliste in Amazon S3 und aktualisiert die Paketversion im AWS IoT Core Softwarepaketkatalog.

Die folgenden Richtlinien sind erforderlich, um dieses Update durchzuführen:

**Richtlinien**
+ **Vertrauensrichtlinie**, die eine Vertrauensbeziehung mit dem autorisierten Principal herstellt, der die IAM-Rolle übernimmt, sodass dieser die aktualisierte Softwareliste aus Ihrem versionierten Bucket in Amazon S3 finden und die Paketversion aktualisieren kann. AWS IoT Core
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "s3.amazonaws.com"
            },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "iot.amazonaws.com"
            },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    ```
+ **Berechtigungsrichtlinie**: Richtlinie für den Zugriff auf den Amazon S3 S3-versionierten Bucket, in dem die Softwarelisten für eine Paketversion gespeichert sind, und für die Aktualisierung der Paketversion. AWS IoT Core
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::awsexamplebucket1"
                ]
            }
        ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iot:UpdatePackageVersion"
                ],
                "Resource": [
                    "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
                ]
            }
        ]
    }
    ```
+ **Rollenberechtigungen weitergeben**: Richtlinie, die die Erlaubnis erteilt, die IAM-Rolle an Amazon S3 weiterzugeben und AWS IoT Core wann Sie den `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` API-Vorgang aufrufen.
  +   
****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:PassRole",
            "s3:GetObject"
          ],
          "Resource": [
            "arn:aws:s3:::awsexamplebucket1"
          ]
        }
      ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iam:PassRole",
                    "iot:UpdatePackageVersion"
                ],
                "Resource": "arn:aws:iam::111122223333:role/<roleName>"
            }
        ]
    }
    ```

**Anmerkung**  
Sie können die Softwareliste für eine Paketversion, die in den `Deleted` Lebenszyklusstatus übergegangen ist, nicht aktualisieren.

Weitere Informationen zum Erstellen einer IAM-Rolle für einen AWS Dienst finden Sie unter [Erstellen einer Rolle zum Delegieren von Berechtigungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) für einen Dienst. AWS 

Weitere Informationen zum Erstellen eines Amazon S3 S3-Buckets und zum Hochladen von Objekten in diesen Bucket finden Sie unter [Bucket erstellen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) und Objekte [hochladen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html).

# Vorbereitung der Flottenindizierung
<a name="preparing-fleet-indexing"></a>

Mit der AWS IoT Flottenindizierung können Sie Daten suchen und aggregieren, indem Sie den reservierten Namen shadow () verwenden. `$package` Sie können AWS IoT Dinge auch gruppieren, indem Sie die [Reservierter benannter Schatten](preparing-to-use-software-package-catalog.md#reserved-named-shadow) und [dynamische](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html) Dinggruppen abfragen. Sie können beispielsweise Informationen darüber finden, welche AWS IoT Dinge eine bestimmte Paketversion verwenden, für die keine bestimmte Paketversion installiert ist oder für die keine Paketversion installiert ist. Sie können weitere Erkenntnisse gewinnen, indem Sie Attribute kombinieren. Zum Beispiel die Identifizierung von Objekten, die eine bestimmte Version und einen bestimmten Objekttyp haben (wie Version 1.0.0 und den Objekttyp pump\$1sensor). Weitere Informationen finden Sie unter [Flottenindizierung](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html).

## Den `$package` Schatten als Datenquelle festlegen
<a name="shadow-as-data-source"></a>

Um die Flottenindizierung mit dem Softwarepaket-Katalog zu verwenden, müssen Sie die Flottenindizierung aktivieren, den benannten Schatten als Datenquelle festlegen und `$package` als benannten Schattenfilter definieren. Wenn Sie die Flottenindizierung nicht aktiviert haben, können Sie sie im Rahmen dieses Vorgangs aktivieren. Öffnen Sie von [AWS IoT Core](https://console.aws.amazon.com/iot/home) in der Konsole **Einstellungen**, wählen Sie **Indizierung verwalten**, dann **Benannte Schatten hinzufügen**, **Gerätesoftwarepakete und -versionen hinzufügen** und **Aktualisieren**. Weitere Informationen finden Sie unter [Verwalten der Objektindizierung](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#thing-index). 

Alternativ können Sie die Flottenindizierung aktivieren, wenn Sie Ihr erstes Paket erstellen. Wenn das Dialogfeld **Abhängigkeiten für die Paketverwaltung aktivieren** angezeigt wird, wählen Sie die Option, Gerätesoftwarepakete und -versionen als Datenquellen zur Flottenindizierung hinzuzufügen. Durch Auswahl dieser Option aktivieren Sie auch die Flottenindizierung.

**Anmerkung**  
Die Aktivierung der Flottenindizierung für den Softwarepaket-Katalog verursacht Standard-Servicekosten. Weitere Informationen finden Sie unter [AWS IoT Device Management-Preisgestaltung](https://aws.amazon.com/iot-device-management/pricing/).

## In der Konsole dargestellte Metriken
<a name="metrics-displayed-in-console"></a>

![\[Bild mit Standardmetriken\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/package-catalog-discovery-metrics.png)


Auf der Detailseite des AWS IoT Konsolen-Softwarepakets werden im **Discovery-Bereich** Standardmetriken angezeigt, die über den `$package` Shadow aufgenommen wurden.
+ Das Diagramm zur **Verteilung der aktuellen Version** zeigt die Anzahl der Geräte und den Prozentsatz aller Geräte, die diesem Softwarepaket zugeordnet sind, für die 10 neuesten Paketversionen, die einer AWS IoT Sache zugeordnet sind. **Hinweis:** Wenn das Softwarepaket mehr Paketversionen als die in der Tabelle angegebenen enthält, finden Sie diese unter **Andere** gruppiert.
+ Das **Verlaufsdiagramm** zeigt die Anzahl der Geräte, die den ausgewählten Paketversionen über einen bestimmten Zeitraum zugeordnet sind. Das Diagramm ist zunächst leer, bis Sie bis zu 5 Paketversionen auswählen und den Datumsbereich und das Zeitintervall definieren. Um die Parameter des Diagramms auszuwählen, wählen Sie **Einstellungen**. Die im **Verlaufsdiagramm** angezeigten Daten unterscheiden sich möglicherweise vom **Verteilungsdiagramm der aktuellen Version**. Dies liegt an der unterschiedlichen Anzahl der angezeigten Paketversionen und auch daran, dass Sie im **Verlaufsdiagramm** auswählen können, welche Paketversionen analysiert werden sollen. **Hinweis:** Wenn Sie eine Paketversion zur Visualisierung auswählen, wird diese auf die maximale Anzahl von Flottenkennzahlen angerechnet. Weitere Informationen finden Sie unter [Flottenindizierungsgrenzen und -quoten](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits).

Eine weitere Methode, um einen Einblick in die Erfassung der Paketversionsverteilung zu erhalten, finden Sie unter [Erfassung der Paketversionsverteilung durch `getBucketsAggregation`](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html#package-version-distribution).

## Abfragemuster
<a name="query-patterns"></a>

Die Flottenindizierung mit dem Softwarepaketkatalog verwendet die meisten unterstützten Standardfunktionen (wie Begriffe, Ausdrücke und Suchfelder). Vergleichsoperatoren (z. B. kleiner als `<` und größer als`>`) und `range` Abfragen sind jedoch für den reservierten benannten `version` Shadow-Schlüssel (`$package`) nicht verfügbar. Diese Abfragen sind für den `attributes` Schlüssel verfügbar. Weitere Informationen finden Sie unter [Abfragesyntax](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html).

### Beispiel für Daten
<a name="query-patterns-example-data"></a>

**Hinweis:** Informationen zum reservierten benannten Schatten und seiner Struktur finden Sie unter [Reservierter benannter Schatten](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow).

In diesem Beispiel wird ein erstes Gerät `AnyThing` benannt und es sind die folgenden Pakete installiert: 
+ Softwarepaket: `SamplePackage`

  Paketversion: `1.0.0`

  Paket-ID: `1111`

Der Schatten sieht wie folgt aus:

```
{
    "state": {
        "reported": {
            "SamplePackage": {
                "version": "1.0.0",
                "attributes": {
                    "s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
                    "packageID": "1111"
                    }
            }
        }
    }
}
```

Ein zweites Gerät wird `AnotherThing` benannt und hat das folgende Paket installiert: 
+ Softwarepaket: `SamplePackage`

  Paketversion: `1.0.0`

  Paket-ID: `1111`
+ Softwarepaket: `OtherPackage`

  Paketversion: `1.2.5`

  Paket-ID: `2222`

Der Schatten sieht wie folgt aus:

```
{
    "state": {
        "reported": {
            "SamplePackage": {
                "version": "1.0.0",
                "attributes": {
                    "s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
                    "packageID": "1111"
                }
            },
            "OtherPackage": {
                "version": "1.2.5",
                "attributes": {
                    "s3UrlForOtherPackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile2",
                    "packageID": "2222"
                    }
            },
        }
    }
}
```

### Beispielabfragen
<a name="sample-queries"></a>

In der folgenden Tabelle sind Beispielabfragen aufgeführt, die auf den Geräteschatten für `AnyThing` und `AnotherThing` basieren. Weitere Informationen finden Sie unter [Beispiel-Objektabfragen](https://docs.aws.amazon.com/iot/latest/developerguide/example-queries.html). 


**Aktuelle Version von AWS IoT Device Tester for freeRTOS**  

| **Angeforderte Informationen** | **Abfrage** | **Ergebnis** | 
| --- | --- | --- | 
|  Objekte, auf denen eine bestimmte Paketversion installiert ist  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0`  |  `AnyThing`, `OtherThing`  | 
|  Objekte, auf denen keine bestimmte Paketversion installiert ist  |  `NOT shadow.name.$package.reported.OtherPackage.version:1.2.5`  |  `AnyThing`  | 
|  Jedes Gerät, das eine Paketversion verwendet, deren Paket-ID größer als 1500 ist  |  `shadow.name.$package.reported.*.attributes.packageID>1500"`  |  `OtherThing`  | 
|  Objekte, auf denen ein bestimmtes Paket installiert ist und auf denen mehr als ein Paket installiert ist  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0 AND shadow.name.$package.reported.totalCount:2`  |  `OtherThing`  | 

## Sammeln der Paketversion und Verteilung über `getBucketsAggregation`
<a name="package-version-distribution"></a>

Zusätzlich zum **Discovery-Bereich** in der AWS IoT Konsole können Sie mithilfe der [https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html)API-Operation auch Informationen zur Verteilung der Paketversion abrufen. Um die Distributionsinformationen der Paketversion zu erhalten, gehen Sie wie folgt vor:
+ Definieren Sie in der Flottenindizierung für jedes Softwarepaket ein benutzerdefiniertes Feld. **Hinweis:** Die Erstellung benutzerdefinierter Felder wird auf die [AWS IoT Service Quotas für die Flottenindexierung](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits) angerechnet. 
+ Formatieren Sie das benutzerdefinierte Feld wie folgt:

  `shadow.name.$package.reported.<packageName>.version`

Weitere Informationen finden Sie im Abschnitt [Benutzerdefinierte Felder](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#custom-field) in der AWS IoT Flottenindizierung.

# Jobs vorbereiten AWS IoT
<a name="preparing-jobs-for-service-package-catalog"></a>

AWS IoT Device Management Der Softwarepaketkatalog erweitert AWS IoT Jobs um Ersetzungsparameter und die Integration mit AWS IoT Flottenindizierung, dynamischen Dinggruppen und dem reservierten Named AWS IoT Shadow des Dings.

**Anmerkung**  
 Um alle Funktionen nutzen zu können, die der Softwarepaketkatalog bietet, müssen Sie die folgenden AWS Identity and Access Management (IAM-) Rollen und Richtlinien erstellen: [AWS IoT Job-Rechte zum Bereitstellen von Paketversionen](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-deploy-versions) und [AWS IoT Job-Rechte zum Aktualisieren des reservierten Named Shadow](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-update-reserved-named-shadow). Weitere Informationen finden Sie unter [Vorbereitung der Sicherheit](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html)

## Ersetzungsparameter für Jobs AWS IoT
<a name="substitution-parameters"></a>

Sie können Substitutionsparameter als Platzhalter in Ihrem AWS IoT Jobdokument verwenden. Wenn der Auftragsservice auf einen Substitutionsparameter stößt, verweist er den Auftrag auf das Attribut einer benannten Softwareversion für den Parameterwert. Sie können diesen Prozess verwenden, um ein einzelnes Auftragsdokument zu erstellen und die Metadaten über allgemeine Attribute an den Auftrag zu übergeben. Sie könnten z. B. eine Amazon Simple Storage Service (Amazon S3) -URL, einen Amazon-Ressourcennamen (ARN) eines Softwarepakets (ARN) oder eine Signatur über Paketversionsattribute an das Auftragsdokument übergeben. 

Die Substitutionsparameter sollten im Jobdokument wie folgt formatiert sein:
+ **Name und Paketversion des Softwarepakets**
  + Die leere Zeichenfolge zwischen `package::version` steht für den Ersatzparameter für den Softwarepaketnamen. Die leere Zeichenfolge zwischen `version::attribute` steht für den Ersetzungsparameter der Softwarepaketversion. Das folgende Beispiel zeigt, wie Sie die Ersetzungsparameter für den Paketnamen und die Paketversion in einem Jobdokument verwenden:. `${aws:iot:package::version::attributes:<attributekey>}`
  + Das Jobdokument füllt diese Ersetzungsparameter automatisch mit dem *Versions-ARN* aus den Paketversionsdetails aus. Wenn Sie einen Job oder eine Jobvorlage für eine Einzelpaket-Bereitstellung mithilfe eines API- oder CLI-Befehls erstellen, wird der *Versions-ARN* für eine Paketversion durch den `destinationPackageVersions` Parameter in `CreateJob` und `DescribeJob` dargestellt.
+ **Alle Attribute für eine Softwarepaketversion**
  + Das folgende Beispiel zeigt, wie Sie den Ersatzparameter „Alle Attribute“ einer Softwarepaketversion in einem Jobdokument verwenden: `${aws:iot:package:<packageName>:version:<versionName>:attributes}`

**Anmerkung**  
Der Paketname, die Paketversion und alle Ersetzungsparameter für Attribute können zusammen verwendet werden. Das folgende Beispiel zeigt, wie alle drei Substitutionsparameter in einem Jobdokument verwendet werden: `${aws:iot:package::version::attributes}`

Im folgenden Beispiel gibt es ein Softwarepaket mit dem Namen `samplePackage` und dem Namen einer Paketversion mit `2.1.5` den folgenden Attributen:
+ Name: `s3URL`, Wert: `https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile`
  + Dieses Attribut identifiziert den Speicherort der Codedatei, die in Amazon S3 gespeichert ist.
+ Name: `signature`, Wert: `aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj`
  + Dieses Attribut stellt einen Wert für die Codesignatur bereit, den das Gerät als Sicherheitsmaßnahme benötigt. Weitere Informationen finden Sie unter [Codesignatur für Aufträge](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-code-signing). **Hinweis:** Dieses Attribut ist ein Beispiel und nicht als Teil des Softwarepaket-Katalogs oder von Aufträgen erforderlich.

Für `s3URL` wird der Auftragsdokumentparameter wie folgt geschrieben:

```
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}"
}
```

Für `signature` wird der Auftragsdokumentparameter wie folgt geschrieben:

```
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}"
}
```

Das vollständige Auftragsdokument ist wie folgt geschrieben:

```
{
  ...
  "Steps": {
    "uninstall": ["samplePackage"],
    "download": [ 
      { 
        "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}"
      },
    ],
    "signature": [
      "samplePackage" : "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}"
    ]
  }
}
```

Nachdem die Ersetzung vorgenommen wurde, wird das folgende Auftragsdokument auf den Geräten bereitgestellt:

```
{
  ...
  "Steps": {
    "uninstall": ["samplePackage"],
    "download": [ 
      { 
        "samplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile"
      },
    ],
    "signature": [
      "samplePackage" : "aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj"
    ]
  }
}
```

**Ersetzungsparameter (Vorher-Nachher-Ansicht)**

Ersetzungsparameter vereinfachen die Erstellung eines Auftragsdokuments mithilfe verschiedener Flags, z. B. `$default` für die Standardpaketversion. Dadurch entfällt die Notwendigkeit, spezifische Paketversionsmetadaten für jede Auftragsbereitstellung manuell einzugeben, da diese Flags automatisch mit den referenzierten Metadaten in der jeweiligen Paketversion gefüllt werden. Weitere Informationen zu Paketversionsattributen, z. B. `$default` zur Standard-Paketversion, finden Sie unter. [Vorbereitung des Auftragsdokuments und der Paketversion für die Bereitstellung](#preparing-to-deploy)

Klicken Sie im Fenster des AWS-Managementkonsole*Editors für die Installationsanweisungsdatei während der Bereitstellung* einer Paketversion auf die Schaltfläche *Substitution in der Vorschau* anzeigen, um das Auftragsdokument mit und ohne die Ersetzungsparameter anzuzeigen.

Mithilfe des Parameters „before-substitution“ im Feld und können Sie sich die API-Antwort vor `DescribeJob` und `GetJobDocument` APIs nach dem Entfernen der Substitutionsparameter anzeigen lassen. Sehen Sie sich die folgenden Beispiele mit dem und an: `DescribeJob` `GetJobDocument` APIs
+ `DescribeJob`
  + Standardansicht

    ```
    {
        "jobId": "<jobId>",
        "description": "<description>",
        "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/1.0.2"]
    }
    ```
  + Ansicht „Vor der Ersetzung“

    ```
    {
        "jobId": "<jobId>",
        "description": "<description>",
        "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"]
    }
    ```
+ `GetJobDocument`
  + Standardansicht

    ```
    {
        "attributes": {
            "location": "prod-artifacts.s3.us-east-1.amazonaws.com/mqtt-core",
            "signature": "IQoJb3JpZ2luX2VjEIrwEaCXVzLWVhc3QtMSJHMEUCIAofPNPpZ9cI",
            "streamName": "mqtt-core",
            "fileId": "0"
        },
    }
    ```
  + Ansicht „Vor der Ersetzung“

    ```
    {
        "attributes": "${aws:iot:package:TestPackage:version:$default:attributes}",
    }
    ```

Weitere Informationen zu AWS IoT Jobs, zum Erstellen von Jobdokumenten und zum Bereitstellen von Jobs finden Sie unter [Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html).

## Vorbereitung des Auftragsdokuments und der Paketversion für die Bereitstellung
<a name="preparing-to-deploy"></a>

Wenn eine Paketversion erstellt wird, befindet sie sich in einem `draft` Zustand, der anzeigt, dass sie für die Bereitstellung vorbereitet wird. Um die Paketversion für die Bereitstellung vorzubereiten, müssen Sie ein Job-Dokument erstellen, das Dokument an einem Ort speichern, auf den der Job zugreifen kann (z. B. Amazon S3), und sicherstellen, dass die Paketversion die Attributwerte enthält, die das Job-Dokument verwenden soll. (Hinweis: Sie können Attribute für eine Paketversion nur aktualisieren, solange sie sich im `draft` Status befindet.) 

Wenn Sie einen AWS IoT Job oder eine Job-Vorlage für eine Einzelpaket-Bereitstellung erstellen, haben Sie die folgenden Optionen, um Ihr Job-Dokument anzupassen:

**Anweisungsdatei für die Bereitstellung () `recipe`**
+ Die Bereitstellungsanweisungsdatei für eine Paketversion enthält die Bereitstellungsanweisungen, einschließlich eines Inline-Jobdokuments, für die Bereitstellung einer Paketversion auf mehreren Geräten. Die Datei ordnet einer Paketversion spezifische Bereitstellungsanweisungen zu, um eine schnelle und effiziente Auftragsbereitstellung zu ermöglichen.

  In können Sie die AWS-Managementkonsole Datei im *Vorschaufenster mit den Bereitstellungsanweisungen* auf der Registerkarte *Konfigurationen für die Versionsbereitstellung* des Workflows „Neues Paket erstellen“ erstellen. Mithilfe der Option Mit * AWS IoT empfohlener Datei beginnen* können Sie automatisch eine Anweisungsdatei aus Ihren Paketversionsattributen generieren oder Ihr vorhandenes Auftragsdokument verwenden, das in einem Amazon S3 S3-Bucket gespeichert ist, indem *Sie Ihre eigene Bereitstellungsanweisungsdatei verwenden*. AWS IoT 
**Anmerkung**  
Wenn Sie Ihr eigenes Auftragsdokument verwenden, können Sie es direkt im *Vorschaufenster mit den Bereitstellungsanweisungen* aktualisieren. Ihr ursprüngliches Auftragsdokument, das in Ihrem Amazon S3 S3-Bucket gespeichert ist, wird dadurch jedoch nicht automatisch aktualisiert.

  Wenn Sie den AWS CLI oder verwenden, `recipe` steht ein API-Befehl wie`CreatePackageVersion`, `GetPackageVersion``UpdatePackageVersion`, oder für die Bereitstellungsanweisungsdatei, die ein Inline-Jobdokument enthält.

  Weitere Informationen darüber, was ein Jobdokument ist, finden Sie unter[Grundkonzepte](key-concepts-jobs.md#basic-concepts-jobs).

  Im folgenden Beispiel finden Sie die Bereitstellungsanweisungsdatei, dargestellt durch`recipe`:

  ```
  {
      "packageName": "sample-package-name",
      "versionName": "sample-package-version",
      ...
      "recipe": "{...}"
  }
  ```
**Anmerkung**  
Die Bereitstellungsanweisungsdatei, wie sie durch dargestellt wird, `recipe` kann aktualisiert werden, wenn sich eine Paketversion im `published` Statusstatus befindet, da sie von den Metadaten der Paketversion getrennt ist. Während der Arbeitsbereitstellung wird sie unveränderlich.

**`Artifact`Versionsattribut**
+ Mithilfe des Versionsattributs `artifact` in Ihrer Softwarepaketversion können Sie den Amazon S3 S3-Speicherort für Ihre Paketversionsartefakte hinzufügen. Wenn eine Auftragsbereitstellung für Ihre Paketversion mithilfe von AWS IoT Jobs ausgelöst wird, wird der vorsignierte URL-Platzhalter ` ${aws:iot:package:<packageName>:version:<versionName>:artifact-location:s3-presigned-url}` im Jobdokument mithilfe des Amazon S3 S3-Buckets, des Bucket-Schlüssels und der Version der im Amazon S3 S3-Bucket gespeicherten Datei aktualisiert. Der Amazon-S3-Bucket, in dem die Paketversionsartefakte gespeichert sind, muss sich in derselben Region befinden, in der die Paketversion erstellt wurde.
**Anmerkung**  
Um mehrere Objektversionen derselben Datei in Ihrem Amazon S3 S3-Bucket zu speichern, müssen Sie die Versionierung in Ihrem Bucket aktivieren. Weitere Informationen finden Sie unter [Versionierung für Buckets aktivieren](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html).

  Um auf die Paketversionsartefakte im Amazon S3 S3-Bucket zuzugreifen, wenn Sie die Operation `CreatePackageVersion` oder `UpdatePackageVersion` API verwenden, benötigen Sie die folgenden Berechtigungen:  
****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "s3:GetObjectVersion",
              "Resource": "arn:aws:s3:::bucket-name/key-name"
          }
      ]
  }
  ```

  Weitere Informationen zum Versionsattribut `artifact` in den Operationen `CreatePackageVersion` und `UpdatePackageVersion` API finden Sie unter [CreatePackageVersion](https://amazonaws.com/iot/latest/apireference/API_CreatePackageVersion.html)und [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html).

  Sehen Sie sich das folgende Beispiel an, das das Versionsattribut zeigt, das die Artefaktposition in Amazon S3 `artifact` unterstützt, wenn eine neue Paketversion erstellt wird:

  ```
  {
      "packageName": "sample package name",
      "versionName": "1.0",
      "artifact": {
          "s3Location": {
              "bucket": "firmware",
              "key": "image.bin",
              "version": "12345"
          }
      }
  }
  ```
**Anmerkung**  
Wenn eine Paketversion von einem Statusstatus in einen `draft` Statusstatus aktualisiert wird, werden die Paketversionsattribute und der Speicherort der Artefakte unveränderlich. `published` Um diese Informationen zu aktualisieren, müssen Sie eine neue Paketversion erstellen und diese Aktualisierungen durchführen, während Sie sich im Statusstatus befinden. `draft`

**Version Package**
+ In den verfügbaren Versionen des Softwarepakets kann eine Standardversion des Softwarepakets angegeben werden, die eine sichere und stabile Paketversion bietet. Dies dient als Basisversion des Softwarepakets, wenn Sie die Standardpaketversion mithilfe AWS IoT von Jobs für Ihre Geräteflotte bereitstellen. Beim Erstellen eines Auftrags zur Bereitstellung der `$default` Paketversion für ein Softwarepaket müssen die Paketversion im Auftragsdokument und in der neuen Auftragsbereitstellung mit übereinstimmen`$default`. Die Paketversion in der Jobbereitstellung wird durch API `destinationPackageVersions` - und CLI-Befehle und `VersionARN` in der dargestellt AWS-Managementkonsole. Die Paketversion im Jobdokument wird durch den folgenden Platzhalter für das Jobdokument dargestellt (siehe unten):

  ```
  arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$default
  ```

  Um einen Job oder eine Jobvorlage mit der Standard-Paketversion zu erstellen, verwenden Sie das `$default` Flag im `CreateJobTemplate` API-Befehl `CreateJob` oder wie unten dargestellt:

  ```
  "$ aws iot create-job \
      --destination-package-versions "arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"
      --document file://jobdoc.json
  ```
**Anmerkung**  
Das `$default` Paketversionsattribut, das auf die Standardversion verweist, ist ein optionales Attribut, das nur erforderlich ist, wenn über AWS IoT Jobs auf die Standardpaketversion für eine Auftragsbereitstellung verwiesen wird.

Wenn Sie mit der Paketversion zufrieden sind, veröffentlichen Sie sie entweder über die Seite mit den Softwarepaketdetails in der AWS IoT Konsole oder indem Sie den [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API-Vorgang ausführen. Sie können dann bei der Erstellung des Jobs entweder über die AWS IoT Konsole oder durch Ausführen des [CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html)API-Vorgangs auf die Paketversion verweisen.

## Benennen der Pakete und Versionen bei der Bereitstellung
<a name="naming-package-versions"></a>

Um eine Softwarepaketversion auf einem Gerät bereitzustellen, stellen Sie sicher, dass das Softwarepaket und die Paketversion, auf die im Jobdokument verwiesen wird, mit dem Softwarepaket und der Paketversion übereinstimmen, die im `destinationPackageVersions` Parameter des `CreateJob` API-Vorgangs angegeben sind. Wenn sie nicht übereinstimmen, erhalten Sie eine Fehlermeldung, in der Sie aufgefordert werden, beide Referenzen zuzuordnen. Weitere Informationen zu Fehlermeldungen im Softwarepaketkatalog finden Sie unter[Allgemeine Fehlermeldungen zur Fehlerbehebung](software-package-catalog-troubleshooting.md#spc-general-troubleshooting).

Zusätzlich zu den Softwarepaketen und Paketversionen, auf die im Job-Dokument verwiesen wird, können Sie zusätzliche Softwarepakete und Paketversionen in den `destinationPackageVersions` Parameter des `CreateJob` API-Vorgangs aufnehmen, auf die im Job-Dokument nicht verwiesen wird. Stellen Sie sicher, dass die erforderlichen Installationsinformationen im Jobdokument enthalten sind, damit die Geräte die zusätzlichen Softwarepaketversionen ordnungsgemäß installieren können. Weitere Informationen zur `CreateJob ` API-Operation finden Sie unter [CreateJob](https://amazonaws.com/iot/latest/apireference/API_CreateJob.html).

## Gezielte Jobsuche mithilfe AWS IoT dynamischer Dinggruppen
<a name="jobs-and-dynamic-groups"></a>

Der Softwarepaketkatalog arbeitet mit [Flottenindizierung](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html), [AWS IoT Aufträgen](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) und [AWS IoT dynamischen Objektgruppen](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html), um Geräte innerhalb Ihrer Flotte zu filtern und gezielt auszuwählen, um auszuwählen, welche Paketversion auf Ihren Geräten bereitgestellt werden soll. Sie können eine Flottenindizierungsabfrage auf der Grundlage der aktuellen Paketinformationen Ihres Geräts ausführen und diese Dinge gezielt für einen AWS IoT Job auswählen. Sie können auch Softwareupdates veröffentlichen, jedoch nur für geeignete Zielgeräte. Sie können beispielsweise angeben, dass Sie eine Konfiguration nur für die Geräte bereitstellen möchten, auf denen derzeit die `iot-device-client 1.5.09` ausgeführt wird. Weitere Informationen finden Sie unter [Erstellen einer dynamischen Objektgruppe](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group).

## Reservierte benannte Schatten- und Paketversionen
<a name="reserved-shadow-and-package-versions"></a>

Falls konfiguriert, können AWS IoT Jobs den reservierten Namen shadow (`$package`) einer Sache aktualisieren, wenn der Job erfolgreich abgeschlossen wurde. In diesem Fall müssen Sie dem reservierten benannten Schatten eines Objekts keine Paketversion manuell zuordnen. 

In den folgenden Situationen können Sie sich dafür entscheiden, eine Paketversion manuell dem reservierten benannten Schatten des Objekts zuzuordnen oder zu aktualisieren:
+ Sie registrieren eine Sache unter, AWS IoT Core ohne die installierte Paketversion zuzuordnen.
+ AWS IoT Jobs ist nicht so konfiguriert, dass es den reservierten Namen Shadow des Dings aktualisiert.
+ Sie verwenden ein internes Verfahren, um Paketversionen an Ihre Flotte zu versenden, und dieser Prozess wird nicht aktualisiert, AWS IoT Core wenn er abgeschlossen ist.

**Anmerkung**  
Wir empfehlen Ihnen, AWS IoT Jobs zu verwenden, um die Paketversion im reservierten Shadow (`$package`) zu aktualisieren. Das Aktualisieren des Versionsparameters im `$package` Shadow durch andere Prozesse (z. B. manuelle oder programmatische API-Aufrufe), wenn AWS IoT Jobs ebenfalls für die Aktualisierung des Shadows konfiguriert ist, kann zu Inkonsistenzen zwischen der tatsächlichen Version auf dem Gerät und der Version führen, die an den reservierten benannten Shadow gemeldet wurde.

Sie können eine Paketversion zum reservierten Schatten (`$package`) eines Objekts über die Konsole oder den [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html)-API-Vorgang hinzufügen oder aktualisieren. Weitere Informationen finden Sie unter [Eine Paketversion einer Sache zuordnen](https://docs.aws.amazon.com/iot/latest/developerguide/associating-package-version.html). AWS IoT 

**Anmerkung**  
Durch das Zuordnen einer Paketversion zu einem AWS IoT Ding wird die Gerätesoftware nicht direkt aktualisiert. Sie müssen die Paketversion auf dem Gerät bereitstellen, um die Gerätesoftware zu aktualisieren.

## Deinstallation eines Softwarepakets und seiner Paketversion
<a name="uninstalling-packages-and-versions"></a>

`$null`ist ein reservierter Platzhalter, der den AWS IoT Jobs-Dienst auffordert, das vorhandene Softwarepaket und die Paketversion aus dem reservierten benannten Schatten des Geräts zu entfernen. `$package` Weitere Informationen finden Sie unter [Reservierter benannter Schatten](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow).

Um diese Funktion zu verwenden, ersetzen Sie den Versionsnamen am Ende des [destinationPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html#iot-CreateJobTemplate-request-destinationPackageVersions)Amazon-Ressourcennamens (ARN) durch`$null`. Anschließend müssen Sie Ihren Service anweisen, die Software vom Gerät zu entfernen.

Der autorisierte ARN verwendet das folgende Format:

```
arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null
```

Zum Beispiel 

```
$ aws iot create-job \
    ... \
    --destinationPackageVersions ["arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/$null"]
```

# Erste Schritte mit dem Softwarepaket-Katalog
<a name="getting-started-with-software-package-catalog"></a>

Sie können den AWS IoT Device Management Softwarepaketkatalog mithilfe der AWS-Managementkonsole AWS IoT Core API-Operationen und AWS Command Line Interface (AWS CLI) erstellen und verwalten.

**Anmerkung**  
Die Aktivierung der AWS IoT Flottenindizierung ist eine Voraussetzung für die Verwendung des Softwarepaketkatalogs. Grundlegende Operationen wie das Erstellen einer Softwarepaketversion im AWS-Managementkonsole und das Verwenden des `CreatePackage` API-Befehls schlagen fehl, wenn die AWS IoT Flottenindizierung nicht aktiviert ist.  
Weitere Informationen zur Verwendung der AWS IoT Flottenindizierung mit dem Softwarepaketkatalog finden Sie unter[Vorbereitung der Flottenindizierung](preparing-fleet-indexing.md).

**Verwenden der Konsole**

Um den zu verwenden AWS-Managementkonsole, melden Sie sich in Ihrem AWS Konto an und navigieren Sie zu [AWS IoT Core](https://console.aws.amazon.com/iot/home). Wählen Sie im Navigationsbereich **Softwarepakete** aus. In diesem Abschnitt können Sie dann Pakete und deren Versionen erstellen und verwalten.

**Verwenden von API- oder CLI-Operationen**

Sie können die AWS IoT Core API-Operationen verwenden, um Funktionen des Softwarepaketkatalogs zu erstellen und zu verwalten. Weitere Informationen finden Sie unter [AWS IoT API-Referenz AWS](https://docs.aws.amazon.com/iot/latest/apireference/) [SDKs und Toolkits](https://aws.amazon.com/developer/tools/). Die AWS CLI Befehle verwalten auch Ihren Katalog. Weitere Informationen finden Sie in der [AWS IoT CLI Befehlsreferenz](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html).

**Topics**
+ [Ein Softwarepaket und eine Paketversion erstellen](creating-package-and-version.md)
+ [Bereitstellen einer Paketversion über Jobs AWS IoT](deploying-package-version.md)
+ [Einer Sache eine Paketversion zuordnen AWS IoT](associating-package-version.md)

# Ein Softwarepaket und eine Paketversion erstellen
<a name="creating-package-and-version"></a>

Sie können die folgenden Schritte verwenden, um ein Paket und eine erste Version über die AWS-Managementkonsole zu erstellen.

**So erstellen Sie ein Softwarepaket**

1. Loggen Sie sich in Ihr AWS Konto ein und navigieren Sie zur [AWS IoT Konsole](https://console.aws.amazon.com/iot/home). 

1.  Wählen Sie im Navigationsbereich **Softwarepakete** aus. 

1.  Wählen Sie auf der Seite **AWS IoT Softwarepaket** die Option **Paket erstellen** aus. Das Dialogfeld **Abhängigkeiten für die Paketverwaltung aktivieren** wird angezeigt. 

1.  Wählen Sie unter **Flottenindizierung** die Option **Gerätesoftwarepakete und Version hinzufügen** aus. Dies ist für den Softwarepaket-Katalog erforderlich und bietet Flottenindizierung und Kennzahlen zu Ihrer Flotte. 

1. [Optional] Wenn Sie möchten, dass AWS IoT Jobs den reservierten benannten Shadow aktualisieren, wenn Jobs erfolgreich abgeschlossen wurden, wählen Sie **Shadows automatisch aus Jobs aktualisieren**. Wenn Sie nicht möchten, dass AWS IoT Jobs diese Aktualisierung vornehmen, lassen Sie dieses Kontrollkästchen deaktiviert.

1.  [Optional] Um AWS IoT Jobs die Rechte zur Aktualisierung des reservierten benannten Shadows zu gewähren, **wählen Sie unter Rolle auswählen die Option Rolle** **erstellen** aus. Wenn Sie nicht möchten, dass AWS IoT Jobs diese Aktualisierung vornehmen, ist diese Rolle nicht erforderlich. 

1. Erstellen oder wählen Sie eine Rolle aus.

   1. Wenn Sie **keine Rolle für diesen Zweck haben**: Wenn das Dialogfeld **Rolle erstellen** angezeigt wird, geben Sie einen **Rollennamen** ein, und wählen Sie dann **Erstellen** aus.

   1. Falls **Sie über eine Rolle für diesen Zweck verfügen**: Wählen Sie unter **Rolle auswählen** Ihre Rolle aus und stellen Sie dann sicher, dass das Kontrollkästchen **Richtlinie an IAM-Rolle anhängen** aktiviert ist.

1. Wählen Sie **Bestätigen** aus. Die Seite **Neues Paket erstellen** wird angezeigt.

1. Geben Sie unter **Paketdetails** einen **Paketnamen** ein.

1. Geben Sie unter **Paketbeschreibung** Informationen ein, die Ihnen helfen, dieses Paket zu identifizieren und zu verwalten.

1. [Optional] Mit Tags können Sie dieses Paket besser kategorisieren und verwalten. Um Tags hinzuzufügen, erweitern Sie **Tags**, wählen Sie Tag **hinzufügen** und geben Sie ein Schlüssel-Wert-Paar ein. Sie können bis zu 50 Tags eingeben. Weitere Informationen finden Sie unter [AWS IoT Ressourcen taggen](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html).

**Um beim Erstellen eines neuen Pakets eine Paketversion hinzuzufügen**

1. Geben Sie unter **Erste Version** einen **Versionsnamen** ein.

   Wir empfehlen, das [SemVer Format](https://semver.org/) (z. B.`1.0.0.0`) zu verwenden, um Ihre Paketversion eindeutig zu identifizieren. Sie können auch eine andere Formatierungsstrategie verwenden, die besser zu Ihrem Anwendungsfall passt. Weitere Informationen finden Sie unter [Lebenszyklus der Paketversion](preparing-to-use-software-package-catalog.md#package-version-lifecycle). 

1. Geben Sie unter **Versionsbeschreibung** Informationen ein, anhand derer Sie diese Paketversion identifizieren und verwalten können.
**Anmerkung**  
Das Kontrollkästchen **Standardversion** ist deaktiviert, da Paketversionen in einem bestimmten `draft` Status erstellt werden. Sie können der Standardversion einen Namen geben, nachdem Sie die Paketversion erstellt haben und wenn Sie den Status in ändern`published`. Weitere Informationen finden Sie unter [Lebenszyklus der Paketversion](preparing-to-use-software-package-catalog.md#package-version-lifecycle).

1. [Optional] Um Ihnen bei der Verwaltung dieser Version zu helfen oder Informationen an Ihre Geräte zu übermitteln, geben Sie ein oder mehrere Name-Wert-Paare für **Versionsattribute** ein. Wählen Sie für jedes Name-Wert-Paar, das Sie eingeben, die Option **Attribut hinzufügen** aus. Weitere Informationen finden Sie unter [Versionsattribute](preparing-to-use-software-package-catalog.md#version-attributes).

1. [Optional] Mit Tags können Sie dieses Paket besser kategorisieren und verwalten. Um Tags hinzuzufügen, erweitern Sie **Tags**, wählen Sie Tag **hinzufügen** und geben Sie ein Schlüssel-Wert-Paar ein. Sie können bis zu 50 Tags eingeben. Weitere Informationen finden Sie unter [AWS IoT Ressourcen taggen](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html).

1. Wählen Sie **Weiter** aus.

**Ordnen Sie die Softwareliste einer Paketversion zu (optional)**

1. Wählen Sie unter **Schritt 3: Version SBOMs (optional)** im Fenster **SBOM-Konfigurationen** das Standard-SBOM-Dateiformat und den Validierungsmodus aus, mit denen Ihre Softwareliste validiert wird, bevor sie Ihrer Paketversion zugeordnet wird.

1. Geben **Sie im Fenster SBOM-Datei hinzufügen** den Amazon-Ressourcennamen (ARN) für Ihren versionierten Amazon S3-Bucket und das bevorzugte SBOM-Dateiformat ein, falls der Standardtyp nicht funktioniert.
**Anmerkung**  
Sie können entweder eine einzelne SBOM-Datei oder eine einzelne ZIP-Datei mit mehreren Dateien hinzufügen, SBOMs wenn Sie mehr als eine Softwareliste für Ihre Paketversion haben. 

1. Im Fenster **Hinzugefügte SBOM-Datei** können Sie die SBOM-Datei anzeigen, die Sie für Ihre Paketversion hinzugefügt haben.

1. Wählen Sie Paket und Version **erstellen** aus. Die Seite mit der Paketversion wird angezeigt, und Sie können den Validierungsstatus Ihrer SBOM-Datei im Fenster „SBOM-Datei **hinzugefügt**“ sehen. Der Anfangsstatus lautet, dass die `In progress` SBOM-Datei validiert wird. 
**Anmerkung**  
Der Validierungsstatus der SBOM-Datei ist`Invalid file`,,,,, `Not started``In progress`, und die Gründe für die `Validated (SPDX)` fehlgeschlagene `Validated (CycloneDX)` Überprüfung.

# Bereitstellen einer Paketversion über Jobs AWS IoT
<a name="deploying-package-version"></a>

Sie können die folgenden Schritte ausführen, um eine Paketversion über den AWS-Managementkonsole bereitzustellen.

**Voraussetzungen:**

Bevor Sie beginnen, führen Sie die folgenden Schritte aus:
+  AWS IoT Dinge registrieren bei AWS IoT Core. Anweisungen zum Hinzufügen Ihrer Geräte finden Sie AWS IoT Core unter [Ein Ding-Objekt erstellen](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing).
+ [Optional] Erstellen Sie eine AWS IoT Dinggruppe oder dynamische Dinggruppe für die Geräte, für die Sie die Paketversion bereitstellen werden. Anweisungen zum Erstellen einer Objektgruppe finden Sie unter [Erstellen einer statischen Objektgruppe](https://docs.aws.amazon.com/iot/latest/developerguide/thing-groups.html#create-thing-group). Anweisungen zum Erstellen einer dynamischen Objektgruppe finden Sie unter [Erstellen einer dynamischen Objektgruppe](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group).
+ Erstellen Sie ein Softwarepaket und eine Paketversion. Weitere Informationen finden Sie unter [Ein Softwarepaket und eine Paketversion erstellen](creating-package-and-version.md).
+ Erstellen eines Auftragsdokuments. Weitere Informationen finden Sie unter [Vorbereiten des Auftragsdokuments und der Paketversion für die Bereitstellung](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#preparing-to-deploy).

**Um einen AWS IoT Job bereitzustellen**

1. Wählen Sie auf der [AWS IoT Konsole](https://console.aws.amazon.com/iot/home) **Softwarepakete** aus.

1. Wählen Sie das Softwarepaket aus, das Sie bereitstellen möchten. Die Seite mit den **Details zum Softwarepaket** wird angezeigt.

1. Wählen Sie unter **Versionen** die Paketversion aus, die Sie bereitstellen möchten, und wählen Sie dann **Auftragsversion bereitstellen** aus.

1. Wenn Sie zum ersten Mal einen Auftrag über dieses Portal bereitstellen, wird ein Dialogfeld mit einer Beschreibung der Anforderungen angezeigt. Prüfen Sie die Informationen und wählen Sie **Bestätigen** aus. 

1. Geben Sie einen Namen für die Bereitstellung ein, oder lassen Sie den automatisch generierten Namen im Feld **Name** stehen.

1. [Optional] Geben Sie im Feld **Beschreibung** eine Beschreibung ein, die den Zweck oder den Inhalt der Bereitstellung identifiziert, oder lassen Sie die automatisch generierten Informationen übrig. 

   **Hinweis:** Wir empfehlen, dass Sie in den Feldern Auftragsname und Beschreibung keine personenbezogenen Daten verwenden.

1. [Optional] Fügen Sie alle Tags hinzu, die mit diesem Auftrag verknüpft werden sollen.

1. Wählen Sie **Weiter** aus.

1. Wählen Sie unter **Auftragsziele** die Objekte oder Objektgruppen aus, die den Auftrag erhalten sollen.

1. Geben Sie im Feld **Auftragsdatei** die JSON-Datei des Auftragsdokuments an.

1. Öffnen Sie **Auftragsintegration mit dem Paketkatalogdienst**.

1. Wählen Sie die Pakete und Versionen aus, die in Ihrem Auftragsdokument angegeben sind.
**Anmerkung**  
Sie müssen dieselben Pakete und Paketversionen auswählen, die im Auftragsdokument angegeben sind. Sie können mehr hinzufügen, aber der Auftrag gibt Anweisungen nur für die Pakete und Versionen aus, die im Auftragsdokument enthalten sind. Weitere Informationen finden Sie unter [Benennen der Pakete und Versionen bei der Bereitstellung](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#naming-package-versions).

1. Wählen Sie **Weiter** aus.

1. Wählen Sie auf der Seite Auftragskonfiguration im Dialogfeld Auftragskonfiguration einen der folgenden Auftragstypen aus:
   + **Snapshot-Auftrag:** Ein Snapshot-Auftrag ist abgeschlossen, wenn er abgeschlossen ist. Er wird auf den Zielgeräten und -gruppen ausgeführt.
   + **Kontinuierlicher Auftrag:** Ein kontinuierlicher Auftrag gilt für Objektgruppen und wird auf jedem Gerät ausgeführt, das Sie später zu einer bestimmten Zielgruppe hinzufügen.

1. Überprüfen Sie im Dialogfeld **Zusätzliche Konfigurationen — optional** die folgenden optionalen Auftragskonfigurationen und treffen Sie Ihre Auswahl entsprechend. Weitere Informationen finden Sie unter Konfigurationen für [Auftrags-Rollout, Planung und Abbruch sowie Konfigurationen](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-rollout-abort-scheduling) für [Timeout und Wiederholungsversuche bei der Auftragsausführung](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-timeout-retry).
   + Konfiguration des Rollouts
   + Konfiguration des Zeitplans
   + Konfiguration des Timeouts für Auftragsausführungen
   + Auftragsausführungen: Konfiguration wiederholen
   + Abbruch der Konfiguration

1. Überprüfen Sie die Auftragsauswahl und klicken Sie dann auf **Absenden.**

Nachdem Sie den Auftrag erstellt haben, generiert die Konsole eine JSON-Signatur und setzt sie in Ihr Auftragsdokument. Sie können die AWS IoT Konsole verwenden, um den Status eines Jobs anzuzeigen oder einen Job abzubrechen oder zu löschen. Gehen Sie zum [Auftrags-Hub der Konsole](https://console.aws.amazon.com/iot/home#/jobhub), um Aufträge zu verwalten.

# Einer Sache eine Paketversion zuordnen AWS IoT
<a name="associating-package-version"></a>

Nachdem Sie Software auf Ihrem Gerät installiert haben, können Sie dem reservierten Shadow einer AWS IoT Sache eine Paketversion zuordnen. Wenn AWS IoT Jobs so konfiguriert wurden, dass der reservierte Named Shadow des Dings aktualisiert wird, nachdem der Job bereitgestellt und erfolgreich abgeschlossen wurde, müssen Sie dieses Verfahren nicht abschließen. Weitere Informationen finden Sie unter [Reservierter benannter Schatten](preparing-to-use-software-package-catalog.md#reserved-named-shadow). 

**Voraussetzungen:**

Bevor Sie beginnen, führen Sie die folgenden Schritte aus:
+ Erstellen Sie ein oder AWS IoT mehrere Dinge und richten Sie die Telemetrie mithilfe von ein. AWS IoT Core Weitere Informationen finden Sie unter [Erste Schritte mit AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html). 
+  Erstellen Sie ein Softwarepaket und eine Paketversion. Weitere Informationen finden Sie unter [Ein Softwarepaket und eine Paketversion erstellen](creating-package-and-version.md). 
+  Installieren Sie die Software der Paketversion auf dem Gerät. 

**Anmerkung**  
Durch das Zuordnen einer Paketversion zu AWS IoT einem Objekt wird keine Software auf dem physischen Gerät aktualisiert oder installiert. Die Paketversion muss auf dem Gerät bereitgestellt werden. 

**Um einer Sache eine Paketversion zuzuordnen AWS IoT**

1. Erweitern Sie im Navigationsbereich der [AWS IoT -Konsole](https://console.aws.amazon.com/iot/home) das Menü **Alle Geräte** und wählen Sie **Objekte** aus.

1. Identifizieren Sie das AWS IoT Ding, das Sie aktualisieren möchten, aus der Liste und wählen Sie den Namen des Dings aus, um die zugehörige Detailseite anzuzeigen.

1. Wählen Sie im Abschnitt **Details** die Option **Pakete und Versionen** aus.

1.  Wählen Sie **Zu Paket und Version hinzufügen**. 

1.  Wählen Sie unter **Gerätepaket auswählen** das gewünschte Softwarepaket aus. 

1.  Wählen Sie unter **Version auswählen** die gewünschte Softwareversion aus. 

1.  Wählen Sie **Gerätepaket hinzufügen**. 

    Das Paket und die Version werden in der Liste **Ausgewählte Pakete und Versionen** angezeigt. 

1.  Wiederholen Sie diese Schritte für jedes Paket und jede Version, die Sie diesem Objekt zuordnen möchten. 

1.  Wenn Sie fertig sind, wählen Sie **Paket- und Versionsdetails hinzufügen**. Die Seite mit den **Objektdetails** wird geöffnet, und Sie können das neue Paket und die neue Version in der Liste sehen. 