AWS IoT Flottenbereitstellung für Greengrass-Kerngeräte einrichten - AWS IoT Greengrass

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS IoT Flottenbereitstellung für Greengrass-Kerngeräte einrichten

Um die AWS IoT Greengrass Core-Software mit Flottenbereitstellung zu installieren, müssen Sie zunächst die folgenden Ressourcen in Ihrem einrichten. AWS-Konto Diese Ressourcen ermöglichen es Geräten, sich bei Greengrass-Core-Geräten zu registrieren AWS IoT und als solche zu arbeiten. Folgen Sie einmal den Schritten in diesem Abschnitt, um diese Ressourcen in Ihrem AWS-Konto zu erstellen und zu konfigurieren.

  • Eine IAM-Rolle für den Tokenaustausch, mit der Kerngeräte Aufrufe von Diensten autorisieren. AWS

  • Ein AWS IoT Rollenalias, der auf die Token-Exchange-Rolle verweist.

  • (Optional) Eine AWS IoT Richtlinie, anhand derer Kerngeräte Anrufe an die AWS IoT Greengrass Dienste AWS IoT und autorisieren. Diese AWS IoT Richtlinie muss die iot:AssumeRoleWithCertificate Berechtigung für den AWS IoT Rollenalias gewähren, der auf die Token-Exchange-Rolle verweist.

    Sie können eine einzige AWS IoT Richtlinie für alle Kerngeräte in Ihrer Flotte verwenden, oder Sie können Ihre Flottenbereitstellungsvorlage so konfigurieren, dass für jedes Kerngerät eine AWS IoT Richtlinie erstellt wird.

  • Eine Vorlage für die AWS IoT Flottenbereitstellung. Diese Vorlage muss Folgendes enthalten:

    • AWS IoT Irgendeine Ressource. Sie können eine Liste vorhandener Dinggruppen angeben, um Komponenten für jedes Gerät bereitzustellen, wenn es online geht.

    • Eine AWS IoT Richtlinienressource. Diese Ressource kann eine der folgenden Eigenschaften definieren:

      • Der Name einer vorhandenen AWS IoT Richtlinie. Wenn Sie diese Option wählen, verwenden die Kerngeräte, die Sie anhand dieser Vorlage erstellen, dieselbe AWS IoT Richtlinie, und Sie können ihre Berechtigungen als Flotte verwalten.

      • Ein AWS IoT Richtliniendokument. Wenn Sie diese Option wählen, verwendet jedes Core-Gerät, das Sie anhand dieser Vorlage erstellen, eine eigene AWS IoT Richtlinie, und Sie können die Berechtigungen für jedes einzelne Core-Gerät verwalten.

    • Eine AWS IoT Zertifikatsressource. Diese Zertifikatsressource muss den AWS::IoT::Certificate::Id Parameter verwenden, um das Zertifikat an das Kerngerät anzuhängen. Weitere Informationen finden Sie im AWS IoT Developer Guide unter Just-in-time Provisioning.

  • Ein AWS IoT Provisioning-Anspruchszertifikat und ein privater Schlüssel für die Flottenbereitstellungsvorlage. Sie können dieses Zertifikat und den privaten Schlüssel während der Herstellung in Geräte einbetten, sodass sich die Geräte selbst registrieren und bereitstellen können, wenn sie online gehen.

    Wichtig

    Private Schlüssel für Provisioning Claim sollten jederzeit gesichert sein, auch auf Greengrass-Core-Geräten. Wir empfehlen Ihnen, anhand von CloudWatch Kennzahlen und Protokollen von Amazon nach Hinweisen auf Missbrauch zu suchen, wie z. B. die unbefugte Verwendung des Antragszertifikats zur Bereitstellung von Geräten. Wenn Sie einen Missbrauch feststellen, deaktivieren Sie das Provisioning Claim Certificate, sodass es nicht für die Bereitstellung von Geräten verwendet werden kann. Weitere Informationen finden Sie unter Überwachung AWS IoT im AWS IoT Core Entwicklerhandbuch.

    Damit Sie die Anzahl der Geräte und die Geräte, die sich bei Ihnen registrieren, besser verwalten können, können Sie AWS-Konto bei der Erstellung einer Flottenbereitstellungsvorlage einen Pre-Provisioning-Hook angeben. Ein Pre-Provisioning-Hook ist eine AWS Lambda Funktion, die Vorlagenparameter validiert, die Geräte bei der Registrierung angeben. Sie können beispielsweise einen Pre-Provisioning-Hook erstellen, der eine Geräte-ID mit einer Datenbank vergleicht, um sicherzustellen, dass das Gerät über eine Bereitstellungsberechtigung verfügt. Weitere Informationen finden Sie unter Pre-Provisioning Hooks im Developer Guide.AWS IoT Core

  • Eine AWS IoT Richtlinie, die Sie dem Provisioning-Antragszertifikat beifügen, damit sich Geräte registrieren und die Flottenbereitstellungsvorlage verwenden können.

Erstellen Sie eine Token-Austauschrolle

Greengrass-Core-Geräte verwenden eine IAM-Servicerolle, die so genannte Token-Exchange-Rolle, um Aufrufe von Diensten zu autorisieren. AWS Das Gerät verwendet den AWS IoT Anmeldeinformationsanbieter, um temporäre AWS Anmeldeinformationen für diese Rolle abzurufen. Dadurch kann das Gerät mit Amazon Logs interagieren AWS IoT, Protokolle an Amazon CloudWatch Logs senden und benutzerdefinierte Komponentenartefakte von Amazon S3 herunterladen. Weitere Informationen finden Sie unter Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS.

Sie verwenden einen AWS IoT Rollenalias, um die Token-Austauschrolle für Greengrass-Core-Geräte zu konfigurieren. Rollenaliase ermöglichen es Ihnen, die Token-Austauschrolle für ein Gerät zu ändern, aber die Gerätekonfiguration beizubehalten. Weitere Informationen finden Sie im AWS IoT Core Entwicklerhandbuch unter Autorisieren von direkten Aufrufen von AWS Diensten.

In diesem Abschnitt erstellen Sie eine Token-Exchange-IAM-Rolle und einen AWS IoT Rollenalias, der auf die Rolle verweist. Wenn Sie bereits ein Greengrass-Core-Gerät eingerichtet haben, können Sie dessen Token-Austauschrolle und seinen Rollenalias verwenden, anstatt neue zu erstellen.

Um eine IAM-Rolle für den Token-Austausch zu erstellen
  1. Erstellen Sie eine IAM-Rolle, die Ihr Gerät als Token-Austauschrolle verwenden kann. Gehen Sie wie folgt vor:

    1. Erstellen Sie eine Datei, die das Dokument mit der Vertrauensrichtlinie enthält, das für die Token-Austauschrolle erforderlich ist.

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um die Datei mit GNU Nano zu erstellen.

      nano device-role-trust-policy.json

      Kopieren Sie den folgenden JSON-Code in die Datei.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Erstellen Sie die Token-Austauschrolle mit dem Dokument zur Vertrauensrichtlinie.

      • GreengrassV2TokenExchangeRoleErsetzen Sie es durch den Namen der zu erstellenden IAM-Rolle.

      aws iam create-role --role-name GreengrassV2TokenExchangeRole --assume-role-policy-document file://device-role-trust-policy.json

      Die Antwort sieht ähnlich wie im folgenden Beispiel aus, wenn die Anfrage erfolgreich ist.

      { "Role": { "Path": "/", "RoleName": "GreengrassV2TokenExchangeRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole", "CreateDate": "2021-02-06T00:13:29+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } }
    3. Erstellen Sie eine Datei, die das Dokument mit der Zugriffsrichtlinie enthält, das für die Token-Austauschrolle erforderlich ist.

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um die Datei mit GNU Nano zu erstellen.

      nano device-role-access-policy.json

      Kopieren Sie den folgenden JSON-Code in die Datei.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
      Anmerkung

      Diese Zugriffsrichtlinie erlaubt keinen Zugriff auf Komponentenartefakte in S3-Buckets. Um benutzerdefinierte Komponenten bereitzustellen, die Artefakte in Amazon S3 definieren, müssen Sie der Rolle Berechtigungen hinzufügen, damit Ihr Kerngerät Komponentenartefakte abrufen kann. Weitere Informationen finden Sie unter Erlauben Sie den Zugriff auf S3-Buckets für Komponentenartefakte.

      Wenn Sie noch keinen S3-Bucket für Komponentenartefakte haben, können Sie diese Berechtigungen später hinzufügen, nachdem Sie einen Bucket erstellt haben.

    4. Erstellen Sie die IAM-Richtlinie anhand des Richtliniendokuments.

      • GreengrassV2TokenExchangeRoleAccessErsetzen Sie es durch den Namen der zu erstellenden IAM-Richtlinie.

      aws iam create-policy --policy-name GreengrassV2TokenExchangeRoleAccess --policy-document file://device-role-access-policy.json

      Die Antwort sieht ähnlich wie im folgenden Beispiel aus, wenn die Anfrage erfolgreich ist.

      { "Policy": { "PolicyName": "GreengrassV2TokenExchangeRoleAccess", "PolicyId": "ANPAZ2YMUHYHACI7C5Z66", "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2021-02-06T00:37:17+00:00", "UpdateDate": "2021-02-06T00:37:17+00:00" } }
    5. Hängen Sie die IAM-Richtlinie an die Token-Exchange-Rolle an.

      • Ersetzen Sie GreengrassV2TokenExchangeRole durch den Namen der IAM-Rolle.

      • Ersetzen Sie den Richtlinien-ARN durch den ARN der IAM-Richtlinie, die Sie im vorherigen Schritt erstellt haben.

      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess

      Der Befehl hat keine Ausgabe, wenn die Anfrage erfolgreich ist.

  2. Erstellen Sie einen AWS IoT Rollenalias, der auf die Token-Exchange-Rolle verweist.

    • GreengrassCoreTokenExchangeRoleAliasErsetzen Sie ihn durch den Namen des Rollenalias, den Sie erstellen möchten.

    • Ersetzen Sie den Rollen-ARN durch den ARN der IAM-Rolle, die Sie im vorherigen Schritt erstellt haben.

    aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole

    Die Antwort sieht ähnlich wie im folgenden Beispiel aus, wenn die Anfrage erfolgreich ist.

    { "roleAlias": "GreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" }
    Anmerkung

    Um einen Rollenalias zu erstellen, benötigen Sie die Berechtigung, die Token-Exchange-IAM-Rolle zu übergeben. AWS IoT Wenn Sie beim Versuch, einen Rollenalias zu erstellen, eine Fehlermeldung erhalten, überprüfen Sie, ob Ihr AWS Benutzer über diese Berechtigung verfügt. Weitere Informationen finden Sie im Benutzerhandbuch unter Erteilen von Benutzerberechtigungen zur Übergabe einer Rolle an einen AWS Dienst.AWS Identity and Access Management

Erstellen Sie eine AWS IoT Richtlinie

Nachdem Sie ein Gerät als Objekt registriert AWS IoT haben, kann dieses Gerät ein digitales Zertifikat zur Authentifizierung verwenden. AWS Dieses Zertifikat enthält eine oder mehrere AWS IoT Richtlinien, die die Berechtigungen definieren, die ein Gerät mit dem Zertifikat verwenden kann. Diese Richtlinien ermöglichen dem Gerät die Kommunikation mit AWS IoT und AWS IoT Greengrass.

Bei der AWS IoT Flottenbereitstellung stellen Geräte eine Verbindung her, AWS IoT um ein Gerätezertifikat zu erstellen und herunterzuladen. In der Flottenbereitstellungsvorlage, die Sie im nächsten Abschnitt erstellen, können Sie angeben, ob AWS IoT den Zertifikaten aller Geräte dieselbe AWS IoT Richtlinie zugewiesen wird oder ob für jedes Gerät eine neue Richtlinie erstellt wird.

In diesem Abschnitt erstellen Sie eine AWS IoT Richtlinie, die an die Zertifikate aller Geräte AWS IoT angehängt wird. Mit diesem Ansatz können Sie die Berechtigungen für alle Geräte als Flotte verwalten. Wenn Sie lieber für jedes Gerät eine neue AWS IoT Richtlinie erstellen möchten, können Sie diesen Abschnitt überspringen und bei der Definition Ihrer Flottenvorlage auf die darin enthaltene Richtlinie verweisen.

Um eine AWS IoT Richtlinie zu erstellen
  • Erstellen Sie eine AWS IoT Richtlinie, die die AWS IoT Berechtigungen für Ihre Flotte von Greengrass-Core-Geräten definiert. Die folgende Richtlinie ermöglicht den Zugriff auf alle MQTT-Themen und Greengrass-Operationen, sodass Ihr Gerät mit benutzerdefinierten Anwendungen und future Änderungen, die neue Greengrass-Operationen erfordern, funktioniert. Diese Richtlinie ermöglicht auch die iot:AssumeRoleWithCertificate Genehmigung, die es Ihren Geräten ermöglicht, die Token-Austauschrolle zu verwenden, die Sie im vorherigen Abschnitt erstellt haben. Sie können diese Richtlinie je nach Anwendungsfall einschränken. Weitere Informationen finden Sie unter Minimale AWS IoT Richtlinie für AWS IoT Greengrass V2 Kerngeräte.

    Gehen Sie wie folgt vor:

    1. Erstellen Sie eine Datei, die das AWS IoT Richtliniendokument enthält, das für Greengrass-Core-Geräte erforderlich ist.

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um die Datei mit GNU Nano zu erstellen.

      nano greengrass-v2-iot-policy.json

      Kopieren Sie den folgenden JSON-Code in die Datei.

      • Ersetzen Sie die iot:AssumeRoleWithCertificate Ressource durch den ARN des AWS IoT Rollenalias, den Sie im vorherigen Abschnitt erstellt haben.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" } ] }
    2. Erstellen Sie eine AWS IoT Richtlinie aus dem Richtliniendokument.

      • GreengrassV2IoTThingPolicyErsetzen Sie es durch den Namen der zu erstellenden Richtlinie.

      aws iot create-policy --policy-name GreengrassV2IoTThingPolicy --policy-document file://greengrass-v2-iot-policy.json

      Die Antwort ähnelt dem folgenden Beispiel, wenn die Anfrage erfolgreich ist.

      { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Subscribe\", \"iot:Receive\", \"iot:Connect\", \"greengrass:*\" ], \"Resource\": [ \"*\" ] }, { \"Effect\": \"Allow\", \"Action\": \"iot:AssumeRoleWithCertificate\", \"Resource\": \"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\" } ] }", "policyVersionId": "1" }

Erstellen Sie eine Vorlage für die Flottenbereitstellung

AWS IoT Vorlagen für die Flottenbereitstellung definieren, wie AWS IoT Dinge, Richtlinien und Zertifikate bereitgestellt werden. Um Greengrass-Kerngeräte mit dem Fleet Provisioning Plugin bereitzustellen, müssen Sie eine Vorlage erstellen, die Folgendes spezifiziert:

  • Irgendeine Ressource AWS IoT . Sie können eine Liste vorhandener Dinggruppen angeben, um Komponenten für jedes Gerät bereitzustellen, wenn es online geht.

  • Eine AWS IoT Richtlinienressource. Diese Ressource kann eine der folgenden Eigenschaften definieren:

    • Der Name einer vorhandenen AWS IoT Richtlinie. Wenn Sie diese Option wählen, verwenden die Kerngeräte, die Sie anhand dieser Vorlage erstellen, dieselbe AWS IoT Richtlinie, und Sie können ihre Berechtigungen als Flotte verwalten.

    • Ein AWS IoT Richtliniendokument. Wenn Sie diese Option wählen, verwendet jedes Core-Gerät, das Sie anhand dieser Vorlage erstellen, eine eigene AWS IoT Richtlinie, und Sie können die Berechtigungen für jedes einzelne Core-Gerät verwalten.

  • Eine AWS IoT Zertifikatsressource. Diese Zertifikatsressource muss den AWS::IoT::Certificate::Id Parameter verwenden, um das Zertifikat an das Kerngerät anzuhängen. Weitere Informationen finden Sie im AWS IoT Developer Guide unter Just-in-time Provisioning.

In der Vorlage können Sie angeben, dass das AWS IoT Ding zu einer Liste vorhandener Dinggruppen hinzugefügt werden soll. Wenn das Kerngerät AWS IoT Greengrass zum ersten Mal eine Verbindung herstellt, empfängt es Greengrass-Bereitstellungen für jede Dinggruppe, der es angehört. Sie können Dinggruppen verwenden, um die neueste Software auf jedem Gerät bereitzustellen, sobald es online ist. Weitere Informationen finden Sie unter AWS IoT Greengrass Komponenten auf Geräten bereitstellen.

Für den AWS IoT Dienst sind AWS-Konto bei der Bereitstellung von Geräten Berechtigungen zum Erstellen und Aktualisieren von AWS IoT Ressourcen auf Ihrem Gerät erforderlich. Um dem AWS IoT Dienst Zugriff zu gewähren, erstellen Sie eine IAM-Rolle und geben sie bei der Erstellung der Vorlage an. AWS IoT stellt eine verwaltete Richtlinie (AWSIoTThingsRegistrierung) bereit, die den Zugriff auf alle Berechtigungen ermöglicht, die bei der Bereitstellung von Geräten verwendet werden AWS IoT könnten. Sie können diese verwaltete Richtlinie verwenden oder eine benutzerdefinierte Richtlinie erstellen, die die Berechtigungen in der verwalteten Richtlinie für Ihren Anwendungsfall einschränkt.

In diesem Abschnitt erstellen Sie eine IAM-Rolle, die die Bereitstellung von Ressourcen für Geräte ermöglicht AWS IoT , und Sie erstellen eine Flottenbereitstellungsvorlage, die diese IAM-Rolle verwendet.

Um eine Vorlage für die Flottenbereitstellung zu erstellen
  1. Erstellen Sie eine IAM-Rolle, die die Bereitstellung von Ressourcen in Ihrem übernehmen AWS IoT kann. AWS-Konto Gehen Sie wie folgt vor:

    1. Erstellen Sie eine Datei, die das Dokument mit der Vertrauensrichtlinie enthält, mit dem AWS IoT Sie die Rolle übernehmen können.

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um die Datei mit GNU Nano zu erstellen.

      nano aws-iot-trust-policy.json

      Kopieren Sie den folgenden JSON-Code in die Datei.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Erstellen Sie eine IAM-Rolle mit dem Dokument zur Vertrauensrichtlinie.

      • GreengrassFleetProvisioningRoleErsetzen Sie sie durch den Namen der zu erstellenden IAM-Rolle.

      aws iam create-role --role-name GreengrassFleetProvisioningRole --assume-role-policy-document file://aws-iot-trust-policy.json

      Die Antwort sieht ähnlich wie im folgenden Beispiel aus, wenn die Anfrage erfolgreich ist.

      { "Role": { "Path": "/", "RoleName": "GreengrassFleetProvisioningRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole", "CreateDate": "2021-07-26T00:15:12+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }
    3. Lesen Sie sich die AWSIoTThingsRegistrierungsrichtlinie durch, die den Zugriff auf alle Berechtigungen ermöglicht, die AWS IoT möglicherweise bei der Bereitstellung von Geräten verwendet werden. Sie können diese verwaltete Richtlinie verwenden oder eine benutzerdefinierte Richtlinie erstellen, die spezifische Berechtigungen für Ihren Anwendungsfall definiert. Wenn Sie sich dafür entscheiden, eine benutzerdefinierte Richtlinie zu erstellen, tun Sie dies jetzt.

    4. Fügen Sie die IAM-Richtlinie der Flottenbereitstellungsrolle hinzu.

      • Ersetzen Sie GreengrassFleetProvisioningRole durch den Namen der IAM-Rolle.

      • Wenn Sie im vorherigen Schritt eine benutzerdefinierte Richtlinie erstellt haben, ersetzen Sie den Richtlinien-ARN durch den ARN der zu verwendenden IAM-Richtlinie.

      aws iam attach-role-policy --role-name GreengrassFleetProvisioningRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration

      Der Befehl hat keine Ausgabe, wenn die Anfrage erfolgreich ist.

  2. (Optional) Erstellen Sie einen Pre-Provisioning-Hook. Dabei handelt es sich um eine AWS Lambda Funktion, die Vorlagenparameter überprüft, die Geräte bei der Registrierung angeben. Sie können einen Pre-Provisioning-Hook verwenden, um mehr Kontrolle darüber zu erhalten, welche und wie viele Geräte in Ihrem Gerät integriert sind. AWS-KontoWeitere Informationen finden Sie unter Pre-Provisioning Hooks im Developer Guide.AWS IoT Core

  3. Erstellen Sie eine Vorlage für die Flottenbereitstellung. Gehen Sie wie folgt vor:

    1. Erstellen Sie eine Datei, die das Vorlagendokument für die Bereitstellung enthält.

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um die Datei mit GNU Nano zu erstellen.

      nano greengrass-fleet-provisioning-template.json

      Schreiben Sie das Provisioning-Vorlagendokument. Sie können mit der folgenden Beispielvorlage für die Bereitstellung beginnen, in der angegeben wird, dass ein Objekt mit den folgenden AWS IoT Eigenschaften erstellt werden soll:

      • Der Name der Sache ist der Wert, den Sie im ThingName Vorlagenparameter angeben.

      • Das Ding ist ein Mitglied der Dinggruppe, die Sie im ThingGroupName Vorlagenparameter angeben. Die Dinggruppe muss in Ihrer vorhanden sein AWS-Konto.

      • Dem Zertifikat der Sache ist die angegebene AWS IoT Richtlinie GreengrassV2IoTThingPolicy angehängt.

      Weitere Informationen finden Sie unter Bereitstellungsvorlagen im AWS IoT Core Entwicklerhandbuch.

      { "Parameters": { "ThingName": { "Type": "String" }, "ThingGroupName": { "Type": "String" }, "AWS::IoT::Certificate::Id": { "Type": "String" } }, "Resources": { "MyThing": { "OverrideSettings": { "AttributePayload": "REPLACE", "ThingGroups": "REPLACE", "ThingTypeName": "REPLACE" }, "Properties": { "AttributePayload": {}, "ThingGroups": [ { "Ref": "ThingGroupName" } ], "ThingName": { "Ref": "ThingName" } }, "Type": "AWS::IoT::Thing" }, "MyPolicy": { "Properties": { "PolicyName": "GreengrassV2IoTThingPolicy" }, "Type": "AWS::IoT::Policy" }, "MyCertificate": { "Properties": { "CertificateId": { "Ref": "AWS::IoT::Certificate::Id" }, "Status": "Active" }, "Type": "AWS::IoT::Certificate" } } }
      Anmerkung

      MyThingMyPolicy, und MyCertificate sind willkürliche Namen, die jede Ressourcenspezifikation in der Flottenbereitstellungsvorlage identifizieren. AWS IoT verwendet diese Namen nicht in den Ressourcen, die es anhand der Vorlage erstellt. Sie können diese Namen verwenden oder sie durch Werte ersetzen, die Ihnen helfen, die einzelnen Ressourcen in der Vorlage zu identifizieren.

    2. Erstellen Sie die Vorlage für die Flottenbereitstellung anhand des Vorlagendokuments für die Bereitstellung von Flotten.

      • GreengrassFleetProvisioningTemplateErsetzen Sie es durch den Namen der zu erstellenden Vorlage.

      • Ersetzen Sie die Vorlagenbeschreibung durch eine Beschreibung für Ihre Vorlage.

      • Ersetzen Sie den ARN der Bereitstellungsrolle durch den ARN der Rolle, die Sie zuvor erstellt haben.

      Linux or Unix
      aws iot create-provisioning-template \ --template-name GreengrassFleetProvisioningTemplate \ --description "A provisioning template for Greengrass core devices." \ --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" \ --template-body file://greengrass-fleet-provisioning-template.json \ --enabled
      Windows Command Prompt (CMD)
      aws iot create-provisioning-template ^ --template-name GreengrassFleetProvisioningTemplate ^ --description "A provisioning template for Greengrass core devices." ^ --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" ^ --template-body file://greengrass-fleet-provisioning-template.json ^ --enabled
      PowerShell
      aws iot create-provisioning-template ` --template-name GreengrassFleetProvisioningTemplate ` --description "A provisioning template for Greengrass core devices." ` --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" ` --template-body file://greengrass-fleet-provisioning-template.json ` --enabled
      Anmerkung

      Wenn Sie einen Pre-Provisioning-Hook erstellt haben, geben Sie den ARN der Lambda-Funktion des Pre-Provisioning-Hooks mit dem Argument an. --pre-provisioning-hook

      --pre-provisioning-hook targetArn=arn:aws:lambda:us-west-2:123456789012:function:GreengrassPreProvisioningHook

      Die Antwort sieht ähnlich wie im folgenden Beispiel aus, wenn die Anfrage erfolgreich ist.

      { "templateArn": "arn:aws:iot:us-west-2:123456789012:provisioningtemplate/GreengrassFleetProvisioningTemplate", "templateName": "GreengrassFleetProvisioningTemplate", "defaultVersionId": 1 }

Erstellen Sie ein Provisioning-Anspruchszertifikat und einen privaten Schlüssel

Anspruchszertifikate sind X.509-Zertifikate, die es Geräten ermöglichen, sich als AWS IoT Dinge zu registrieren und ein eindeutiges X.509-Gerätezertifikat abzurufen, das für den regulären Betrieb verwendet werden kann. Nachdem Sie ein Anspruchszertifikat erstellt haben, fügen Sie eine AWS IoT Richtlinie hinzu, die es Geräten ermöglicht, damit eindeutige Gerätezertifikate zu erstellen und diese mit einer Flottenbereitstellungsvorlage bereitzustellen. Geräte mit dem Antragszertifikat können nur mithilfe der Bereitstellungsvorlage bereitgestellt werden, die Sie in der AWS IoT Richtlinie zulassen.

In diesem Abschnitt erstellen Sie das Antragszertifikat und konfigurieren es für Geräte zur Verwendung mit der Flottenbereitstellungsvorlage, die Sie im vorherigen Abschnitt erstellt haben.

Wichtig

Private Schlüssel für Provisioning Claim sollten jederzeit gesichert sein, auch auf Greengrass-Core-Geräten. Wir empfehlen Ihnen, anhand von CloudWatch Kennzahlen und Protokollen von Amazon nach Hinweisen auf Missbrauch zu suchen, wie z. B. die unbefugte Verwendung des Antragszertifikats zur Bereitstellung von Geräten. Wenn Sie einen Missbrauch feststellen, deaktivieren Sie das Provisioning Claim Certificate, sodass es nicht für die Bereitstellung von Geräten verwendet werden kann. Weitere Informationen finden Sie unter Überwachung AWS IoT im AWS IoT Core Entwicklerhandbuch.

Damit Sie die Anzahl der Geräte und die Geräte, die sich bei Ihnen registrieren, besser verwalten können, können Sie AWS-Konto bei der Erstellung einer Flottenbereitstellungsvorlage einen Pre-Provisioning-Hook angeben. Ein Pre-Provisioning-Hook ist eine AWS Lambda Funktion, die Vorlagenparameter validiert, die Geräte bei der Registrierung angeben. Sie können beispielsweise einen Pre-Provisioning-Hook erstellen, der eine Geräte-ID mit einer Datenbank vergleicht, um sicherzustellen, dass das Gerät über eine Bereitstellungsberechtigung verfügt. Weitere Informationen finden Sie unter Pre-Provisioning Hooks im Developer Guide.AWS IoT Core

Um ein Provisioning zu erstellen, beanspruchen Sie ein Zertifikat und einen privaten Schlüssel
  1. Erstellen Sie einen Ordner, in den Sie das Anspruchszertifikat und den privaten Schlüssel herunterladen.

    mkdir claim-certs
  2. Erstellen und speichern Sie ein Zertifikat und einen privaten Schlüssel, um sie für die Bereitstellung zu verwenden. AWS IoT stellt Client-Zertifikate bereit, die von der Amazon Root Certificate Authority (CA) signiert wurden.

    Linux or Unix
    aws iot create-keys-and-certificate \ --certificate-pem-outfile "claim-certs/claim.pem.crt" \ --public-key-outfile "claim-certs/claim.public.pem.key" \ --private-key-outfile "claim-certs/claim.private.pem.key" \ --set-as-active
    Windows Command Prompt (CMD)
    aws iot create-keys-and-certificate ^ --certificate-pem-outfile "claim-certs/claim.pem.crt" ^ --public-key-outfile "claim-certs/claim.public.pem.key" ^ --private-key-outfile "claim-certs/claim.private.pem.key" ^ --set-as-active
    PowerShell
    aws iot create-keys-and-certificate ` --certificate-pem-outfile "claim-certs/claim.pem.crt" ` --public-key-outfile "claim-certs/claim.public.pem.key" ` --private-key-outfile "claim-certs/claim.private.pem.key" ` --set-as-active

    Die Antwort enthält Informationen über das Zertifikat, falls die Anfrage erfolgreich ist. Speichern Sie den ARN des Zertifikats, um ihn später zu verwenden.

  3. Erstellen und fügen Sie eine AWS IoT Richtlinie hinzu, die es Geräten ermöglicht, das Zertifikat zu verwenden, um eindeutige Gerätezertifikate zu erstellen und diese mit der Flottenbereitstellungsvorlage bereitzustellen. Die folgende Richtlinie ermöglicht den Zugriff auf die MQTT-API zur Gerätebereitstellung. Weitere Informationen finden Sie unter MQTT-API zur Gerätebereitstellung im Entwicklerhandbuch.AWS IoT Core

    Gehen Sie wie folgt vor:

    1. Erstellen Sie eine Datei, die das AWS IoT Richtliniendokument enthält, das für Greengrass-Core-Geräte erforderlich ist.

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um die Datei mit GNU Nano zu erstellen.

      nano greengrass-provisioning-claim-iot-policy.json

      Kopieren Sie den folgenden JSON-Code in die Datei.

      • Ersetzen Sie jede Instanz von region durch die Instanz, für AWS-Region die Sie die Flottenbereitstellung eingerichtet haben.

      • Ersetzen Sie jede Instanz von account-id durch Ihre AWS-Konto ID.

      • Ersetzen Sie jede Instanz von GreengrassFleetProvisioningTemplate durch den Namen der Flottenbereitstellungsvorlage, die Sie im vorherigen Abschnitt erstellt haben.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/certificates/create/*", "arn:aws:iot:region:account-id:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/certificates/create/*", "arn:aws:iot:region:account-id:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*" ] } ] }
    2. Erstellen Sie eine AWS IoT Richtlinie anhand des Richtliniendokuments.

      • GreengrassProvisioningClaimPolicyErsetzen Sie es durch den Namen der zu erstellenden Richtlinie.

      aws iot create-policy --policy-name GreengrassProvisioningClaimPolicy --policy-document file://greengrass-provisioning-claim-iot-policy.json

      Die Antwort ähnelt dem folgenden Beispiel, wenn die Anfrage erfolgreich ist.

      { "policyName": "GreengrassProvisioningClaimPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassProvisioningClaimPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": \"iot:Connect\", \"Resource\": \"*\" }, { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Receive\" ], \"Resource\": [ \"arn:aws:iot:region:account-id:topic/$aws/certificates/create/*\", \"arn:aws:iot:region:account-id:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\" ] }, { \"Effect\": \"Allow\", \"Action\": \"iot:Subscribe\", \"Resource\": [ \"arn:aws:iot:region:account-id:topicfilter/$aws/certificates/create/*\", \"arn:aws:iot:region:account-id:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\" ] } ] }", "policyVersionId": "1" }
  4. Fügen Sie die AWS IoT Richtlinie dem Provisioning Claim Certificate bei.

    • GreengrassProvisioningClaimPolicyErsetzen Sie es durch den Namen der Richtlinie, die angehängt werden soll.

    • Ersetzen Sie den Ziel-ARN durch den ARN des Provisioning-Anspruchszertifikats.

    aws iot attach-policy --policy-name GreengrassProvisioningClaimPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

    Der Befehl hat keine Ausgabe, wenn die Anfrage erfolgreich ist.

Sie verfügen jetzt über ein Provisioning-Anspruchszertifikat und einen privaten Schlüssel, mit denen sich Geräte registrieren AWS IoT und sich selbst als Greengrass-Core-Geräte bereitstellen können. Sie können das Antragszertifikat und den privaten Schlüssel während der Herstellung in Geräte einbetten oder das Zertifikat und den Schlüssel auf die Geräte kopieren, bevor Sie die AWS IoT Greengrass Core-Software installieren. Weitere Informationen finden Sie unter Installieren Sie die AWS IoT Greengrass Core-Software mit AWS IoT Flottenbereitstellung.