

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.

# Gerätebereitstellung
<a name="iot-provision"></a>

AWS bietet verschiedene Möglichkeiten, ein Gerät bereitzustellen und eindeutige Client-Zertifikate darauf zu installieren. In diesem Abschnitt werden die einzelnen Möglichkeiten beschrieben und erläutert, wie Sie die beste für Ihre IoT-Lösung auswählen. Diese Optionen werden im Whitepaper mit dem Titel [Herstellung und Bereitstellung von Geräten mit X.509-Zertifikaten in AWS IoT Core ausführlich beschrieben](https://docs.aws.amazon.com/whitepapers/latest/device-manufacturing-provisioning/device-manufacturing-provisioning.html). 

**Wählen Sie die für Sie geeignete Option aus.**
+ 

**Sie können Zertifikate auf IoT-Geräten installieren, bevor sie geliefert werden.**  
Wenn Sie eindeutige Client-Zertifikate sicher auf Ihren IoT-Geräten installieren können, bevor sie dem Endbenutzer zur Verwendung bereitgestellt werden, sollten Sie [*just-in-time*Provisioning (JITP) oder [*just-in-time*Registrierung (JITR](auto-register-device-cert.md))](jit-provisioning.md) verwenden.

  Mithilfe von JITP und JITR wird die Zertifizierungsstelle (CA), die zum Signieren des Gerätezertifikats verwendet wird, registriert AWS IoT und erkannt, AWS IoT wenn das Gerät zum ersten Mal eine Verbindung herstellt. Das Gerät wird AWS IoT bei seiner ersten Verbindung mithilfe der Details seiner Bereitstellungsvorlage bereitgestellt.

  Weitere Informationen zur Single-Thing-, JITP-, JITR- und Massenbereitstellung von Geräten mit eindeutigen Zertifikaten finden Sie unter [Bereitstellen von Geräten mit Gerätezertifikaten](provision-w-cert.md).
+ 

**Endbenutzer oder Installateure können eine App verwenden, um Zertifikate auf ihren IoT-Geräten zu installieren.**  
Wenn Sie eindeutige Client-Zertifikate nicht sicher auf Ihrem IoT-Gerät installieren können, bevor sie an die Endbenutzer geliefert werden, die Endbenutzer oder Installateure jedoch eine App verwenden können, um die Geräte zu registrieren und die eindeutigen Gerätezertifikate zu installieren, sollten Sie die [Bereitstellung durch vertrauenswürdige Benutzer](provision-wo-cert.md#trusted-user) verwenden.

  Die Verwendung von vertrauenswürdigen Benutzern, z. B. Endbenutzern oder Installateuren mit bekanntem Konto, kann den Geräteherstellungsprozess vereinfachen. Anstatt eines eindeutigen Client-Zertifikats verfügen Geräte über ein temporäres Zertifikat, mit dem das Gerät nur 5 Minuten AWS IoT lang eine Verbindung herstellen kann. Während dieses 5-minütigen Zeitfensters erhalten vertrauenswürdige Benutzer ein eindeutiges Client-Zertifikat mit einer längeren Lebensdauer, das sie auf dem Gerät installieren können. Durch die begrenzte Gültigkeitsdauer des Antragszertifikats wird das Risiko kompromittierter Zertifikate minimiert.

  Weitere Informationen finden Sie unter [Bereitstellung durch vertrauenswürdigen Benutzer](provision-wo-cert.md#trusted-user).
+ 

**Endbenutzer können KEINE App verwenden, um Zertifikate auf ihren IoT-Geräten zu installieren.**  
Wenn keine der vorherigen Optionen in Ihrer IoT-Lösung funktioniert, ist für Sie die [Bereitstellung durch Anspruch](provision-wo-cert.md#claim-based) eine Option. Mit diesem Prozess verfügen Ihre IoT-Geräte über ein Antragszertifikat, das gemeinsam von anderen Geräten in der Flotte genutzt wird. Wenn ein Gerät zum ersten Mal eine Verbindung mit einem Antragszertifikat herstellt, AWS IoT registriert es das Gerät mithilfe seiner Bereitstellungsvorlage und stellt dem Gerät sein eindeutiges Client-Zertifikat für den späteren Zugriff AWS IoT aus.

   Diese Option ermöglicht die automatische Bereitstellung eines Geräts, wenn es eine Verbindung herstellt AWS IoT, könnte jedoch ein größeres Risiko darstellen, wenn das Antragszertifikat kompromittiert wird. Wenn ein Antragszertifikat kompromittiert wird, können Sie das Zertifikat deaktivieren. Durch die Deaktivierung des Antragszertifikats wird verhindert, dass in Zukunft Geräte mit diesem Antragszertifikat registriert werden. Durch die Deaktivierung des Antragszertifikats werden jedoch keine Geräte blockiert, die bereits bereitgestellt wurden.

  Weitere Informationen finden Sie unter [Bereitstellung durch Anspruch](provision-wo-cert.md#claim-based).

## Bereitstellung von Geräten in AWS IoT
<a name="provisioning-in-iot"></a>

Wenn Sie ein Gerät mit bereitstellen AWS IoT, müssen Sie Ressourcen einrichten, damit Ihre Geräte und Geräte sicher kommunizieren AWS IoT können. Weitere Ressourcen können erstellt werden, um Ihnen bei der Verwaltung Ihrer Geräteflotte zu helfen. Die folgenden Ressourcen können während des Bereitstellungsprozesses erstellt werden: 
+ Ein IoT-Objekt

  IoT-Dinge sind Einträge in der AWS IoT Geräteregistrierung. Jedes Objekt hat einen eindeutigen Namen und einen Satz von Attributen und ist mit einem physischen Gerät verbunden. Objekte können mit einem Objekttyp definiert oder in Objektgruppen gruppiert werden. Weitere Informationen finden Sie unter [Geräte verwalten mit AWS IoT](iot-thing-management.md).

   Obwohl nicht erforderlich, ermöglicht es das Erstellen eines Objekts, Ihre Geräteflotte effektiver zu verwalten, indem Sie Geräte nach Objekttyp, Objektgruppe und Objektattributen suchen. Weitere Informationen finden Sie unter [-Flottenindizierung](iot-indexing.md).
**Anmerkung**  
Um die Konnektivitätsstatusdaten Ihres Dings zu indizieren, stellen Sie Ihr Ding bereit und konfigurieren Sie es so, dass der Name des Dings mit der Client-ID übereinstimmt, die in der Connect-Anfrage verwendet wurde.
+ Ein X.509-Zertifikat.

  Geräte verwenden X.509-Zertifikate für die gegenseitige Authentifizierung mit AWS IoT. Sie können ein vorhandenes Zertifikat registrieren oder ein neues Zertifikat für Sie AWS IoT generieren und registrieren lassen. Sie ordnen einem Gerät ein Zertifikat zu, indem Sie es an das Objekt anhängen, das für das Gerät steht. Sie müssen auch das Zertifikat und den zugehörigen privaten Schlüssel auf das Gerät kopieren. Geräte legen das Zertifikat vor, wenn sie eine Verbindung herstellen AWS IoT. Weitere Informationen finden Sie unter [Authentifizierung](authentication.md).
+ Eine IoT-Richtlinie.

  IoT-Richtlinien definieren, welche Operationen ein Gerät in AWS IoT ausführen kann. IoT-Richtlinien sind an Gerätezertifikate angehängt. Wenn ein Gerät das Zertifikat vorlegt AWS IoT, werden ihm die in der Richtlinie angegebenen Berechtigungen gewährt. Weitere Informationen finden Sie unter [Autorisierung](iot-authorization.md). Jedes Gerät benötigt ein Zertifikat für die Kommunikation mit AWS IoT.

AWS IoT unterstützt die automatisierte Flottenbereitstellung mithilfe von Bereitstellungsvorlagen. Bereitstellungsvorlagen beschreiben die Ressourcen, die für die Bereitstellung AWS IoT Ihres Geräts erforderlich sind. Vorlagen enthalten Variablen, mit denen Sie eine Vorlage zum Bereitstellen mehrerer Geräte verwenden können. Wenn Sie ein Gerät bereitstellen, geben Sie Werte für die für das Gerät spezifischen Variablen mithilfe eines Wörterbuchs oder einer *Karte* an. Um ein anderes Gerät bereitzustellen, geben Sie neue Werte im Wörterbuch an.

Sie können die automatisierte Bereitstellung verwenden, unabhängig davon, ob Ihre Geräte über eindeutige Zertifikate (und den zugehörigen privaten Schlüssel) verfügen.

## Bereitstellung von Flotten APIs
<a name="provisioning-apis"></a>

Es gibt mehrere Kategorien, die bei der Flottenbereitstellung APIs verwendet werden:
+ Diese Funktionen der Steuerungsebene erstellen und verwalten die Flottenbereitstellungsvorlagen und konfigurieren vertrauenswürdige Benutzerrichtlinien.
  + [CreateProvisioningTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html)
  + [ CreateProvisioningTemplateVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplateVersion.html)
  + [DeleteProvisioningTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteProvisioningTemplate.html)
  + [DeleteProvisioningTemplateVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteProvisioningTemplateVersion.html)
  + [DescribeProvisioningTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeProvisioningTemplate.html)
  + [DescribeProvisioningTemplateVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeProvisioningTemplateVersion.html)
  + [ListProvisioningTemplates](https://docs.aws.amazon.com/iot/latest/apireference/API_ListProvisioningTemplates.html)
  + [ListProvisioningTemplateVersions](https://docs.aws.amazon.com/iot/latest/apireference/API_ListProvisioningTemplateVersions.html)
  + [UpdateProvisioningTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateProvisioningTemplate.html)
+ Vertrauenswürdige Benutzer können diese Funktion der Steuerungsebene verwenden, um einen temporären Onboarding-Antrag zu generieren. Dieser temporäre Antrag wird während der WLAN-Konfiguration oder einer ähnlichen Methode an das Gerät übergeben.
  + [CreateProvisioningClaim](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningClaim.html)
+ Die MQTT-API, die während des Bereitstellungsprozesses von Geräten verwendet wird, deren Bereitstellungsantragszertifikat in einem Gerät eingebettet ist oder von einem vertrauenswürdigen Benutzer an es übergeben wird.
  + [CreateCertificateFromCsr](fleet-provision-api.md#create-cert-csr)
  + [CreateKeysAndCertificate](fleet-provision-api.md#create-keys-cert)
  + [RegisterThing](fleet-provision-api.md#register-thing)

# Bereitstellen von Geräten ohne Gerätezertifikate mithilfe der Flottenbereitstellung
<a name="provision-wo-cert"></a>

Mithilfe von AWS IoT Fleet Provisioning AWS IoT können Gerätezertifikate und private Schlüssel generiert und sicher an Ihre Geräte gesendet werden, wenn diese AWS IoT zum ersten Mal eine Verbindung herstellen. AWS IoT stellt Client-Zertifikate bereit, die von der Amazon Root Certificate Authority (CA) signiert wurden.

Es gibt zwei Möglichkeiten, die Flottenbereitstellung zu verwenden:
+ [Bereitstellung durch Anspruch](#claim-based)
+ [Bereitstellung durch vertrauenswürdigen Benutzer](#trusted-user)

## Bereitstellung durch Anspruch
<a name="claim-based"></a>

Geräte können mit einem Bereitstellungsantragszertifikat und einem privaten Schlüssel (bei denen es sich um spezielle Anmeldeinformationen handelt) hergestellt werden. Wenn diese Zertifikate bei registriert sind AWS IoT, kann der Service sie gegen eindeutige Gerätezertifikate eintauschen, die das Gerät für den regulären Betrieb verwenden kann. Dieser Prozess umfasst die folgenden Schritte:

**Vor der Geräteauslieferung**

1. Rufen Sie [https://docs.aws.amazon.com//iot/latest/apireference/API_CreateProvisioningTemplate.html](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateProvisioningTemplate.html) auf, um eine Bereitstellungsvorlage zu erstellen. Diese API gibt einen Vorlagen-ARN zurück. Weitere Informationen finden Sie unter [MQTT-API für die Gerätebereitstellung](fleet-provision-api.md).

   Sie können in der AWS IoT Konsole auch eine Vorlage für die Flottenbereitstellung erstellen. 

   1. Wählen Sie im Navigationsbereich die Dropdownliste **Viele Geräte Connect** aus. Wählen Sie dann „**Viele Geräte Connect**“.

   1. Wählen Sie **Bereitstellungsvorlage erstellen** aus.

   1. Wählen Sie das **Provisioning-Szenario**, das am besten zu Ihren Installationsprozessen passt. Wählen Sie anschließend **Weiter**.

   1. Schließen Sie den Vorlagen-Workflow ab.

1. Erstellen Sie Zertifikate und zugehörige private Schlüssel, die als Bereitstellungsantragszertifikate verwendet werden sollen.

1. Registrieren Sie diese Zertifikate AWS IoT und verknüpfen Sie sie mit einer IoT-Richtlinie, die die Verwendung der Zertifikate einschränkt. Die folgende IoT-Beispielrichtlinie beschränkt die Verwendung des Zertifikats, das dieser Richtlinie zugeordnet ist, auf Bereitstellungsgeräte.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "iot:Connect"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iot:Publish",
                   "iot:Receive"
               ],
               "Resource": [
               "arn:aws:iot:us-east-1:123456789012:topic/$aws/certificates/create/*",
       "arn:aws:iot:us-east-1:123456789012:topic/$aws/provisioning-templates/templateName/provision/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "iot:Subscribe",
               "Resource": [
               "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/certificates/create/*",
       "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/provisioning-templates/templateName/provision/*"
               ]
           }
       ]
   }
   ```

1. Erteilen Sie dem AWS IoT Dienst die Erlaubnis, IoT-Ressourcen wie Dinge und Zertifikate in Ihrem Konto zu erstellen oder zu aktualisieren, wenn Sie Geräte bereitstellen. Fügen Sie dazu die `AWSIoTThingsRegistration` verwaltete Richtlinie einer IAM-Rolle (der sogenannten Bereitstellungsrolle) hinzu, die dem Dienstprinzipal vertraut. AWS IoT 

1. Stellen Sie das Gerät mit dem sicher darin eingebetteten Bereitstellungsantragszertifikat her.

Das Gerät kann nun an den Ort geliefert werden, an dem es zur Verwendung installiert wird.

**Wichtig**  
Private Schlüssel für Bereitstellungsanträge sollten jederzeit gesichert werden, auch auf dem Gerät. Wir empfehlen Ihnen, anhand von AWS IoT CloudWatch Metriken und Protokollen nach Hinweisen auf Missbrauch zu suchen. Wenn Sie einen Missbrauch feststellen, deaktivieren Sie das Bereitstellungsantragszertifikat, damit es nicht für die Gerätebereitstellung verwendet werden kann.

**So initialisieren Sie das Gerät für die Verwendung**

1. Das Gerät verwendet das[AWS IoT Geräte SDKs - SDKs, Mobil- und AWS IoT Geräteclient](iot-sdks.md), um sich AWS IoT mit dem auf dem Gerät installierten Provisioning Claim Certificate zu verbinden und sich damit zu authentifizieren.
**Anmerkung**  
Aus Sicherheitsgründen wird das `certificateOwnershipToken` von `CreateCertificateFromCsr` zurückgesendet und `CreateKeysAndCertificate` läuft nach einer Stunde ab. `RegisterThing` muss aufgerufen werden, bevor das `certificateOwnershipToken` abläuft. Wenn das von `CreateCertificateFromCsr` oder `CreateKeysAndCertificate` erstellte Zertifikat nicht aktiviert und bis zum Ablauf des Tokens noch nicht an eine Richtlinie oder ein Objekt angehängt wurde, wird das Zertifikat gelöscht. Wenn das Token abläuft, kann das Gerät `CreateCertificateFromCsr` oder `CreateKeysAndCertificate` erneut aufrufen, um ein neues Zertifikat zu generieren.

1. Das Gerät erhält ein permanentes Zertifikat und einen privaten Schlüssel mithilfe einer dieser Optionen. Das Gerät verwendet das Zertifikat und den Schlüssel für alle future Authentifizierungen mit AWS IoT.

   1. Rufen Sie [`CreateKeysAndCertificate`](fleet-provision-api.md#create-keys-cert)an, um mithilfe der Zertifizierungsstelle ein neues Zertifikat und einen neuen privaten Schlüssel zu erstellen. AWS 

      Oder

   1. Rufen Sie [`CreateCertificateFromCsr`](fleet-provision-api.md#create-cert-csr) auf, um ein Zertifikat aus einer Zertifikatsignieranforderung zu generieren, das seinen privaten Schlüssel schützt.

1. Rufen Sie vom Gerät aus [`RegisterThing`](fleet-provision-api.md#register-thing) auf, um das Gerät in AWS IoT zu registrieren und Cloud-Ressourcen zu erstellen.

   Der Fleet-Provisioning-Service verwendet Bereitstellungsvorlagen, um Cloud-Ressourcen wie IoT-Objekte zu definieren und zu erstellen. Die Vorlage kann Attribute und Gruppen angeben, denen das Objekt angehört. Die Objektgruppen müssen vorhanden sein, damit das neue Objekt hinzugefügt werden kann.

1. Nach dem Speichern des permanenten Zertifikats auf dem Gerät muss das Gerät die Verbindung von der Sitzung trennen, die es mit dem Bereitstellungsantragszertifikat initiiert hat, und die Verbindung mit dem permanenten Zertifikat erneut herstellen. 

Das Gerät ist jetzt bereit, normal mit dem Gerät zu kommunizieren AWS IoT.

## Bereitstellung durch vertrauenswürdigen Benutzer
<a name="trusted-user"></a>

In vielen Fällen stellt ein Gerät AWS IoT zum ersten Mal eine Verbindung her, wenn ein vertrauenswürdiger Benutzer, z. B. ein Endbenutzer oder Installationstechniker, eine mobile App verwendet, um das Gerät an seinem Einsatzort zu konfigurieren.

**Wichtig**  
Sie müssen den Zugriff und die Berechtigung des vertrauenswürdigen Benutzers verwalten, um dieses Verfahren auszuführen. Eine Möglichkeit besteht darin, vertrauenswürdigen Benutzern ein Konto bereitzustellen und für sie zu verwalten, mit dem sie authentifiziert werden und Zugriff auf die AWS IoT -Funktionen und API-Operationen erhalten, die für dieses Vorgehen erforderlich sind. 

**Vor der Geräteauslieferung**

1. Rufen Sie [https://docs.aws.amazon.com//iot/latest/apireference/API_CreateProvisioningTemplate.html](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateProvisioningTemplate.html)auf, um eine Bereitstellungsvorlage zu erstellen, und geben Sie deren *templateArn* und *templateName* zurück.

1. Erstellen Sie eine IAM-Rolle, die von vertrauenswürdigen Benutzern verwendet wird, um den Bereitstellungsprozess zu initiieren. Mit der Bereitstellungsvorlage kann nur dieser Benutzer ein Gerät bereitstellen. Beispiel:

   ```
   {
       "Effect": "Allow",
       "Action": [
           "iot:CreateProvisioningClaim"
       ],
       "Resource": [
           "arn:aws:iot:aws-region:aws-account-id:provisioningtemplate/templateName"
       ]
   }
   ```

1. Erteilen Sie dem AWS IoT Dienst die Erlaubnis, IoT-Ressourcen wie Dinge und Zertifikate in Ihrem Konto zu erstellen oder zu aktualisieren, wenn Sie Geräte bereitstellen. Dazu fügen Sie die `AWSIoTThingsRegistration` verwaltete Richtlinie einer IAM-Rolle (der sogenannten *Bereitstellungsrolle*) hinzu, die dem Dienstprinzipal vertraut. AWS IoT 

1. Stellen Sie die Mittel zur Identifizierung Ihrer vertrauenswürdigen Benutzer bereit, indem Sie ihnen beispielsweise ein Konto zur Verfügung stellen, mit dem sie authentifiziert und ihre Interaktionen mit den AWS API-Vorgängen autorisiert werden können, die für die Registrierung ihrer Geräte erforderlich sind.

**So initialisieren Sie das Gerät für die Verwendung**

1. Der vertrauenswürdige Benutzer meldet sich bei der mobilen App oder dem Webservice für die Bereitstellung an.

1. Die mobile App oder Webanwendung verwendet die IAM-Rolle und ruft [https://docs.aws.amazon.com//iot/latest/apireference/API_CreateProvisioningClaim.html](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateProvisioningClaim.html) auf, um ein temporäres Bereitstellungsantragszertifikat von AWS IoT abzurufen.
**Anmerkung**  
Aus Sicherheitsgründen läuft das von `CreateProvisioningClaim` zurückgegebene temporäre Bereitstellungsantragszertifikat nach fünf Minuten ab. Die folgenden Schritte müssen erfolgreich ein gültiges Zertifikat zurückgeben, bevor das temporäre Bereitstellungsantragszertifikat abläuft. Temporäre Bereitstellungsantragszertifikate werden nicht in der Zertifikatliste Ihres Kontos angezeigt.

1. Die mobile App oder Webanwendung stellt dem Gerät das temporäre Bereitstellungsantragszertifikat zusammen mit allen erforderlichen Konfigurationsinformationen, z. B. WLAN-Anmeldeinformationen, zur Verfügung.

1. Das Gerät verwendet das temporäre Bereitstellungsantragszertifikat, um eine Verbindung zu AWS IoT mit dem [AWS IoT Geräte SDKs - SDKs, Mobil- und AWS IoT Geräteclient](iot-sdks.md) herzustellen.

1. Das Gerät erhält ein permanentes Zertifikat und einen privaten Schlüssel, indem es innerhalb von fünf Minuten nach der Verbindung AWS IoT mit dem temporären Bereitstellungsanforderungszertifikat eine dieser Optionen verwendet. Das Gerät verwendet das Zertifikat und den Schlüssel, mit dem diese Optionen zurückgegeben werden, für alle future Authentifizierungen AWS IoT.

   1. Rufen Sie [`CreateKeysAndCertificate`](fleet-provision-api.md#create-keys-cert)an, um mithilfe der Zertifizierungsstelle ein neues Zertifikat und einen neuen privaten Schlüssel zu erstellen. AWS 

      Oder

   1. Rufen Sie [`CreateCertificateFromCsr`](fleet-provision-api.md#create-cert-csr) auf, um ein Zertifikat aus einer Zertifikatsignieranforderung zu generieren, das seinen privaten Schlüssel schützt.
**Anmerkung**  
Denken Sie daran, ein gültiges Zertifikat innerhalb von fünf Minuten nach der Verbindung AWS IoT mit dem temporären Bereitstellungsanspruch zurückzugeben [`CreateKeysAndCertificate`](fleet-provision-api.md#create-keys-cert)oder [`CreateCertificateFromCsr`](fleet-provision-api.md#create-cert-csr)müssen Sie es zurückgeben.

1. Das Gerät ruft [`RegisterThing`](fleet-provision-api.md#register-thing)auf, um das Gerät bei Cloud-Ressourcen zu registrieren AWS IoT und diese zu erstellen. 

   Der Fleet-Provisioning-Service verwendet Bereitstellungsvorlagen, um Cloud-Ressourcen wie IoT-Objekte zu definieren und zu erstellen. Die Vorlage kann Attribute und Gruppen angeben, denen das Objekt angehört. Die Objektgruppen müssen vorhanden sein, damit das neue Objekt hinzugefügt werden kann.

1. Nach dem Speichern des permanenten Zertifikats auf dem Gerät muss das Gerät die Verbindung von der Sitzung trennen, die es mit dem temporären Bereitstellungsantragszertifikat initiiert hat, und erneut eine Verbindung mit dem permanenten Zertifikat herstellen. 

Das Gerät ist jetzt bereit, normal mit dem Gerät zu kommunizieren AWS IoT.

## Verwenden von Pre-Provisioning-Hooks mit der CLI AWS
<a name="hooks-cli-instruc"></a>

Im folgenden Verfahren wird eine Bereitstellungsvorlage mit Pre-Provisioning-Hooks erstellt. Die hier verwendete Lambda-Funktion ist ein Beispiel, das geändert werden kann. 

**So erstellen Sie Pre-Provisioning-Hooks und übernehmen Sie für eine Bereitstellungsvorlage**

1. Erstellen Sie eine Lambda-Funktion mit definierter Eingabe und Ausgabe. Lambda-Funktionen sind hochgradig anpassbar. Für die Erstellung von Pre-Provisioning-Hooks sind `allowProvisioning` und `parameterOverrides` erforderlich. Weitere Informationen zum Erstellen von Lambda-Funktionen finden Sie unter [AWS Lambda Mit der AWS Befehlszeilenschnittstelle](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-awscli.html) verwenden.

   Im Folgenden sehen Sie ein Beispiel für eine Lambda-Funktionsausgabe:

   ```
   {
     "allowProvisioning": True,
     "parameterOverrides": {
       "incomingKey0": "incomingValue0",
       "incomingKey1": "incomingValue1"
     }
   }
   ```

1. AWS IoT verwendet ressourcenbasierte Richtlinien, um Lambda aufzurufen. Sie müssen also die AWS IoT Erlaubnis zum Aufrufen Ihrer Lambda-Funktion erteilen.
**Wichtig**  
Achten Sie darauf, das `source-arn` oder `source-account` in die globalen Bedingungskontextschlüssel der Richtlinien aufzunehmen, die mit Ihrer Lambda-Aktion verknüpft sind, damit Berechtigungen nicht manipuliert werden können. Weitere Informationen hierzu finden Sie unter [Serviceübergreifende Confused-Deputy-Prävention](cross-service-confused-deputy-prevention.md).

   Es folgt ein Beispiel dafür, wie Sie IoT mit [add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) die Berechtigung zum Aufrufen Ihrer Lambda-Funktion erteilen.

   ```
   aws lambda add-permission \
       --function-name myLambdaFunction \
       --statement-id iot-permission \
       --action lambda:InvokeFunction \
       --principal iot.amazonaws.com
   ```

1. Fügen Sie einer Vorlage mit dem Befehl oder einen Pre-Provisioning-Hook hinzu. [create-provisioning-template[update-provisioning-template](https://docs.aws.amazon.com/cli/latest/reference/iot/update-provisioning-template.html)](https://docs.aws.amazon.com/cli/latest/reference/iot/create-provisioning-template.html)

   Das folgende CLI-Beispiel verwendet die [create-provisioning-template](https://docs.aws.amazon.com/cli/latest/reference/iot/create-provisioning-template.html), um eine Bereitstellungsvorlage mit Pre-Provisioning-Hooks zu erstellen:

   ```
   aws iot create-provisioning-template \
       --template-name myTemplate \
       --provisioning-role-arn arn:aws:iam:us-east-1:1234564789012:role/myRole \
       --template-body file://template.json \
       --pre-provisioning-hook file://hooks.json
   ```

   Die Ausgabe dieses Befehls sieht wie folgt aus:

   ```
   {
       "templateArn": "arn:aws:iot:us-east-1:1234564789012:provisioningtemplate/myTemplate",
       "defaultVersionId": 1,
       "templateName": myTemplate
   }
   ```

   Sie können einen Parameter auch aus einer Datei laden, statt ihn als Befehlszeilen-Parameterwert einzugeben, um Zeit zu sparen. Weitere Informationen finden Sie unter [Laden von AWS CLI -Parametern aus einer Datei](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html). Im Folgenden wird der Parameter `template` im erweiterten JSON-Format gezeigt:

   ```
   {
       "Parameters" : {
           "DeviceLocation": {
               "Type": "String"
           }
       },
       "Mappings": {
           "LocationTable": {
               "Seattle": {
                   "LocationUrl": "https://example.aws"
               }
           }
       },
       "Resources" : {
           "thing" : {
               "Type" : "AWS::IoT::Thing",
               "Properties" : {
                   "AttributePayload" : {
                       "version" : "v1",
                       "serialNumber" : "serialNumber"
                   },
                   "ThingName" : {"Fn::Join":["",["ThingPrefix_",{"Ref":"SerialNumber"}]]},
                   "ThingTypeName" : {"Fn::Join":["",["ThingTypePrefix_",{"Ref":"SerialNumber"}]]},
                   "ThingGroups" : ["widgets", "WA"],
                   "BillingGroup": "BillingGroup"
               },
               "OverrideSettings" : {
                   "AttributePayload" : "MERGE",
                   "ThingTypeName" : "REPLACE",
                   "ThingGroups" : "DO_NOTHING"
               }
           },
           "certificate" : {
               "Type" : "AWS::IoT::Certificate",
               "Properties" : {
                   "CertificateId": {"Ref": "AWS::IoT::Certificate::Id"},
                   "Status" : "Active",
                   "ThingPrincipalType" : "EXCLUSIVE_THING"
               }
           },
           "policy" : {
               "Type" : "AWS::IoT::Policy",
               "Properties" : {
                   "PolicyDocument" : {
                       "Version": "2012-10-17",		 	 	 
                       "Statement": [{
                           "Effect": "Allow",
                           "Action":["iot:Publish"],
                           "Resource": ["arn:aws:iot:us-east-1:504350838278:topic/foo/bar"]
                       }]
                   }
               }
           }
       },
       "DeviceConfiguration": {
           "FallbackUrl": "https://www.example.com/test-site",
           "LocationUrl": {
               "Fn::FindInMap": ["LocationTable",{"Ref": "DeviceLocation"}, "LocationUrl"]}
       }
   }
   ```

   Im Folgenden wird der Parameter `pre-provisioning-hook` im erweiterten JSON-Format gezeigt:

   ```
   {
        "targetArn" : "arn:aws:lambda:us-east-1:765219403047:function:pre_provisioning_test",
        "payloadVersion" : "2020-04-01"
   }
   ```

# Bereitstellen von Geräten mit Gerätezertifikaten
<a name="provision-w-cert"></a>

AWS IoT bietet drei Möglichkeiten zur Bereitstellung von Geräten, auf denen bereits ein Gerätezertifikat (und ein zugehöriger privater Schlüssel) vorhanden sind:
+ Bereitstellung einzelner Objekte mithilfe einer Bereitstellungsvorlage. Diese Option eignet sich gut, wenn Sie Geräte nur einzeln bereitstellen müssen.
+ Just-in-time Bereitstellung (JITP) mit einer Vorlage, die ein Gerät bereitstellt, wenn es zum ersten Mal eine Verbindung herstellt. AWS IoT Diese Option eignet sich gut, wenn Sie eine große Anzahl von Geräten anmelden müssen, jedoch keine Informationen über sie besitzen, die Sie als Massenbereitstellungsliste zusammenstellen können.
+ Massenregistrierung. Mit dieser Option können Sie eine Liste von Bereitstellungsvorlagenwerten für einzelne Objekte angeben, die in einer Datei in einem S3-Bucket gespeichert werden. Dieser Ansatz eignet sich gut, wenn eine große Anzahl bekannter Geräte vorhanden ist, deren gewünschten Merkmale in einer Liste zusammengestellt werden können. 

**Topics**
+ [Bereitstellung eines einzelnen Objekts](single-thing-provisioning.md)
+ [Just-in-time Bereitstellung](jit-provisioning.md)
+ [Massenregistrierung](bulk-provisioning.md)

# Bereitstellung eines einzelnen Objekts
<a name="single-thing-provisioning"></a>

Verwenden Sie die [RegisterThing](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterThing.html)API oder den `register-thing` CLI-Befehl, um etwas bereitzustellen. Der CLI-Befehl `register-thing` verwendet die folgenden Argumente:

--template-body  
Die Bereitstellungsvorlage.

--parameters  
Eine Liste von Name/Wert-Paaren für die in der Bereitstellungsvorlage verwendeten Parameter im JSON-Format (z. B. `{"ThingName" : "MyProvisionedThing", "CSR" : "csr-text"}`).

Siehe [Bereitstellungsvorlagen](provision-template.md).

[RegisterThing](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterThing.html)oder `register-thing` gibt das ARNs für die Ressourcen und den Text des erstellten Zertifikats zurück:

```
{
    "certificatePem": "certificate-text",
    "resourceArns": {
    "PolicyLogicalName": "arn:aws:iot:us-west-2:123456789012:policy/2A6577675B7CD1823E271C7AAD8184F44630FFD7",
    "certificate": "arn:aws:iot:us-west-2:123456789012:cert/cd82bb924d4c6ccbb14986dcb4f40f30d892cc6b3ce7ad5008ed6542eea2b049",
    "thing": "arn:aws:iot:us-west-2:123456789012:thing/MyProvisionedThing"
    }
}
```

Wenn ein Parameter im Lexikon weggelassen wird, wird der Standardwert verwendet. Wenn kein Standardwert angegeben ist, wird der Parameter nicht durch einen Wert ersetzt.

# Just-in-time Bereitstellung
<a name="jit-provisioning"></a>

Sie können just-in-time Provisioning (JITP) verwenden, um Ihre Geräte bereitzustellen, wenn sie zum ersten Mal versuchen, eine Verbindung herzustellen. AWS IoT Zur Bereitstellung des Geräts müssen Sie die automatische Registrierung aktivieren und dem CA-Zertifikat, mit dem das Gerätezertifikat signiert wurde, eine Bereitstellungsvorlage zuordnen. Erfolge und Fehler bei der Bereitstellung werden wie [Gerätebereitstellungsmetriken](metrics_dimensions.md#provisioning-metrics) bei Amazon CloudWatch protokolliert.

**Topics**
+ [Überblick über JITP](#jit-provisioning-overview)
+ [Registrieren einer CA mithilfe der Bereitstellungsvorlage](#jit-provisioning-registerCA-template)
+ [Registrieren einer CA anhand des Bereitstellungsvorlagennamens](#jit-provisioning-registerCA-templateName)

## Überblick über JITP
<a name="jit-provisioning-overview"></a>

Wenn ein Gerät versucht, AWS IoT mithilfe eines Zertifikats, das mit einem registrierten CA-Zertifikat signiert ist, eine Verbindung herzustellen, wird die Vorlage aus dem CA-Zertifikat AWS IoT geladen und zum Aufrufen [RegisterThing](fleet-provision-api.md#register-thing)verwendet. Der JITP-Workflow registriert zuerst ein Zertifikat mit dem Statuswert `PENDING_ACTIVATION`. Wenn die Gerätebereitstellung abgeschlossen ist, wird der Status des Zertifikats in `ACTIVE` geändert.

AWS IoT definiert die folgenden Parameter, die Sie in Bereitstellungsvorlagen deklarieren und referenzieren können:
+ `AWS::IoT::Certificate::Country`
+ `AWS::IoT::Certificate::Organization`
+ `AWS::IoT::Certificate::OrganizationalUnit`
+ `AWS::IoT::Certificate::DistinguishedNameQualifier`
+ `AWS::IoT::Certificate::StateName`
+ `AWS::IoT::Certificate::CommonName`
+ `AWS::IoT::Certificate::SerialNumber`
+ `AWS::IoT::Certificate::Id`

Die Werte für diese Bereitstellungsvorlagenparameter werden auf die Angaben beschränkt, die JITP aus dem Betreff-Feld des Zertifikats des bereitzustellenden Geräts extrahieren kann. Das Zertifikat muss Werte für alle Parameter im Vorlagentext enthalten. Der `AWS::IoT::Certificate::Id`-Parameter bezieht sich auf eine intern generierte ID und nicht auf eine ID, die im Zertifikat enthalten ist. Sie können den Wert dieser ID mithilfe der `principal()` Funktion in einer AWS IoT Regel abrufen. 

**Anmerkung**  
Sie können Geräte mithilfe der AWS IoT Core just-in-time Bereitstellungsfunktion (JITP) bereitstellen, ohne die gesamte Vertrauenskette bei der ersten Verbindung eines Geräts an senden zu müssen. AWS IoT Core Die Vorlage des CA-Zertifikats ist optional, aber das Gerät muss die [SNI-Erweiterung (Server Name Indication)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1) senden, wenn es eine Verbindung mit AWS IoT Core herstellt.

### Beispielvorlagentext
<a name="jit-provisioning-example-templatebody"></a>

Die folgende JSON-Datei ist ein Beispieltext für eine vollständige JITP-Vorlage. 

```
{
   "Parameters":{
      "AWS::IoT::Certificate::CommonName":{
         "Type":"String"
      },
      "AWS::IoT::Certificate::SerialNumber":{
         "Type":"String"
      },
      "AWS::IoT::Certificate::Country":{
         "Type":"String"
      },
      "AWS::IoT::Certificate::Id":{
         "Type":"String"
      }
   },
   "Resources":{
      "thing":{
         "Type":"AWS::IoT::Thing",
         "Properties":{
            "ThingName":{
               "Ref":"AWS::IoT::Certificate::CommonName"
            },
            "AttributePayload":{
               "version":"v1",
               "serialNumber":{
                  "Ref":"AWS::IoT::Certificate::SerialNumber"
               }
            },
            "ThingTypeName":"lightBulb-versionA",
            "ThingGroups":[
               "v1-lightbulbs",
               {
                  "Ref":"AWS::IoT::Certificate::Country"
               }
            ]
         },
         "OverrideSettings":{
            "AttributePayload":"MERGE",
            "ThingTypeName":"REPLACE",
            "ThingGroups":"DO_NOTHING"
         }
      },
      "certificate":{
         "Type":"AWS::IoT::Certificate",
         "Properties":{
            "CertificateId":{
               "Ref":"AWS::IoT::Certificate::Id"
            },
            "Status":"ACTIVE"
         }
      },
      "policy":{
         "Type":"AWS::IoT::Policy",
         "Properties":{
            "PolicyDocument":"{ \"Version\": \"2012-10-17\",		 	 	  \"Statement\": [{ \"Effect\": \"Allow\", \"Action\":[\"iot:Publish\"], \"Resource\": [\"arn:aws:iot:us-east-1:123456789012:topic/foo/bar\"] }] }"
         }
      }
   }
}
```

Diese Beispielvorlage deklariert Werte für die Bereitstellungsparameter `AWS::IoT::Certificate::CommonName`, `AWS::IoT::Certificate::SerialNumber`, `AWS::IoT::Certificate::Country` und `AWS::IoT::Certificate::Id`, die aus dem Zertifikat extrahiert und im Abschnitt `Resources` verwendet werden. Der JITP-Workflow führt anhand dieser Vorlage die folgenden Aktionen aus:
+ Ein Zertifikat registrieren und als seinen Status PENDING\$1ACTIVE einstellen.
+ Eine Objekt-Ressource erstellen.
+ Eine Richtlinien-Ressource erstellen.
+ Dem Zertifikat die Richtlinie anfügen.
+ Dem Objekt das Zertifikat anfügen.
+ Den Status des Zertifikats auf ACTIVE aktualisieren.

Die Gerätebereitstellung schlägt fehl, wenn das Zertifikat nicht alle im `Parameters` Abschnitt der genannten Eigenschaften aufweist. `templateBody` Wenn `AWS::IoT::Certificate::Country` es beispielsweise in der Vorlage enthalten ist, das Zertifikat jedoch keine `Country`-Eigenschaft besitzt, schlägt die Gerätebereitstellung fehl.

Sie können es auch CloudTrail zur Behebung von Problemen mit Ihrer JITP-Vorlage verwenden. Informationen zu den Metriken, die bei Amazon protokolliert werden CloudWatch, finden Sie unter[Gerätebereitstellungsmetriken](metrics_dimensions.md#provisioning-metrics). Weitere Informationen zur Bereitstellungsvorlagen finden Sie unter [Bereitstellungsvorlagen](provision-template.md).

**Anmerkung**  
Während des Bereitstellungsprozesses ruft das just-in-time Provisioning (JITP) andere API-Operationen auf der AWS IoT Kontrollebene auf. Diese Aufrufe können die für Ihr Konto festgelegten [AWS IoT -Drosselungskontingente](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#throttling-limits) überschreiten und zu gedrosselten Aufrufen führen. Wenden Sie sich an den [AWS -Kundenservice](https://console.aws.amazon.com/support/home), um Ihre Drosselungskontingente bei Bedarf zu erhöhen.

## Registrieren einer CA mithilfe der Bereitstellungsvorlage
<a name="jit-provisioning-registerCA-template"></a>

Gehen Sie folgendermaßen vor, um eine CA mithilfe einer vollständigen Bereitstellungsvorlage zu registrieren: 

1. Speichern Sie Ihre Bereitstellungsvorlage und die ARN-Informationen der Rolle wie im folgenden Beispiel als JSON-Datei:

   ```
   { 
        "templateBody" : "{\r\n    \"Parameters\" : {\r\n        \"AWS::IoT::Certificate::CommonName\": {\r\n            \"Type\": \"String\"\r\n        },\r\n        \"AWS::IoT::Certificate::SerialNumber\": {\r\n            \"Type\": \"String\"\r\n        },\r\n        \"AWS::IoT::Certificate::Country\": {\r\n            \"Type\": \"String\"\r\n        },\r\n        \"AWS::IoT::Certificate::Id\": {\r\n            \"Type\": \"String\"\r\n        }\r\n    },\r\n    \"Resources\": {\r\n        \"thing\": {\r\n            \"Type\": \"AWS::IoT::Thing\",\r\n            \"Properties\": {\r\n                \"ThingName\": {\r\n                    \"Ref\": \"AWS::IoT::Certificate::CommonName\"\r\n                },\r\n                \"AttributePayload\": {\r\n                    \"version\": \"v1\",\r\n                    \"serialNumber\": {\r\n                        \"Ref\": \"AWS::IoT::Certificate::SerialNumber\"\r\n                    }\r\n                },\r\n                \"ThingTypeName\": \"lightBulb-versionA\",\r\n                \"ThingGroups\": [\r\n                    \"v1-lightbulbs\",\r\n                    {\r\n                        \"Ref\": \"AWS::IoT::Certificate::Country\"\r\n                    }\r\n                ]\r\n            },\r\n            \"OverrideSettings\": {\r\n                \"AttributePayload\": \"MERGE\",\r\n                \"ThingTypeName\": \"REPLACE\",\r\n                \"ThingGroups\": \"DO_NOTHING\"\r\n            }\r\n        },\r\n        \"certificate\": {\r\n            \"Type\": \"AWS::IoT::Certificate\",\r\n            \"Properties\": {\r\n                \"CertificateId\": {\r\n                    \"Ref\": \"AWS::IoT::Certificate::Id\"\r\n                },\r\n                \"Status\": \"ACTIVE\"\r\n            },\r\n            \"OverrideSettings\": {\r\n                \"Status\": \"DO_NOTHING\"\r\n            }\r\n        },\r\n        \"policy\": {\r\n            \"Type\": \"AWS::IoT::Policy\",\r\n            \"Properties\": {\r\n                \"PolicyDocument\": \"{ \\\"Version\\\": \\\"2012-10-17		 	 	 \\\", \\\"Statement\\\": [{ \\\"Effect\\\": \\\"Allow\\\", \\\"Action\\\":[\\\"iot:Publish\\\"], \\\"Resource\\\": [\\\"arn:aws:iot:us-east-1:123456789012:topic\/foo\/bar\\\"] }] }\"\r\n            }\r\n        }\r\n    }\r\n}",
        "roleArn" : "arn:aws:iam::123456789012:role/JITPRole"
   }
   ```

   In diesem Beispiel muss der Wert des Feldes `templateBody` ein JSON-Objekt sein, das als Zeichenfolge mit Escapezeichen angegeben wird. Zulässig sind nur die Werte in der [obigen Liste](#jit-provisioning-overview). Sie können eine Vielzahl von Tools verwenden, um die erforderliche JSON-Ausgabe zu erstellen, z. B. `json.dumps` (Python) oder `JSON.stringify` (Node). Der Wert von Feld `roleARN` muss der ARN einer Rolle sein, der `AWSIoTThingsRegistration` zugeordnet ist. Außerdem können Sie in Ihrer Vorlage `PolicyName` anstelle des Inline-`PolicyDocument` wie im Beispiel verwenden. 

1. Registrieren Sie ein CA-Zertifikat mit der Operation [Register CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) API oder dem [https://docs.aws.amazon.com//cli/latest/reference/iot/register-ca-certificate.html](https://docs.aws.amazon.com//cli/latest/reference/iot/register-ca-certificate.html)CLI-Befehl. Geben Sie das Verzeichnis der Bereitstellungsvorlage und die ARN-Informationen der Rolle an, die Sie im vorherigen Schritt gespeichert haben:

   Im Folgenden finden Sie ein Beispiel für die Registrierung eines CA-Zertifikats im `DEFAULT`-Modus mithilfe von AWS CLI:

   ```
   aws iot register-ca-certificate --ca-certificate file://your-ca-cert --verification-cert file://your-verification-cert 
                   --set-as-active --allow-auto-registration --registration-config file://your-template
   ```

   Im Folgenden finden Sie ein Beispiel für die Registrierung eines CA-Zertifikats im `SNI_ONLY`-Modus mithilfe von AWS CLI:

   ```
   aws iot register-ca-certificate --ca-certificate file://your-ca-cert --certificate-mode SNI_ONLY
                    --set-as-active --allow-auto-registration --registration-config file://your-template
   ```

   Weitere Informationen finden Sie unter [Registrieren Ihres CA-Zertifikats](https://docs.aws.amazon.com//iot/latest/developerguide/register-CA-cert.html).

1.  (Optional) Aktualisieren Sie die Einstellungen für ein CA-Zertifikat mithilfe des [CACertificateAPI-Aktualisierungsvorgangs](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) oder des [https://docs.aws.amazon.com//cli/latest/reference/iot/update-ca-certificate.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-ca-certificate.html)CLI-Befehls. 

   Im Folgenden finden Sie ein Beispiel für die Aktualisierung eines CA-Zertifikats mithilfe von AWS CLI:

   ```
   aws iot update-ca-certificate --certificate-id caCertificateId
                   --new-auto-registration-status ENABLE --registration-config file://your-template
   ```

## Registrieren einer CA anhand des Bereitstellungsvorlagennamens
<a name="jit-provisioning-registerCA-templateName"></a>

Gehen Sie folgendermaßen vor, um eine CA mit einem Bereitstellungsvorlagennamen zu registrieren:

1. Speichern Sie den Text Ihrer Bereitstellungsvorlage als JSON-Datei. Einen Beispielvorlagentext finden Sie unter [Beispielvorlagentext](#jit-provisioning-example-templatebody).

1. Verwenden Sie die [CreateProvisioningTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html)API oder den [https://docs.aws.amazon.com//cli/latest/reference/iot/create-provisioning-template.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-provisioning-template.html)CLI-Befehl, um eine Bereitstellungsvorlage zu erstellen:

   ```
   aws iot create-provisioning-template --template-name your-template-name \
           --template-body file://your-template-body.json --type JITP \
           --provisioning-role-arn arn:aws:iam::123456789012:role/test
   ```
**Anmerkung**  
Für die just-in-time Bereitstellung (JITP) müssen Sie den Vorlagentyp angeben, der `JITP` bei der Erstellung der Bereitstellungsvorlage verwendet werden soll. *Weitere Informationen zum Vorlagentyp finden Sie [CreateProvisioningTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html)in der AWS API-Referenz.*

1. Verwenden Sie die Register CACertificate API oder den [https://docs.aws.amazon.com//cli/latest/reference/iot/register-ca-certificate.html](https://docs.aws.amazon.com//cli/latest/reference/iot/register-ca-certificate.html)CLI-Befehl, um CA mit dem Vorlagennamen zu [registrieren](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html):

   ```
   aws iot register-ca-certificate --ca-certificate file://your-ca-cert --verification-cert file://your-verification-cert \
           --set-as-active --allow-auto-registration --registration-config templateName=your-template-name
   ```

# Massenregistrierung
<a name="bulk-provisioning"></a>

Mit dem Befehl [https://docs.aws.amazon.com/iot/latest/apireference/API_StartThingRegistrationTask.html](https://docs.aws.amazon.com/iot/latest/apireference/API_StartThingRegistrationTask.html) können Sie viele Objekte gemeinsam registrieren. Dieser Befehl verwendet eine Bereitstellungsvorlage, den Namen eines S3;-Buckets, einen Schlüsselnamen und einen Rollen-ARN, der den Zugriff auf die Datei in dem S3-Bucket ermöglicht. Die Datei in dem S3-Bucket enthält die Werte, die die Parameter in der Vorlage ersetzen. Dabei muss es sich um eine JSON-Datei mit Trennung durch neue Zeilen handeln. Jede Zeile enthält alle Parameterwerte für die Registrierung eines einzelnen Geräts. Beispiel:

```
{"ThingName": "foo", "SerialNumber": "123", "CSR": "csr1"}
{"ThingName": "bar", "SerialNumber": "456", "CSR": "csr2"}
```

Folgende API-Operationen können im Zusammenhang mit der Massenregistrierung nützlich sein:
+ [ListThingRegistrationTasks](https://docs.aws.amazon.com/iot/latest/apireference/API_ListThingRegistrationTasks.html): Führt die aktuellen Aufgaben zur Massenbereitstellung von Dingen auf. 
+ [ DescribeThingRegistrationTask](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeThingRegistrationTask.html): Stellt Informationen zu einer bestimmten Aufgabe zur Massenregistrierung von Dingen bereit.
+ [StopThingRegistrationTask](https://docs.aws.amazon.com/iot/latest/apireference/API_StopThingRegistrationTask.html): Stoppt eine Aufgabe zur Massenregistrierung von Dingen.
+ [ListThingRegistrationTaskReports](https://docs.aws.amazon.com/iot/latest/apireference/API_ListThingRegistrationTaskReports.html): Wird verwendet, um die Ergebnisse und Fehler einer Aufgabe zur Massenregistrierung von Dingen zu überprüfen.

**Anmerkung**  
Es kann jeweils nur ein Massenregistrierungsvorgang gleichzeitig durchgeführt werden (pro Konto).
Bei der Massenregistrierung werden andere API-Operationen auf der AWS IoT Steuerungsebene aufgerufen. Diese Abrufe können die [AWS IoT -Drosselungskontingente](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#throttling-limits) in Ihrem Konto überschreiten und Drosselungsfehler verursachen. Wenden Sie sich [bei Bedarf an den AWS Kundensupport](https://console.aws.amazon.com/support/home), um Ihre AWS IoT Drosselungsquoten zu erhöhen.

# Bereitstellungsvorlagen
<a name="provision-template"></a>

Eine Bereitstellungsvorlage ist ein JSON-Dokument, das Parameter verwendet, um die Ressourcen zu beschreiben, mit denen Ihr Gerät interagieren muss. AWS IoT Eine Bereitstellungsvorlage besteht aus zwei Abschnitten: `Parameters` und `Resources`. Es gibt zwei Arten von Bereitstellungsvorlagen in. AWS IoT Eine wird für die just-in-time Bereitstellung (JITP) und die Massenregistrierung verwendet, die zweite für die Flottenbereitstellung.

**Topics**
+ [Bereich "Parameters"](#parameters-section)
+ [Bereich „Ressourcen“](#resources-section)
+ [Vorlagenbeispiel für eine Massenregistrierung](#bulk-template-example)
+ [Beispiel für eine Vorlage für die just-in-time Bereitstellung (JITP)](#JITP-template-example)
+ [Flottenbereitstellung](#fleet-provision-template)

## Bereich "Parameters"
<a name="parameters-section"></a>

Der Abschnitt `Parameters` deklariert die im Abschnitt `Resources` verwendeten Parameter. Jeder Parameter deklariert einen Namen, einen Typ und einen optionalen Standardwert. Der Standardwert wird verwendet, wenn das mit der Vorlage eingegebene Lexikon keinen Wert für den Parameter enthält. Der Abschnitt `Parameters` eines Vorlagendokuments sieht wie folgt aus:

```
{
    "Parameters" : {
        "ThingName" : {
            "Type" : "String"
        },
        "SerialNumber" : {
            "Type" : "String"
        },
        "Location" : {
            "Type" : "String",
            "Default" : "WA"
        },
        "CSR" : {
            "Type" : "String"    
        }
    }
}
```

Dieses Vorlagentextfragment deklariert vier Parameter: `ThingName`, `SerialNumber`, `Location` und `CSR`. Alle diese Parameter sind vom Typ `String`. Der Parameter `Location` deklariert den Standardwert `"WA"`.

## Bereich „Ressourcen“
<a name="resources-section"></a>

Im `Resources` Abschnitt des Vorlagentexts werden die Ressourcen deklariert, die für die Kommunikation Ihres Geräts erforderlich sind AWS IoT: eine Sache, ein Zertifikat und eine oder mehrere IoT-Richtlinien. Jede Ressource gibt einen logischen Namen, einen Typ und eine Reihe von Eigenschaften an.

Ein logischer Name ermöglicht den Verweis auf eine Ressource an einer anderen Stelle in der Vorlage.

Der Typ gibt die Art der Ressource an, die Sie deklarieren. Gültige Typen sind:
+ `AWS::IoT::Thing`
+ `AWS::IoT::Certificate`
+ `AWS::IoT::Policy`

Die Eigenschaften, die Sie angeben, hängen vom Typ der Ressource ab, die Sie deklarieren.

### Objektressourcen
<a name="thing-resources"></a>

Objekt-Ressourcen werden mit den folgenden Eigenschaften deklariert:
+ `ThingName`: Zeichenfolge.
+ `AttributePayload`: Optional. Eine Liste von Name-Wert-Paaren.
+ `ThingTypeName`: Optional. Zeichenfolge für einen zugehörigen Objekttyp für das Objekt.
+ `ThingGroups`: Optional. Eine Liste der Gruppen, zu der das Objekt gehört.
+ `BillingGroup`: Optional. Zeichenfolge für den Namen einer zugehörigen Fakturierungsgruppe.
+ `PackageVersions`: Optional. Zeichenfolge für ein zugeordnetes Paket und Versionsnamen.

### Zertifikatressourcen
<a name="certificate-resources"></a>

Sie können Zertifikate auf eine der folgenden Arten angeben:
+ Eine Zertifikatssignierungsanforderung (Certificate Signing Request, CSR).
+ Eine Zertifikat-ID eines vorhandenen Geräte-Zertifikats. (Nur ein Zertifikat IDs kann mit einer Flottenbereitstellungsvorlage verwendet werden.)
+ Ein Geräte-Zertifikat mit einem für AWS IoT registrierten CA-Zertifikat. Wenn Sie über mehr als ein mit demselben Themafeld registriertes CA-Zertifikat verfügen, müssen Sie auch das verwendete CA-Zertifikat eingeben, um das Geräte-Zertifikat zu signieren.

**Anmerkung**  
Wenn Sie ein Zertifikat in einer Vorlage deklarieren, verwenden Sie nur eine dieser Methoden. Wenn Sie z. B. eine Zertifikatsignierungsanforderung (CSR) verwenden, können Sie nicht auch eine Zertifikat-ID oder ein Geräte-Zertifikat angeben. Weitere Informationen finden Sie unter [X.509-Clientzertifikate](x509-client-certs.md). 

Weitere Informationen finden Sie unter [Übersicht zum X.509-Zertifikat](authentication.md#x509-certificate-overview). 

Zertifikat-Ressourcen werden mit den folgenden Eigenschaften deklariert:
+ `CertificateSigningRequest`: Zeichenfolge.
+ `CertificateId`: Zeichenfolge.
+ `CertificatePem`: Zeichenfolge.
+ `CACertificatePem`: Zeichenfolge.
+ `Status`: Optional. Zeichenfolge, die `ACTIVE` oder `INACTIVE` sein kann. Der Standardwert ist ACTIVE.
+ `ThingPrincipalType`: Optional. Zeichenfolge, die die Art der Beziehung zwischen dem Ding und dem Prinzipal (dem Zertifikat) angibt.
  + `EXCLUSIVE_THING`: Stellt eine exklusive Beziehung her. Der Schulleiter kann nur dieser bestimmten Sache zugeordnet werden und keiner anderen.
  + `NON_EXCLUSIVE_THING`: Ordnet den Dingen den angegebenen Prinzipal zu. Sie können mehrere Dinge an den Prinzipal anhängen. Dies ist der Standardwert, falls nicht angegeben.
**Anmerkung**  
Sie können Geräte auch ohne Gerätezertifikate bereitstellen. Weitere Informationen finden Sie unter [Bereitstellen von Geräten ohne Gerätezertifikate mithilfe der Flottenbereitstellung](provision-wo-cert.md).

Beispiele:
+ Zertifikat, das mit einer Zertifikatsignierungsanforderung (CSR) angegeben wird:

  ```
  {
      "certificate" : {
          "Type" : "AWS::IoT::Certificate",
          "Properties" : {
              "CertificateSigningRequest": {"Ref" : "CSR"},
              "Status" : "ACTIVE"      
          }
      }
  }
  ```
+ Zertifikat, das mit einer vorhandenen Zertifikat-ID angegeben wird:

  ```
  {
      "certificate" : {
          "Type" : "AWS::IoT::Certificate",
          "Properties" : {
              "CertificateId": {"Ref" : "CertificateId"}
          }
      }
  }
  ```
+ Zertifikat, das mit der PEM-Datei eines vorhandenen Zertifikats und der PEM-Datei einer vorhandenen Zertifizierungsstelle angegeben wird:

  ```
  {
      "certificate" : {
          "Type" : "AWS::IoT::Certificate",
          "Properties" : {
              "CACertificatePem": {"Ref" : "CACertificatePem"},
              "CertificatePem": {"Ref" : "CertificatePem"}
          }
      }
  }
  ```
+ Ordnen Sie einem Principal ausschließlich eine Sache zu:

  ```
  {
      "certificate" : {
          "Type" : "AWS::IoT::Certificate",
          "Properties" : {
              "ThingPrincipalType" : "EXCLUSIVE_THING"
          }
      }
  }
  ```

### Richtlinienressourcen
<a name="policy-resources"></a>

Richtlinien-Ressourcen werden mit einer der folgenden Eigenschaften deklariert:
+ `PolicyName`: Optional. Zeichenfolge. Standardmäßig eine Prüfsumme des Richtliniendokuments. `PolicyName` kann nur auf AWS IoT -Richtlinien verweisen, nicht jedoch auf IAM-Richtlinien. Wenn Sie eine vorhandene AWS IoT -Richtlinie verwenden, geben Sie für die Eigenschaft `PolicyName` den Namen der Richtlinie ein. Verwenden Sie nicht die Eigenschaft `PolicyDocument`.
+ `PolicyDocument`: Optional. Ein JSON-Objekt, das als Zeichenfolge mit Escapezeichen angegeben wird. Wenn `PolicyDocument` nicht angegeben wird, muss die Richtlinie bereits erstellt worden sein.

**Anmerkung**  
Wenn ein `Policy`-Abschnitt vorhanden ist, muss `PolicyName` oder `PolicyDocument`, nicht aber beide, angegeben werden.

### Überschreibungseinstellungen
<a name="override-settings"></a>

Wenn eine Vorlage eine Ressource angibt, die bereits vorhanden ist, ermöglicht der Abschnitt `OverrideSettings` die Angabe der durchzuführenden Aktion:

`DO_NOTHING`  
Die Ressource unverändert lassen

`REPLACE`  
Die Ressource durch die in der Vorlage angegebene Ressource ersetzen.

`FAIL`  
Die Anfrage mit einer `ResourceConflictsException` fehlschlagen lassen.

`MERGE`  
Dies gilt nur für die Eigenschaften `ThingGroups` und `AttributePayload` eines `thing`. Kombinieren der vorhandenen Attribute oder Gruppenmitgliedschaften des Objekts mit denjenigen, die in der Vorlage spezifiziert sind.

Wenn Sie eine Ding-Ressource deklarieren, können Sie `OverrideSettings` für die folgenden Eigenschaften angeben:
+ `ATTRIBUTE_PAYLOAD`
+ `THING_TYPE_NAME`
+ `THING_GROUPS`

Wenn Sie eine Zertifikat-Ressource deklarieren, können Sie `OverrideSettings` für die `Status`-Eigenschaft angeben.

`OverrideSettings` stehen nicht für Richtlinienressourcen zur Verfügung.

### Ressourcenbeispiel
<a name="resource-example"></a>

Das folgende Vorlagenfragment deklariert ein Objekt, ein Zertifikat und eine Richtlinie:

```
{ 
    "Resources" : {
        "thing" : {
            "Type" : "AWS::IoT::Thing",
            "Properties" : {
                "ThingName" : {"Ref" : "ThingName"},
                "AttributePayload" : { "version" : "v1", "serialNumber" :  {"Ref" : "SerialNumber"}}, 
                "ThingTypeName" :  "lightBulb-versionA",
                "ThingGroups" : ["v1-lightbulbs", {"Ref" : "Location"}]
            },
            "OverrideSettings" : {
                "AttributePayload" : "MERGE",
                "ThingTypeName" : "REPLACE",
                "ThingGroups" : "DO_NOTHING"
            }
        },  
        "certificate" : {
            "Type" : "AWS::IoT::Certificate",
            "Properties" : {
                "CertificateSigningRequest": {"Ref" : "CSR"},
                "Status" : "ACTIVE"      
            }
        },
        "policy" : {
            "Type" : "AWS::IoT::Policy",
            "Properties" : {
                "PolicyDocument" : "{ \"Version\": \"2012-10-17\",		 	 	  \"Statement\": [{ \"Effect\": \"Allow\", \"Action\":[\"iot:Publish\"], \"Resource\": [\"arn:aws:iot:us-east-1:123456789012:topic/foo/bar\"] }] }"
            }
        }
    }
}
```

Das Objekt wird deklariert mit:
+ Dem logischen Namen `"thing"`.
+ Dem Typ `AWS::IoT::Thing`.
+  Einer Reihe von Objekteigenschaften.

  Zu den Objekteigenschaften gehören der Name des Objekts, eine Reihe von Attributen, ein optionaler Name für den Objekttyp sowie eine optionale Liste von Objektgruppen, zu denen das Objekt gehört.

Parameter werden von `{"Ref":"parameter-name"}` referenziert. Wenn die Vorlage evaluiert wird, werden die Parameter durch den Parameterwert aus dem mit der Vorlage eingegebenen Lexikon ersetzt.

Das Zertifikat wird deklariert mit:
+ Dem logischen Namen `"certificate"`.
+ Dem Typ `AWS::IoT::Certificate`.
+ Einer Reihe von Eigenschaften.

  Zu den Eigenschaften gehören die CSR für das Zertifikat und die Einstellung des Status auf `ACTIVE`. Der CSR-Text wird als Parameter in das mit der Vorlage eingegebene Lexikon eingegeben.

Die Richtlinie wird deklariert mit:
+ Dem logischen Namen `"policy"`.
+ Dem Typ `AWS::IoT::Policy`.
+ Dem Namen einer vorhandenen Richtlinie oder dem Richtliniendokument.

## Vorlagenbeispiel für eine Massenregistrierung
<a name="bulk-template-example"></a>

Die folgende JSON-Datei ist ein Beispiel für eine vollständige Bereitstellungsvorlage, die das Zertifikat mit einer Zertifikatsignierungsanforderung angibt:

(Der Feldwert `PolicyDocument` muss ein JSON-Objekt sein, da als Zeichenfolge mit Escapezeichen angegeben wird.)

```
{
    "Parameters" : {
        "ThingName" : {
            "Type" : "String"
        },
        "SerialNumber" : {
            "Type" : "String"
        },
        "Location" : {
            "Type" : "String",
            "Default" : "WA"
        },
        "CSR" : {
            "Type" : "String"    
        }
    },
    "Resources" : {
        "thing" : {
            "Type" : "AWS::IoT::Thing",
            "Properties" : {
                "ThingName" : {"Ref" : "ThingName"},
                "AttributePayload" : { "version" : "v1", "serialNumber" :  {"Ref" : "SerialNumber"}}, 
                "ThingTypeName" :  "lightBulb-versionA",
                "ThingGroups" : ["v1-lightbulbs", {"Ref" : "Location"}]
            }
        },
        "certificate" : {
            "Type" : "AWS::IoT::Certificate",
            "Properties" : {
                "CertificateSigningRequest": {"Ref" : "CSR"},
                "Status" : "ACTIVE",
                "ThingPrincipalType" : "EXCLUSIVE_THING"
            }
        },
        "policy" : {
            "Type" : "AWS::IoT::Policy",
            "Properties" : {
                "PolicyDocument" : "{ \"Version\": \"2012-10-17\",		 	 	  \"Statement\": [{ \"Effect\": \"Allow\", \"Action\":[\"iot:Publish\"], \"Resource\": [\"arn:aws:iot:us-east-1:123456789012:topic/foo/bar\"] }] }"
            }
        }
    }
}
```

## Beispiel für eine Vorlage für die just-in-time Bereitstellung (JITP)
<a name="JITP-template-example"></a>

Die folgende JSON-Datei ist ein Beispiel für eine vollständige Bereitstellungsvorlage, die ein vorhandenes Zertifikat mit einer Zertifikat-ID angibt:

```
{
   "Parameters":{
      "AWS::IoT::Certificate::CommonName":{
         "Type":"String"
      },
      "AWS::IoT::Certificate::SerialNumber":{
         "Type":"String"
      },
      "AWS::IoT::Certificate::Country":{
         "Type":"String"
      },
      "AWS::IoT::Certificate::Id":{
         "Type":"String"
      }
   },
   "Resources":{
      "thing":{
         "Type":"AWS::IoT::Thing",
         "Properties":{
            "ThingName":{
               "Ref":"AWS::IoT::Certificate::CommonName"
            },
            "AttributePayload":{
               "version":"v1",
               "serialNumber":{
                  "Ref":"AWS::IoT::Certificate::SerialNumber"
               }
            },
            "ThingTypeName":"lightBulb-versionA",
            "ThingGroups":[
               "v1-lightbulbs",
               {
                  "Ref":"AWS::IoT::Certificate::Country"
               }
            ]
         },
         "OverrideSettings":{
            "AttributePayload":"MERGE",
            "ThingTypeName":"REPLACE",
            "ThingGroups":"DO_NOTHING"
         }
      },
      "certificate":{
         "Type":"AWS::IoT::Certificate",
         "Properties":{
            "CertificateId":{
               "Ref":"AWS::IoT::Certificate::Id"
            },
            "Status":"ACTIVE",
            "ThingPrincipalType" : "EXCLUSIVE_THING"
         }
      },
      "policy":{
         "Type":"AWS::IoT::Policy",
         "Properties":{
            "PolicyDocument":"{ \"Version\": \"2012-10-17\",		 	 	  \"Statement\": [{ \"Effect\": \"Allow\", \"Action\":[\"iot:Publish\"], \"Resource\": [\"arn:aws:iot:us-east-1:123456789012:topic/foo/bar\"] }] }"
         }
      }
   }
}
```

**Wichtig**  
Sie müssen `CertificateId` in einer Vorlage verwenden, die für die JIT-Bereitstellung verwendet wird.

Weitere Informationen zum Typ einer Bereitstellungsvorlage finden Sie [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html#iot-CreateProvisioningTemplate-request-type](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html#iot-CreateProvisioningTemplate-request-type)in der AWS API-Referenz.

Weitere Informationen zur Verwendung dieser Vorlage für die Bereitstellung finden Sie unter: [J just-in-time ust-in-time](https://docs.aws.amazon.com/iot/latest/developerguide/jit-provisioning.html) Provisioning.

## Flottenbereitstellung
<a name="fleet-provision-template"></a>

Vorlagen für die Flottenbereitstellung werden von verwendet AWS IoT , um die Cloud- und Gerätekonfiguration einzurichten. Diese Vorlagen verwenden dieselben Parameter und Ressourcen wie die JITP- und Massenregistrierungsvorlagen. Weitere Informationen finden Sie unter [Bereitstellungsvorlagen](#provision-template). Flottenbereitstellungsvorlagen können einen `Mapping`-Abschnitt und einen `DeviceConfiguration`-Abschnitt enthalten. Sie können intrinsische Funktionen innerhalb einer Flottenbereitstellungsvorlage verwenden, um die gerätespezifische Konfiguration zu generieren. Vorlagen für die Flottenbereitstellung werden als Ressourcen bezeichnet und sind gekennzeichnet durch ARNs (z. B.`arn:aws:iot:us-west-2:1234568788:provisioningtemplate/templateName`).

### Mappings
<a name="mappings"></a>

Im optionalen Abschnitt `Mappings` werden Schlüssel einem Satz benannter Werte zugewiesen. Wenn Sie beispielsweise Werte auf der Grundlage einer AWS Region festlegen möchten, können Sie eine Zuordnung erstellen, die den AWS-Region Namen als Schlüssel verwendet und die Werte enthält, die Sie für jede spezifische Region angeben möchten. Zum Abrufen von Werten aus einer Karte nutzen Sie die intrinsische Funktion `Fn::FindInMap`.

Im Abschnitt `Mappings` dürfen keine Parameter, Pseudoparameter verwendet oder intrinsische Funktionen aufgerufen werden.

### Gerätekonfiguration
<a name="device-config"></a>

Der Abschnitt „Gerätekonfiguration“ enthält beliebige Daten, die Sie bei der Bereitstellung an Ihre Geräte senden möchten. Beispiel: 

```
{
    "DeviceConfiguration": {
        "Foo":"Bar"
    }
}
```

Wenn Sie Nachrichten mithilfe des Payload-Formats JavaScript Object Notation (JSON) an Ihre Geräte senden, AWS IoT Core formatieren Sie diese Daten als JSON. Wenn Sie das Payload-Format Concise Binary Object Representation (CBOR) verwenden, AWS IoT Core formatiert Sie diese Daten als CBOR. Der Abschnitt `DeviceConfiguration` unterstützt keine verschachtelten JSON-Objekte.

### Intrinsische Funktionen
<a name="intrinsic-functions"></a>

Intrinsische Funktionen werden in jedem Abschnitt der Bereitstellungsvorlage mit Ausnahme des `Mappings`-Abschnitts verwendet.

`Fn::Join`  
Fügt einem einzelnen Wert eine Gruppe von Werten getrennt durch das angegebene Trennzeichen an. Wenn das Trennzeichen eine leere Zeichenfolge ist, dann werden die Werte ohne Trennzeichen verkettet.  
`Fn::Join` wird nicht für [Richtlinienressourcen](#policy-resources) unterstützt.

`Fn::Select`  
Gibt ein einzelnes Objekt aus einer Liste von Objekten nach Index zurück.  
`Fn::Select` überprüft nicht auf `null`-Werte oder ob sich der Index außerhalb des Arrays befindet. Beide Bedingungen führen zu einem Bereitstellungsfehler. Stellen Sie daher sicher, dass Sie einen gültigen Indexwert ausgewählt haben und die Liste Werte enthält, die nicht Null sind.

`Fn::FindInMap`  
Gibt die Werte von Schlüsseln in einer Zwei-Ebenen-Karte zurück, die im Abschnitt `Mappings` deklariert ist.

`Fn::Split`  
Teilt eine Zeichenfolge in eine Liste von Zeichenfolgenwerten auf, sodass Sie ein Element aus der Liste der Zeichenfolgen auswählen können. Sie geben ein Trennzeichen an, das bestimmt, wo die Zeichenfolge geteilt wird (z. B. ein Komma). Nachdem Sie eine Zeichenfolge geteilt haben, verwenden Sie `Fn::Select`, um ein Element auszuwählen.  
Wenn beispielsweise eine durch Kommas getrennte Zeichenfolge eines Subnetzes in Ihre Stack-Vorlage importiert IDs wird, können Sie die Zeichenfolge bei jedem Komma aufteilen. Verwenden Sie diese Option aus der Subnetzliste IDs, um eine Subnetz-ID `Fn::Select` für eine Ressource anzugeben.

`Fn::Sub`  
Sie können Variablen in einer Eingabezeichenfolge mit Werten ersetzen, die Sie angeben. Sie können diese Funktion verwenden, um Befehle oder Ausgaben mit Werten zu erstellen, die erst verfügbar sind, wenn Sie ein Stack erstellen oder aktualisieren.

### Beispiel einer Flottenbereitstellungsvorlage
<a name="fleet-provisioning-example"></a>

```
{
    "Parameters" : {
        "ThingName" : {
            "Type" : "String"
        },
        "SerialNumber": {
            "Type": "String"
        },
        "DeviceLocation": {
            "Type": "String"
        }
    },
    "Mappings": {
        "LocationTable": {
            "Seattle": {
                "LocationUrl": "https://example.aws"
            }
        }
    },
    "Resources" : {
        "thing" : {
            "Type" : "AWS::IoT::Thing",
            "Properties" : {
                "AttributePayload" : { 
                    "version" : "v1",
                    "serialNumber" : "serialNumber"
                },
                "ThingName" : {"Ref" : "ThingName"},
                "ThingTypeName" : {"Fn::Join":["",["ThingPrefix_",{"Ref":"SerialNumber"}]]},
                "ThingGroups" : ["v1-lightbulbs", "WA"],
                "BillingGroup": "LightBulbBillingGroup"
            },
            "OverrideSettings" : {
                "AttributePayload" : "MERGE",
                "ThingTypeName" : "REPLACE",
                "ThingGroups" : "DO_NOTHING"
            }
        },
        "certificate" : {
            "Type" : "AWS::IoT::Certificate",
            "Properties" : {
                "CertificateId": {"Ref": "AWS::IoT::Certificate::Id"},
                "Status" : "Active",
                "ThingPrincipalType" : "EXCLUSIVE_THING"
            }
        },
        "policy" : {
            "Type" : "AWS::IoT::Policy",
            "Properties" : {
                "PolicyDocument" : {
                    "Version": "2012-10-17",		 	 	 
                    "Statement": [{
                        "Effect": "Allow",
                        "Action":["iot:Publish"],
                        "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/foo/bar"]
                    }]
                }
            }
        }
    },
    "DeviceConfiguration": {
        "FallbackUrl": "https://www.example.com/test-site",
        "LocationUrl": {
            "Fn::FindInMap": ["LocationTable",{"Ref": "DeviceLocation"}, "LocationUrl"]}
        }
}
```

**Anmerkung**  
Eine vorhandene Bereitstellungsvorlage kann aktualisiert werden, um einen [Pre-Provisioning-Hook](pre-provisioning-hook.md) hinzuzufügen.

# Pre-Provisioning-Hooks
<a name="pre-provisioning-hook"></a>

AWS empfiehlt, bei der Erstellung von Provisioning-Vorlagen Hook-Funktionen vor der Bereitstellung zu verwenden, um mehr Kontrolle darüber zu haben, welche und wie viele Geräte Ihr Konto integriert. Pre-Provisioning-Hooks sind Lambda-Funktionen, die vom Gerät übergebene Parameter überprüfen, bevor das Gerät bereitgestellt werden kann. Diese Lambda-Funktion muss in Ihrem Konto vorhanden sein, bevor Sie ein Gerät bereitstellen, da sie jedes Mal aufgerufen wird, wenn ein Gerät eine Anfrage über [RegisterThing](fleet-provision-api.md#register-thing) sendet.

**Wichtig**  
Achten Sie darauf, das `source-arn` oder `source-account` in die globalen Bedingungskontextschlüssel der Richtlinien aufzunehmen, die mit Ihrer Lambda-Aktion verknüpft sind, damit Berechtigungen nicht manipuliert werden können. Weitere Informationen hierzu finden Sie unter [Serviceübergreifende Confused-Deputy-Prävention](cross-service-confused-deputy-prevention.md).

Damit Geräte bereitgestellt werden können, muss Ihre Lambda-Funktion das Eingabeobjekt akzeptieren und das in diesem Abschnitt beschriebene Ausgabeobjekt zurückgeben. Die Bereitstellung wird nur fortgesetzt, wenn die Lambda-Funktion ein Objekt mit `"allowProvisioning": True` zurückgibt.

## Pre-Provisioning-Hook-Eingabe
<a name="pre-provisioning-hook-input"></a>

AWS IoT sendet dieses Objekt an die Lambda-Funktion, wenn sich ein Gerät bei AWS IoT registriert.

```
{
    "claimCertificateId" : "string",
    "certificateId" : "string",
    "certificatePem" : "string",
    "templateArn" : "arn:aws:iot:us-east-1:1234567890:provisioningtemplate/MyTemplate",
    "clientId" : "221a6d10-9c7f-42f1-9153-e52e6fc869c1",
    "parameters" : {
        "string" : "string",
        ...
    }
}
```

Das an die Lambda-Funktion übergebene `parameters`-Objekt enthält die Eigenschaften im `parameters`-Argument, das in der [RegisterThing](fleet-provision-api.md#register-thing)-Anforderungsnutzlast übergeben wird. 

## Pre-Provisioning-Hook-Rückgabewert
<a name="pre-provisioning-hook-output"></a>

Die Lambda-Funktion muss eine Antwort zurückgeben, die angibt, ob sie die Bereitstellungsanforderung und die Werte der zu überschreibenden Eigenschaften autorisiert hat.

Im Folgenden finden Sie ein Beispiel für eine erfolgreiche Antwort der Pre-Provisioning-Funktion.

```
{
    "allowProvisioning": true,
    "parameterOverrides" : {
        "Key": "newCustomValue",
        ...
    }
}
```

`"parameterOverrides"`-Werte werden dem Parameter `"parameters"` in der [RegisterThing](fleet-provision-api.md#register-thing)-Anforderungsnutzlast hinzugefügt.

**Anmerkung**  
Wenn die Lambda-Funktion fehlschlägt, schlägt die Bereitstellungsanforderung fehl `ACCESS_DENIED` und ein Fehler wird in Logs protokolliert. CloudWatch 
Wenn die Lambda-Funktion in der Antwort nicht `"allowProvisioning": "true"` zurückgibt, schlägt die Bereitstellungsanforderung mit `ACCESS_DENIED` fehl.
Die Lambda-Funktion muss die Ausführung beenden und innerhalb von 5 Sekunden zurückgeben, andernfalls schlägt die Bereitstellungsanforderung fehl.

## Lambda-Beispiel für einen Pre-Provisioning-Hook
<a name="pre-provisioning-example"></a>

------
#### [ Python ]

Ein Beispiel für einen Pre-Provisioning-Hook ist Lambda in Python.

```
import json

def pre_provisioning_hook(event, context):
    print(event)

    return {
        'allowProvisioning': True,
        'parameterOverrides': {
            'DeviceLocation': 'Seattle'
        }
    }
```

------
#### [ Java ]

Ein Beispiel für einen Pre-Provisioning-Hook ist Lambda in Java.

Handler-Klasse

```
package example;

import java.util.Map;
import java.util.HashMap;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class PreProvisioningHook implements RequestHandler<PreProvisioningHookRequest, PreProvisioningHookResponse> {

    public PreProvisioningHookResponse handleRequest(PreProvisioningHookRequest object, Context context) {
        Map<String, String> parameterOverrides = new HashMap<String, String>();
        parameterOverrides.put("DeviceLocation", "Seattle");

        PreProvisioningHookResponse response = PreProvisioningHookResponse.builder()
                .allowProvisioning(true)
                .parameterOverrides(parameterOverrides)
                .build();

        return response;
    }

}
```

Anforderungsklasse:

```
package example;

import java.util.Map;
import lombok.Builder;
import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PreProvisioningHookRequest {
    private String claimCertificateId;
    private String certificateId;
    private String certificatePem;
    private String templateArn;
    private String clientId;
    private Map<String, String> parameters;
}
```

Response-Klasse:

```
package example;

import java.util.Map;
import lombok.Builder;
import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;


@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PreProvisioningHookResponse {
    private boolean allowProvisioning;
    private Map<String, String> parameterOverrides;
}
```

------
#### [ JavaScript ]

Ein Beispiel für einen Pre-Provisioning-Hook Lambda in. JavaScript

```
exports.handler = function(event, context, callback) {
    console.log(JSON.stringify(event, null, 2));
    var reply = { 
        allowProvisioning: true,
        parameterOverrides: {
            DeviceLocation: 'Seattle'
        }
     };
     callback(null, reply);
}
```

------

# Selbstverwaltete Zertifikatsignierung mithilfe des Zertifikatsanbieters AWS IoT Core
<a name="provisioning-cert-provider"></a>

Sie können einen AWS IoT Core Zertifikatsanbieter erstellen, um Zertifikatssignieranfragen (CSRs) bei der AWS IoT Flottenbereitstellung zu signieren. Ein Zertifikatsanbieter verweist auf eine Lambda-Funktion und die [`CreateCertificateFromCsr`MQTT-API für die Flottenbereitstellung](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr). Die Lambda-Funktion akzeptiert eine CSR und gibt ein signiertes Client-Zertifikat zurück.

Wenn Sie keinen Zertifikatsanbieter bei sich haben AWS-Konto, wird die [CreateCertificateFromCsr MQTT-API](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) bei der Flottenbereitstellung aufgerufen, um das Zertifikat aus einer CSR zu generieren. Nachdem Sie einen Zertifikatsanbieter erstellt haben, ändert sich das Verhalten der [CreateCertificateFromCsr MQTT-API](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) und alle Aufrufe dieser MQTT-API rufen den Zertifikatsanbieter auf, um das Zertifikat auszustellen.

Mit dem AWS IoT Core Zertifikatsanbieter können Sie Lösungen implementieren, die private Zertifizierungsstellen (CAs) wie [AWS Private CA](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html)andere öffentlich vertrauenswürdige oder Ihre eigene Public Key Infrastructure (PKI) verwenden CAs, um die CSR zu signieren. Darüber hinaus können Sie den Zertifikatsanbieter verwenden, um die Felder Ihres Client-Zertifikats wie Gültigkeitszeiträume, Signaturalgorithmen, Aussteller und Erweiterungen anzupassen.

**Wichtig**  
Sie können jeweils nur einen Zertifikatsanbieter erstellen. AWS-Konto Die Änderung des Signierverhaltens gilt für die gesamte Flotte, die die [CreateCertificateFromCsr MQTT-API](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) aufruft, bis Sie den Zertifikatsanbieter aus Ihrem AWS-Konto löschen.

**Topics**
+ [So funktioniert die selbstverwaltete Zertifikatsignierung bei der Flottenbereitstellung](#provisioning-cert-provider-how-it-works)
+ [Eingabe der Lambda-Funktion des Zertifikatsanbieters](#provisioning-cert-provider-lambda-input)
+ [Rückgabewert der Lambda-Funktion des Zertifikatsanbieters](#provisioning-cert-provider-lambda-return)
+ [Beispiel-Lambda-Funktion](#provisioning-cert-provider-lambda)
+ [Selbstverwaltete Zertifikatsignierung für die Flottenbereitstellung](#provisioning-self-certificate-signing)
+ [AWS CLI Befehle für den Zertifikatsanbieter](#provisioning-cert-provider-cli)

## So funktioniert die selbstverwaltete Zertifikatsignierung bei der Flottenbereitstellung
<a name="provisioning-cert-provider-how-it-works"></a>

### Die wichtigsten Konzepte
<a name="provisioning-cert-provider-concepts"></a>

Die folgenden Konzepte enthalten Einzelheiten, anhand derer Sie verstehen können, wie die selbstverwaltete Zertifikatsignierung bei der Flottenbereitstellung funktioniert. AWS IoT Weitere Informationen finden Sie unter [Bereitstellen von Geräten ohne Gerätezertifikate mithilfe von Fleet Provisioning](https://docs.aws.amazon.com//iot/latest/developerguide/provision-wo-cert.html).

**AWS IoT Flottenbereitstellung**  
Mit AWS IoT Fleet Provisioning (kurz für Fleet Provisioning) werden Gerätezertifikate AWS IoT Core generiert und sicher an Ihre Geräte gesendet, wenn diese AWS IoT Core zum ersten Mal eine Verbindung herstellen. Sie können Fleet Provisioning verwenden, um Geräte ohne Gerätezertifikate mit zu verbinden. AWS IoT Core

**Anfrage zum Signieren eines Zertifikats (CSR)**  
Bei der Flottenbereitstellung stellt ein Gerät eine Anfrage an das MQTT für die AWS IoT Core [Flottenbereitstellung](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html). APIs Diese Anfrage beinhaltet eine Certificate Signing Request (CSR), die signiert wird, um ein Client-Zertifikat zu erstellen. 

**AWS verwaltete Zertifikatsignierung bei der Flottenbereitstellung**  
AWS managed ist die Standardeinstellung für das Signieren von Zertifikaten bei der Flottenbereitstellung. Bei AWS verwalteter Zertifikatsignierung AWS IoT Core wird die Signatur CSRs mit eigener CAs Signatur signiert.

**Selbstverwaltetes Signieren von Zertifikaten bei der Flottenbereitstellung**  
Selbstverwaltung ist eine weitere Option für die Zertifikatsignierung bei der Flottenbereitstellung. Mit der selbstverwalteten Zertifikatsignierung erstellen Sie einen AWS IoT Core Zertifikatsanbieter zum Signieren. CSRs Sie können die selbstverwaltete Zertifikatsignierung verwenden, um CSRs mit einer Zertifizierungsstelle zu signieren, die von einer AWS privaten Zertifizierungsstelle, einer anderen öffentlich vertrauenswürdigen Zertifizierungsstelle oder Ihrer eigenen Public Key Infrastructure (PKI) generiert wurde.

**AWS IoT Core Zertifikatsanbieter**  
AWS IoT Core Der Zertifikatsanbieter (kurz für Certificate Provider) ist eine vom Kunden verwaltete Ressource, die für die selbstverwaltete Signierung von Zertifikaten bei der Flottenbereitstellung verwendet wird.

### Diagramm
<a name="provisioning-cert-provider-diagram"></a>

Das folgende Diagramm zeigt in vereinfachter Form, wie das Signieren von Selbstzertifikaten bei der AWS IoT Flottenbereitstellung funktioniert.

![\[AWS IoT Core Anbieter von Zertifikaten für die Bereitstellung von Flotten\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/provisioning-cert-provider.png)

+ Wenn ein neues IoT-Gerät hergestellt oder in die Flotte eingeführt wird, benötigt es Kundenzertifikate, mit AWS IoT Core denen es sich authentifizieren kann.
+ Im Rahmen des Flottenbereitstellungsprozesses fordert das Gerät über das AWS IoT Core [Flottenbereitstellungs-MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html) Kundenzertifikate an. APIs Diese Anfrage beinhaltet eine Certificate Signing Request (CSR).
+ AWS IoT Core ruft den Zertifikatsanbieter auf und übergibt die CSR als Eingabe an den Anbieter.
+ Der Zertifikatsanbieter verwendet die CSR als Eingabe und stellt ein Client-Zertifikat aus.

  Signiert beim Signieren AWS verwalteter Zertifikate die CSR mit AWS IoT Core einer eigenen Zertifizierungsstelle und stellt ein Client-Zertifikat aus.
+ Mit dem ausgestellten Client-Zertifikat setzt das Gerät die Flottenbereitstellung fort und stellt eine sichere Verbindung mit her. AWS IoT Core

## Eingabe der Lambda-Funktion des Zertifikatsanbieters
<a name="provisioning-cert-provider-lambda-input"></a>

AWS IoT Core sendet das folgende Objekt an die Lambda-Funktion, wenn sich ein Gerät bei ihr registriert. Der Wert von `certificateSigningRequest` ist die CSR im [PEM-Format (Privacy-Enhanced Mail)](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-format.html), die in der Anfrage angegeben ist. `CreateCertificateFromCsr` Das `principalId` ist die ID des Prinzipals, mit dem bei der Anfrage eine Verbindung hergestellt wurde. AWS IoT Core `CreateCertificateFromCsr` `clientId`ist die Client-ID, die für die MQTT-Verbindung festgelegt wurde.

```
{
	"certificateSigningRequest": "string",
	"principalId": "string",
	"clientId": "string"
}
```

## Rückgabewert der Lambda-Funktion des Zertifikatsanbieters
<a name="provisioning-cert-provider-lambda-return"></a>

Die Lambda-Funktion muss eine Antwort zurückgeben, die den `certificatePem` Wert enthält. Das Folgende ist ein Beispiel für eine erfolgreiche Antwort. AWS IoT Core verwendet den Rückgabewert (`certificatePem`), um das Zertifikat zu erstellen.

```
{
	"certificatePem": "string"
}
```

Wenn die Registrierung erfolgreich ist, `CreateCertificateFromCsr` wird dasselbe `certificatePem` in der `CreateCertificateFromCsr` Antwort zurückgegeben. Weitere Informationen finden Sie im Beispiel für die Antwort-Payload von [CreateCertificateFromCsr](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr).

## Beispiel-Lambda-Funktion
<a name="provisioning-cert-provider-lambda"></a>

Bevor Sie einen Zertifikatsanbieter erstellen, müssen Sie eine Lambda-Funktion erstellen, um eine CSR zu signieren. Das Folgende ist ein Beispiel für eine Lambda-Funktion in Python. Diese Funktion ruft AWS Private CA auf, um die Eingabe-CSR unter Verwendung einer privaten Zertifizierungsstelle und des `SHA256WITHRSA` Signaturalgorithmus zu signieren. Das zurückgegebene Client-Zertifikat ist ein Jahr lang gültig. Weitere Informationen zu AWS Private CA und zum Erstellen einer privaten Zertifizierungsstelle finden Sie unter [Was ist eine AWS private Zertifizierungsstelle?](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) und [Eine private CA erstellen](https://docs.aws.amazon.com/privateca/latest/userguide/create-CA.html).

```
import os
import time
import uuid
import boto3

def lambda_handler(event, context):
    ca_arn = os.environ['CA_ARN']
    csr = (event['certificateSigningRequest']).encode('utf-8')

    acmpca = boto3.client('acm-pca')
    cert_arn = acmpca.issue_certificate(
        CertificateAuthorityArn=ca_arn, 
        Csr=csr,
        Validity={"Type": "DAYS", "Value": 365}, 
        SigningAlgorithm='SHA256WITHRSA',
        IdempotencyToken=str(uuid.uuid4())
    )['CertificateArn']
    
    # Wait for certificate to be issued
    time.sleep(1)    
    cert_pem = acmpca.get_certificate(
        CertificateAuthorityArn=ca_arn,
        CertificateArn=cert_arn
    )['Certificate']
    
    return {
        'certificatePem': cert_pem
    }
```

**Wichtig**  
Von der Lambda-Funktion zurückgegebene Zertifikate müssen denselben Betreffnamen und denselben öffentlichen Schlüssel haben wie die Certificate Signing Request (CSR).
Die Lambda-Funktion muss in 5 Sekunden fertig ausgeführt werden.
Die Lambda-Funktion muss sich in derselben AWS-Konto Region wie die Ressource des Zertifikatsanbieters befinden.
Dem AWS IoT Dienstprinzipal muss die Aufrufberechtigung für die Lambda-Funktion erteilt werden. Um [verwirrende Probleme mit Stellvertretern](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html) zu vermeiden, empfehlen wir Ihnen, die Zugriffsberechtigungen `sourceArn` und `sourceAccount` für das Aufrufen festzulegen. Weitere Informationen finden Sie unter [Vermeidung des dienstübergreifenden Confused-Deputy-Problems](https://docs.aws.amazon.com//iot/latest/developerguide/cross-service-confused-deputy-prevention.html).

Das folgende Beispiel für eine ressourcenbasierte Richtlinie für [Lambda](https://docs.aws.amazon.com//lambda/latest/dg/access-control-resource-based.html) gewährt AWS IoT die Erlaubnis, die Lambda-Funktion aufzurufen:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Id": "InvokePermission",
	"Statement": [
		{
			"Sid": "LambdaAllowIotProvider",
			"Effect": "Allow",
			"Principal": {
				"Service": "iot.amazonaws.com"
			},
			"Action": "lambda:InvokeFunction",
			"Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
			"Condition": {
				"StringEquals": {
					"AWS:SourceAccount": "123456789012"
				},
				"ArnLike": {
				"AWS:SourceArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider/my-certificate-provider"
				}
			}
		}
	]
}
```

## Selbstverwaltete Zertifikatsignierung für die Flottenbereitstellung
<a name="provisioning-self-certificate-signing"></a>

Sie können die selbstverwaltete Zertifikatssignierung für die Flottenbereitstellung mithilfe von oder auswählen. AWS CLI AWS-Managementkonsole

### AWS CLI
<a name="provisioning-self-certificate-signing-cli"></a>

Um die selbstverwaltete Zertifikatsignierung zu wählen, müssen Sie einen AWS IoT Core Zertifikatsanbieter für die Anmeldung CSRs bei Fleet Provisioning erstellen. AWS IoT Core ruft den Zertifikatsanbieter auf, der eine CSR als Eingabe verwendet und ein Client-Zertifikat zurückgibt. Verwenden Sie den `CreateCertificateProvider` API-Vorgang oder den `create-certificate-provider` CLI-Befehl, um einen Zertifikatsanbieter zu erstellen.

**Anmerkung**  
Nachdem Sie einen Zertifikatsanbieter erstellt haben, ändert sich das Verhalten der [`CreateCertificateFromCsr`API für die Flottenbereitstellung](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr), sodass bei allen Aufrufen von der Zertifikatsanbieter zur Erstellung der Zertifikate aufgerufen `CreateCertificateFromCsr` wird. Es kann einige Minuten dauern, bis sich dieses Verhalten ändert, nachdem ein Zertifikatsanbieter erstellt wurde.

```
aws iot create-certificate-provider \
                --certificateProviderName my-certificate-provider \
                --lambdaFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function-1 \
                --accountDefaultForOperations CreateCertificateFromCsr
```

Im Folgenden wird eine Beispielausgabe für diesen Befehl gezeigt:

```
{
	"certificateProviderName": "my-certificate-provider",
	"certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider"
}
```

Weitere Informationen finden Sie in `[CreateCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateProvider.html)` der *AWS IoT**API-Referenz*.

### AWS-Managementkonsole
<a name="provisioning-self-certificate-signing-console"></a>

Gehen Sie wie folgt vor AWS-Managementkonsole, um die selbstverwaltete Zertifikatsignierung mithilfe von auszuwählen:

1. Rufen Sie die [AWS IoT -Konsole](https://console.aws.amazon.com//iot/home) auf.

1. Wählen Sie in der linken Navigationsleiste unter **Sicherheit** die Option **Zertifikatsignierung** aus.

1. Wählen Sie auf der Seite **Zertifikatsignierung** unter **Details zur Zertifikatsignierung** die Option **Zertifikatsignierungsmethode bearbeiten** aus.

1. Wählen Sie auf der Seite **Zertifikatsignierungsmethode bearbeiten** unter **Zertifikatsignierungsmethode** die Option **Selbstverwaltet** aus.

1. Geben Sie im Abschnitt **Selbstverwaltete Einstellungen** einen Namen für den Zertifikatsanbieter ein und erstellen Sie dann eine Lambda-Funktion oder wählen Sie sie aus.

1. Wählen Sie **Zertifikatsignierung aktualisieren**.

## AWS CLI Befehle für den Zertifikatsanbieter
<a name="provisioning-cert-provider-cli"></a>

### Zertifikatsanbieter erstellen
<a name="provisioning-create-cert-provider"></a>

Verwenden Sie den `CreateCertificateProvider` API-Vorgang oder den `create-certificate-provider` CLI-Befehl, um einen Zertifikatsanbieter zu erstellen. 

**Anmerkung**  
Nachdem Sie einen Zertifikatsanbieter erstellt haben, ändert sich das Verhalten der [`CreateCertificateFromCsr`API für die Flottenbereitstellung](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr), sodass bei allen Aufrufen von der Zertifikatsanbieter zur Erstellung der Zertifikate aufgerufen `CreateCertificateFromCsr` wird. Es kann einige Minuten dauern, bis sich dieses Verhalten ändert, nachdem ein Zertifikatsanbieter erstellt wurde.

```
aws iot create-certificate-provider \
                --certificateProviderName my-certificate-provider \
                --lambdaFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function-1 \
                --accountDefaultForOperations CreateCertificateFromCsr
```

Im Folgenden wird eine Beispielausgabe für diesen Befehl gezeigt:

```
{
	"certificateProviderName": "my-certificate-provider",
	"certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider"
}
```

Weitere Informationen finden Sie in `[CreateCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateProvider.html)` der *AWS IoT**API-Referenz*.

### Aktualisieren Sie den Zertifikatsanbieter
<a name="provisioning-update-cert-provider"></a>

Verwenden Sie den `UpdateCertificateProvider` API-Vorgang oder den `update-certificate-provider` CLI-Befehl, um einen Zertifikatsanbieter zu aktualisieren.

```
aws iot update-certificate-provider \
                --certificateProviderName my-certificate-provider \
                --lambdaFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function-2 \
                --accountDefaultForOperations CreateCertificateFromCsr
```

Im Folgenden wird eine Beispielausgabe für diesen Befehl gezeigt:

```
{
	"certificateProviderName": "my-certificate-provider",
	"certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider"
}
```

Weitere Informationen finden Sie in `[UpdateCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateCertificateProvider.html)` der *AWS IoT**API-Referenz*.

### Beschreiben Sie den Zertifikatsanbieter
<a name="provisioning-describe-cert-provider"></a>

Verwenden Sie die `DescribeCertificateProvider` API-Operation oder den `describe-certificate-provider` CLI-Befehl, um einen Zertifikatsanbieter zu beschreiben.

```
aws iot describe-certificate-provider --certificateProviderName my-certificate-provider
```

Im Folgenden wird eine Beispielausgabe für diesen Befehl gezeigt:

```
{
	"certificateProviderName": "my-certificate-provider",
	"lambdaFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
	"accountDefaultForOperations": [
		"CreateCertificateFromCsr"
	],
	"creationDate": "2022-11-03T00:15",
	"lastModifiedDate": "2022-11-18T00:15"
}
```

Weitere Informationen finden Sie in `[DescribeCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_DescribeCertificateProvider.html)` der *AWS IoT**API-Referenz*.

### Löschen Sie den Zertifikatsanbieter
<a name="provisioning-delete-cert-provider"></a>

Verwenden Sie den `DeleteCertificateProvider` API-Vorgang oder den `delete-certificate-provider` CLI-Befehl, um einen Zertifikatsanbieter zu löschen. Wenn Sie die Ressource des Zertifikatsanbieters löschen, `CreateCertificateFromCsr` wird das Verhalten von wieder aufgenommen und AWS IoT es werden Zertifikate erstellt, die AWS IoT von einer CSR signiert wurden.

```
aws iot delete-certificate-provider --certificateProviderName my-certificate-provider
```

Dieser Befehl liefert keine Ausgabe. 

Weitere Informationen finden Sie in `[DeleteCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_DeleteCertificateProvider.html)` der *AWS IoT**API-Referenz.*

### Zertifikatsanbieter auflisten
<a name="provisioning-list-cert-provider"></a>

Verwenden Sie die `ListCertificateProviders` API-Operation oder den `list-certificate-providers` CLI-Befehl AWS-Konto, um die Zertifikatsanbieter in Ihrem aufzulisten.

```
aws iot list-certificate-providers
```

Im Folgenden wird eine Beispielausgabe für diesen Befehl gezeigt:

```
{
	"certificateProviders": [
		{
			"certificateProviderName": "my-certificate-provider",
			"certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider"
		}
	]
}
```

Weitere Informationen finden Sie in [https://docs.aws.amazon.com//iot/latest/apireference/API_ListCertificateProviders.html](https://docs.aws.amazon.com//iot/latest/apireference/API_ListCertificateProviders.html)der *AWS IoT**API-Referenz*.

# Erstellen von IAM-Richtlinien und -Rollen für Benutzer, die ein Gerät installieren
<a name="provision-create-role"></a>

**Anmerkung**  
Diese Verfahren dürfen nur verwendet werden, wenn Sie von der AWS IoT Konsole dazu aufgefordert werden.  
Öffnen Sie [Neue Bereitstellungsvorlage erstellen](https://console.aws.amazon.com//iot/home#/provisioningtemplate/create/provisioningmethods/trustedUser), um von der Konsole aus zu dieser Seite zu gelangen.

## Warum kann das nicht in der AWS IoT Konsole gemacht werden?
<a name="provision-create-role-why"></a>

IAM-Aktionen werden aus Sicherheitsgründen in der IAM-Konsole ausgeführt. Die Verfahren in diesem Abschnitt führen Sie durch die Schritte zum Erstellen der IAM-Rollen und -Richtlinien, die für die Verwendung der Bereitstellungsvorlage erforderlich sind.

## Erstellen einer IAM-Richtlinie für Benutzer, die ein Gerät installieren werden
<a name="provision-create-role-policy"></a>

In diesem Verfahren wird beschrieben, wie Sie eine IAM-Richtlinie erstellen, die Benutzer autorisiert, ein Gerät mithilfe einer Bereitstellungsvorlage zu installieren.

Während Sie dieses Verfahren ausführen, wechseln Sie zwischen der IAM-Konsole und der AWS IoT Konsole. Wir empfehlen, während dieses Verfahrens beide Konsolen gleichzeitig zu öffnen.

**Erstellen einer IAM-Richtlinie für Benutzer, die ein Gerät installieren werden**

1. Öffnen Sie das [Richtlinien-Hub in der IAM-Konsole](https://console.aws.amazon.com//iamv2/home#/policies).

1. Wählen Sie **Richtlinie erstellen** aus.

1. Wählen Sie auf der Seite **Richtlinie erstellen** die Registerkarte **JSON** aus.

1. Wechseln Sie zu der Seite in der AWS IoT Konsole, auf der Sie **Benutzerrichtlinie und Rolle konfigurieren** ausgewählt haben.

1. Wählen Sie in der **Beispiel-Bereitstellungsrichtlinie** die Option **Kopieren**.

1. Wechseln Sie zurück zur IAM-Konsole.

1. Fügen Sie im **JSON-Editor** die Richtlinie ein, die Sie aus der AWS IoT Konsole kopiert haben. Diese Richtlinie ist spezifisch für die Vorlage, die Sie in der AWS IoT Konsole erstellen.

1. Wählen Sie **Weiter: Tags**, um fortzufahren.

1. Wählen Sie auf der Seite **Tags hinzufügen (optional)** für jedes Tag, das Sie zu dieser Richtlinie hinzufügen möchten, die Option **Tag hinzufügen** aus. Diesen Schritt können Sie überspringen, wenn Sie keine Tags hinzufügen möchten.

1. Wählen Sie **Weiter: Überprüfung**, um fortzufahren.

1. Führen Sie auf der Seite **Richtlinie überprüfen** die folgenden Schritte aus:

   1. Geben Sie unter **Name\$1** einen Namen für die Richtlinie ein, der Sie an den Zweck der Richtlinie erinnert.

      Notieren Sie sich den Namen, den Sie dieser Richtlinie geben, da Sie ihn im nächsten Verfahren benötigen werden.

   1. Optional können Sie eine Beschreibung für die Richtlinie eingeben, die Sie erstellen.

   1. Lesen Sie sich den Rest dieser Richtlinie und ihrer Tags durch.

1. Wählen Sie **Richtlinie erstellen**, um Ihre Richtlinie zu erstellen.

Nachdem Sie Ihre neue Richtlinie erstellt haben, fahren Sie mit [Erstellen einer IAM-Rolle für Benutzer, die ein Gerät installieren werden](#provision-create-role-role) fort, um den Rolleneintrag der Benutzer zu erstellen, denen Sie diese Richtlinie anhängen.

## Erstellen einer IAM-Rolle für Benutzer, die ein Gerät installieren werden
<a name="provision-create-role-role"></a>

In diesen Schritten wird beschrieben, wie Sie eine IAM-Rolle erstellen, die die Benutzer authentifiziert, die ein Gerät mithilfe einer Bereitstellungsvorlage installieren.

**Erstellen einer IAM-Richtlinie für Benutzer, die ein Gerät installieren werden**

1. Öffnen Sie die Seite [Rollen-Hub in der IAM-Konsole](https://console.aws.amazon.com//iamv2/home#/roles).

1. Wählen Sie **Rolle erstellen** aus.

1. Wählen Sie unter **Vertrauenswürdige Entität auswählen** den Typ der vertrauenswürdigen Entität aus, der Sie Zugriff auf die von Ihnen erstellte Vorlage gewähren möchten.

1. Wählen Sie die ID der vertrauenswürdigen Entität, der Sie Zugriff gewähren möchten, oder geben Sie sie ein, und klicken Sie dann auf **Weiter**.

1. Geben Sie auf der Seite **Berechtigungen hinzufügen** unter **Berechtigungsrichtlinien** im Suchfeld den Namen der Richtlinie ein, die Sie im [vorherigen Verfahren](#provision-create-role-policy) erstellt haben.

1. Wählen Sie für die Richtlinienliste die Richtlinie aus, die Sie im vorherigen Verfahren erstellt haben, und klicken Sie anschließend auf **Weiter**.

1. Gehen Sie im Abschnitt **Name, prüfen und erstellen** wie folgt vor:

   1. Geben Sie unter **Rollenname** einen Rollennamen ein, der Sie an den Zweck dieser Rolle erinnert.

   1. Unter **Beschreibung** können Sie optional eine Beschreibung der Rolle eingeben. Dies ist nicht erforderlich, um fortzufahren.

   1. Überprüfen Sie die Werte in **Schritt 1** und **Schritt 2**.

   1. Unter **Tags hinzufügen (optional)** können Sie auswählen, ob Sie dieser Rolle Tags hinzufügen möchten. Dies ist nicht erforderlich, um fortzufahren.

   1. Vergewissern Sie sich, dass die Informationen auf dieser Seite vollständig und korrekt sind, und wählen Sie dann **Rolle erstellen**. 

Nachdem Sie die neue Rolle erstellt haben, kehren Sie zur AWS IoT Konsole zurück, um mit der Erstellung der Vorlage fortzufahren.

## Aktualisieren einer vorhandenen Richtlinie, um eine neue Vorlage zu autorisieren
<a name="provision-create-role-update"></a>

In den folgenden Schritten wird beschrieben, wie Sie einer IAM-Richtlinie eine neue Vorlage hinzufügen, die Benutzer autorisiert, ein Gerät mithilfe einer Bereitstellungsvorlage zu installieren.

**Hinzufügen einer neuen Vorlage zu einer bestehenden IAM-Richtlinie**

1. Öffnen Sie das [Richtlinien-Hub in der IAM-Konsole](https://console.aws.amazon.com//iamv2/home#/policies).

1. Geben Sie im Suchfeld den Namen der zu aktualisierenden Richtlinie ein.

1. Suchen Sie in der Liste unter dem Suchfeld die Richtlinie, die Sie aktualisieren möchten, und wählen Sie den Richtliniennamen aus.

1. Wählen Sie für die **Richtlinienübersicht** die Registerkarte **JSON**, falls dieser Bereich noch nicht sichtbar ist.

1. Wählen Sie **Richtlinie bearbeiten**, um das Richtliniendokument zu bearbeiten.

1. Wählen Sie im Editor die Registerkarte **JSON**, falls dieser Bereich noch nicht sichtbar ist.

1. Suchen Sie im Richtliniendokument nach der Richtlinienerklärung, die die `iot:CreateProvisioningClaim`-Aktion enthält.

   Wenn das Richtliniendokument keine Richtlinienanweisung mit der `iot:CreateProvisioningClaim`-Aktion enthält, kopieren Sie den folgenden Anweisungsausschnitt und fügen Sie ihn als zusätzlichen Eintrag in das `Statement`-Array im Richtliniendokument ein. 
**Anmerkung**  
Dieser Ausschnitt muss vor dem letzten `]`-Zeichen im `Statement`-Array stehen. Möglicherweise müssen Sie vor oder nach diesem Ausschnitt ein Komma setzen, um Syntaxfehler zu korrigieren.

   ```
   {
       "Effect": "Allow",
       "Action": [
           "iot:CreateProvisioningClaim"
       ],
       "Resource": [
           "--PUT YOUR NEW TEMPLATE ARN HERE--"
       ]
   }
   ```

1. Wechseln Sie zu der Seite in der AWS IoT Konsole, auf der Sie **Benutzerrollenberechtigungen ändern** ausgewählt haben.

1. Suchen Sie den **Ressourcen-ARN** der Vorlage und wählen Sie **Kopieren**.

1. Wechseln Sie zurück zur IAM-Konsole.

1. Fügen Sie den kopierten Amazon-Ressourcennamen (ARN) oben in der Vorlagenliste ARNs im `Statement` Array ein, sodass er der erste Eintrag ist.

   Wenn dies der einzige ARN im Array ist, entfernen Sie das Komma am Ende des Werts, den Sie gerade eingefügt haben.

1. Lesen Sie die aktualisierte Richtlinienanweisung und korrigieren Sie alle vom Editor angegebenen Fehler.

1. Wählen Sie **Richtlinie überprüfen**, um das aktualisierte Richtliniendokument zu speichern.

1. Überprüfen Sie die Richtlinie und wählen Sie anschließend **Änderungen speichern**.

1. Kehren Sie zur AWS IoT Konsole zurück.

# MQTT-API für die Gerätebereitstellung
<a name="fleet-provision-api"></a><a name="provision-mqtt-api"></a>

Der Fleet Provisioning Service unterstützt die folgenden MQTT-API-Operationen:
+ `CreateCertificateFromCsr`
+ `CreateKeysAndCertificate`
+ `RegisterThing`

Diese API unterstützt je nach Thema Antwortpuffer im Format Concise Binary Object Representation (CBOR) und JavaScript Object Notation (JSON). *payload-format* Der Übersichtlichkeit halber werden die Antworten- und Anforderungsbeispiele in diesem Abschnitt im JSON-Format dargestellt.


| *payload-format* | Datentyp des Antwortformats | 
| --- | --- | 
| cbor | Concise Binary Object Representation (CBOR) | 
| json | JavaScript Objektnotation (JSON) | 

**Wichtig**  
Bevor Sie ein Anforderungsnachrichtenthema veröffentlichen, abonnieren Sie die Antwortthemen, um die Antwort zu erhalten. Die Nachrichten, die von dieser API verwendet werden, stellen mithilfe des Protokolls zum Veröffentlichen/Abonnieren von MQTT eine Anforderungs- und Antwort-Interaktion bereit.   
Wenn Sie die Antwortthemen nicht abonnieren, *bevor* Sie eine Anfrage veröffentlichen, erhalten Sie möglicherweise keine Ergebnisse dieser Anfrage.  
IoT Core Fleet Provisioning gibt die MQTT-API-Ergebnisse der Gerätebereitstellung über dieselbe MQTT-Verbindung zurück, die für die Veröffentlichung der API-Anfrage verwendet wurde.

## CreateCertificateFromCsr
<a name="create-cert-csr"></a>

Erstellt ein Zertifikat aus einer Zertifikatsignieranforderung (CSR). AWS IoT stellt Client-Zertifikate bereit, die von der Amazon Root Certificate Authority (CA) signiert wurden. Das neue Zertifikat hat den Status `PENDING_ACTIVATION`. Wenn Sie `RegisterThing` aufrufen, um ein Objekt mit diesem Zertifikat bereitzustellen, ändert sich der Zertifikatstatus in `ACTIVE` oder `INACTIVE`, wie in der Vorlage beschrieben.

Weitere Informationen zum Erstellen eines Client-Zertifikats mit Ihrem Zertifizierungsstellenzertifikat und einer Zertifikatsignierungsanforderung finden Sie unter [Erstellen eines Clientzertifikats mit Ihrem CA-Zertifikat](create-device-cert.md).

**Anmerkung**  
Aus Sicherheitsgründen läuft das von `CreateCertificateFromCsr` ausgegebene `certificateOwnershipToken` zurückgesendet nach einer Stunde ab. `RegisterThing` muss aufgerufen werden, bevor `certificateOwnershipToken` abläuft. Wenn das von erstellte Zertifikat `CreateCertificateFromCsr` bis zum Ablauf des Tokens nicht aktiviert und an eine Richtlinie oder ein Objekt angehängt wurde, wird das Zertifikat gelöscht. Wenn das Token abläuft, kann das Gerät `CreateCertificateFromCsr` erneut aufrufen, um ein neues Zertifikat zu generieren.

### CreateCertificateFromCsr anfordern
<a name="create-cert-csr-request"></a>

Veröffentlichen Sie eine Nachricht mit dem Thema `$aws/certificates/create-from-csr/payload-format`.

`payload-format`  
Das Nachrichtennutzlastformat ist `cbor` oder `json`.

#### CreateCertificateFromCsr Nutzlast anfordern
<a name="create-cert-csr-request-payload"></a>

```
{
    "certificateSigningRequest": "string"
}
```

`certificateSigningRequest`  
Die CSR im PEM-Format.

### CreateCertificateFromCsr Antwort
<a name="create-cert-csr-response"></a>

Abonnieren Sie `$aws/certificates/create-from-csr/payload-format/accepted`.

`payload-format`  
Das Nachrichtennutzlastformat ist `cbor` oder `json`.

#### CreateCertificateFromCsr Nutzlast der Antwort
<a name="create-cert-csr-response-payload"></a>

```
{
    "certificateOwnershipToken": "string",
    "certificateId": "string",
    "certificatePem": "string"
}
```

`certificateOwnershipToken`  
Das Token, um den Besitz des Zertifikats während der Bereitstellung nachzuweisen. 

`certificateId`  
Die ID des Zertifikats. Zertifikatsverwaltungsoperationen verwenden nur eine certificateId. 

`certificatePem`  
Die Zertifikatdaten im PEM-Format.

### CreateCertificateFromCsr Fehler
<a name="create-cert-csr-error"></a>

Um Fehlerantworten zu empfangen, abonnieren Sie `$aws/certificates/create-from-csr/payload-format/rejected`.

`payload-format`  
Das Nachrichtennutzlastformat ist `cbor` oder `json`.

#### CreateCertificateFromCsr Fehler Payload
<a name="create-cert-csr-error-payload"></a>

```
{
    "statusCode": int,
    "errorCode": "string",
    "errorMessage": "string"
}
```

`statusCode`  
Welcher Statuscode gesendet wird

`errorCode`  
Der Fehlercode.

`errorMessage`  
Die Fehlermeldung.

## CreateKeysAndCertificate
<a name="create-keys-cert"></a>

Erzeugt neue Schlüssel und ein Zertifikat. AWS IoT stellt Client-Zertifikate bereit, die von der Amazon Root Certificate Authority (CA) signiert wurden. Das neue Zertifikat hat den Status `PENDING_ACTIVATION`. Wenn Sie `RegisterThing` aufrufen, um ein Objekt mit diesem Zertifikat bereitzustellen, ändert sich der Zertifikatstatus in `ACTIVE` oder `INACTIVE`, wie in der Vorlage beschrieben.

**Anmerkung**  
Aus Sicherheitsgründen läuft das von `CreateKeysAndCertificate` ausgegebene `certificateOwnershipToken` zurückgesendet nach einer Stunde ab. `RegisterThing` muss aufgerufen werden, bevor `certificateOwnershipToken` abläuft. Wenn das von erstellte Zertifikat `CreateKeysAndCertificate` bis zum Ablauf des Tokens nicht aktiviert und an eine Richtlinie oder ein Objekt angehängt wurde, wird das Zertifikat gelöscht. Wenn das Token abläuft, kann das Gerät `CreateKeysAndCertificate` erneut aufrufen, um ein neues Zertifikat zu generieren.

### CreateKeysAndCertificate anfordern
<a name="create-keys-cert-request"></a>

Veröffentlichen Sie eine Nachricht unter `$aws/certificates/create/payload-format` mit einer leeren Nachrichtennutzlast.

`payload-format`  
Das Nachrichtennutzlastformat ist `cbor` oder `json`.

### CreateKeysAndCertificate Antwort
<a name="create-keys-cert-response"></a>

Abonnieren Sie `$aws/certificates/create/payload-format/accepted`.

`payload-format`  
Das Nachrichtennutzlastformat ist `cbor` oder `json`.

#### CreateKeysAndCertificate Antwort
<a name="create-keys-cert-response-payload"></a>

```
{
    "certificateId": "string",
    "certificatePem": "string",
    "privateKey": "string",
    "certificateOwnershipToken": "string"
}
```

`certificateId`  
Die ID des Zertifikats.

`certificatePem`  
Die Zertifikatdaten im PEM-Format.

`privateKey`  
Der private Schlüssel.

`certificateOwnershipToken`  
Das Token, um den Besitz des Zertifikats während der Bereitstellung nachzuweisen.

### CreateKeysAndCertificate Fehler
<a name="create-keys-cert-error"></a>

Um Fehlerantworten zu empfangen, abonnieren Sie `$aws/certificates/create/payload-format/rejected`.

`payload-format`  
Das Nachrichtennutzlastformat ist `cbor` oder `json`.

#### CreateKeysAndCertificate Fehler Payload
<a name="create-keys-cert-error-payload"></a>

```
{
    "statusCode": int,
    "errorCode": "string",
    "errorMessage": "string"
}
```

`statusCode`  
Welcher Statuscode gesendet wird

`errorCode`  
Der Fehlercode.

`errorMessage`  
Die Fehlermeldung.

## RegisterThing
<a name="register-thing"></a>

Stellt ein Objekt anhand einer vordefinierten Vorlage bereit.

### RegisterThing Anfrage
<a name="register-thing-request"></a>

Veröffentlichen Sie eine Nachricht unter `$aws/provisioning-templates/templateName/provision/payload-format`.

`payload-format`  
Das Nachrichtennutzlastformat ist `cbor` oder `json`.

`templateName`  
Der Name der Bereitstellungsvorlage.

#### RegisterThing Nutzlast anfordern
<a name="register-thing-request-payload"></a>

```
{
    "certificateOwnershipToken": "string",
    "parameters": {
        "string": "string",
        ...
    }
}
```

`certificateOwnershipToken`  
Das Token zum Nachweis der Inhaberschaft des Zertifikats. AWS IoT generiert das Token, wenn Sie ein Zertifikat über MQTT erstellen.

`parameters`  
Optional. Schlüssel-Wert-Paare vom Gerät, die von den [Pre-Provisioning-Hooks](pre-provisioning-hook.md) verwendet werden, um die Registrierungsanforderung auszuwerten.

### RegisterThing Antwort
<a name="register-thing-response"></a>

Abonnieren Sie `$aws/provisioning-templates/templateName/provision/payload-format/accepted`.

`payload-format`  
Das Nachrichtennutzlastformat ist `cbor` oder `json`.

`templateName`  
Der Name der Bereitstellungsvorlage.

#### RegisterThing Nutzlast der Antwort
<a name="register-thing-response-payload"></a>

```
{
    "deviceConfiguration": {
        "string": "string",
        ...
    },
    "thingName": "string"
}
```

`deviceConfiguration`  
Die in der Vorlage definierte Gerätekonfiguration.

`thingName`  
Der Name des IoT-Objekts, das während der Bereitstellung erstellt wurde.

### RegisterThing Fehlerantwort
<a name="register-thing-error"></a>

Um Fehlerantworten zu empfangen, abonnieren Sie `$aws/provisioning-templates/templateName/provision/payload-format/rejected`.

`payload-format`  
Das Nachrichtennutzlastformat ist `cbor` oder `json`.

`templateName`  
Der Name der Bereitstellungsvorlage.

#### RegisterThing Payload für die Fehlerantwort
<a name="register-thing-error-payload"></a>

```
{
    "statusCode": int,
    "errorCode": "string",
    "errorMessage": "string"
}
```

`statusCode`  
Welcher Statuscode gesendet wird

`errorCode`  
Der Fehlercode.

`errorMessage`  
Die Fehlermeldung.