J Bereitstellung ust-in-time - AWS IoT Core

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.

J Bereitstellung ust-in-time

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 bei Amazon CloudWatch protokolliert.

Überblick über JITP

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 RegisterThingverwendet. 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) senden, wenn es eine Verbindung mit AWS IoT Core herstellt.

Beispielvorlagentext

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_ACTIVE 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 unterGerätebereitstellungsmetriken. Weitere Informationen zur Bereitstellungsvorlagen finden Sie unter Bereitstellungsvorlagen.

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 überschreiten und zu gedrosselten Aufrufen führen. Wenden Sie sich an den AWS -Kundenservice, um Ihre Drosselungskontingente bei Bedarf zu erhöhen.

Registrieren einer CA mithilfe der Bereitstellungsvorlage

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

  2. Registrieren Sie ein CA-Zertifikat mit der API-Operation RegisterCACertificate oder dem register-ca-certificate-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.

  3. (Optional) Aktualisieren Sie die Einstellungen für ein CA-Zertifikat mithilfe der API-Operation UpdateCACertificate oder des update-ca-certificate-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

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.

  2. Verwenden Sie die Template-API oder den create-provisioning-templateCLI-Befehl, um eine CreateProvisioningTemplate 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 unter CreateProvisioningVorlage in der AWS API-Referenz.

  3. Registrieren Sie ein CA-Zertifikat mit der RegisterCACertificate-API oder dem register-ca-certificate-CLI-Befehl:

    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