Einrichten der AWS IoT Flottenbereitstellung für Greengrass-Core-Geräte - 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.

Einrichten der AWS IoT Flottenbereitstellung für Greengrass-Core-Geräte

Um die -AWS IoT GreengrassCore-Software mit Flottenbereitstellung zu installieren, müssen Sie zunächst die folgenden Ressourcen in Ihrem einrichtenAWS-Konto. Diese Ressourcen ermöglichen es Geräten, sich bei Greengrass-Core-Geräten zu registrieren AWS IoT und als Greengrass-Core-Geräte zu arbeiten. Führen Sie die Schritte in diesem Abschnitt einmal aus, um diese Ressourcen in Ihrem zu erstellen und zu konfigurierenAWS-Konto.

  • Eine IAM-Rolle für den Tokenaustausch, die -Core-Geräte verwenden, um Aufrufe von -AWSServices zu autorisieren.

  • Ein -AWS IoTRollenalias, der auf die Token-Austauschrolle verweist.

  • (Optional) Eine -AWS IoTRichtlinie, mit der die -Core-Geräte Aufrufe der - AWS IoT und -AWS IoT GreengrassServices autorisieren. Diese AWS IoT Richtlinie muss die -iot:AssumeRoleWithCertificateBerechtigung für den AWS IoT Rollenalias zulassen, der auf die Token-Exchange-Rolle verweist.

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

  • Eine AWS IoT Flottenbereitstellungsvorlage. Diese Vorlage muss Folgendes angeben:

    • Eine -AWS IoTObjektressource. Sie können eine Liste vorhandener Objektgruppen angeben, um Komponenten auf jedem Gerät bereitzustellen, wenn es online geht.

    • Eine -AWS IoTRichtlinienressource. Diese Ressource kann eine der folgenden Eigenschaften definieren:

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

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

    • Eine -AWS IoTZertifikatressource. Diese Zertifikatressource muss den -AWS::IoT::Certificate::IdParameter verwenden, um das Zertifikat an das Core-Gerät anzuhängen. Weitere Informationen finden Sie unter J-ust-in-time Bereitstellung im AWS IoT -Entwicklerhandbuch.

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

    Wichtig

    Die Bereitstellung privater Schlüssel für den Anspruch sollte jederzeit gesichert werden, auch auf Greengrass-Core-Geräten. Wir empfehlen Ihnen, Amazon- CloudWatch Metriken und -Protokolle zu verwenden, um Hinweise auf Missbrauch zu überwachen, z. B. die unbefugte Verwendung des Anspruchszertifikats zur Bereitstellung von Geräten. Wenn Sie einen Missbrauch feststellen, deaktivieren Sie das Bereitstellungsantragszertifikat, damit es nicht für die Gerätebereitstellung verwendet werden kann. Weitere Informationen finden Sie unter Überwachung AWS IoT im AWS IoT Core -Entwicklerhandbuch.

    Um die Anzahl der Geräte und welche Geräte, die sich selbst in Ihrem registrieren, besser verwalten zu könnenAWS-Konto, können Sie beim Erstellen einer Flottenbereitstellungsvorlage einen Hook für die Vorabbereitstellung angeben. Ein Pre-Provisioning-Hook ist eine -AWS LambdaFunktion, die Vorlagenparameter validiert, die Geräte während der Registrierung bereitstellen. Sie können beispielsweise einen Hook für die Vorabbereitstellung erstellen, der eine Geräte-ID anhand einer Datenbank prüft, um sicherzustellen, dass das Gerät über die Berechtigung zur Bereitstellung verfügt. Weitere Informationen finden Sie unter Vorabbereitstellung von Hooks im -AWS IoT CoreEntwicklerhandbuch.

  • Eine AWS IoT Richtlinie, die Sie dem Bereitstellungsantragszertifikat anfügen, damit Geräte die Flottenbereitstellungsvorlage registrieren und verwenden können.

Erstellen einer Token-Exchange-Rolle

Greengrass-Core-Geräte verwenden eine IAM-Servicerolle, die als Token-Exchange-Rolle bezeichnet wird, um Aufrufe von -AWSServices zu autorisieren. Das Gerät verwendet den AWS IoT Anmeldeinformationsanbieter, um temporäre AWS Anmeldeinformationen für diese Rolle abzurufen, die es dem Gerät ermöglichen, mit zu interagierenAWS IoT, Protokolle an Amazon CloudWatch Logs zu senden und benutzerdefinierte Komponentenartefakte von Amazon S3 herunterzuladen. Weitere Informationen finden Sie unter Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS.

Sie verwenden einen -AWS IoTRollenalias, um die Token-Exchange-Rolle für Greengrass-Core-Geräte zu konfigurieren. Mit Rollenaliasnamen können Sie die Token-Exchange-Rolle für ein Gerät ändern, die Gerätekonfiguration jedoch beibehalten. Weitere Informationen finden Sie unter Autorisieren von direkten Aufrufen an -AWSServices im AWS IoT Core -Entwicklerhandbuch.

In diesem Abschnitt erstellen Sie eine IAM-Rolle für den Tokenaustausch und einen -AWS IoTRollenalias, der auf die Rolle verweist. Wenn Sie bereits ein Greengrass-Core-Gerät eingerichtet haben, können Sie seine Token-Austauschrolle und seinen Rollenalias verwenden, anstatt neue zu erstellen.

So erstellen Sie eine IAM-Rolle für den Tokenaustausch
  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 Vertrauensrichtliniendokument enthält, das die Token-Exchange-Rolle benötigt.

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um GNU Nano zum Erstellen der Datei zu verwenden.

      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-Exchange-Rolle mit dem Vertrauensrichtliniendokument.

      • Ersetzen Sie GreengrassV2TokenExchangeRole 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 Anforderung 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 Zugriffsrichtliniendokument enthält, das die Token-Exchange-Rolle benötigt.

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um GNU Nano zum Erstellen der Datei zu verwenden.

      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 Core-Gerä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 aus dem Richtliniendokument.

      • Ersetzen Sie GreengrassV2TokenExchangeRoleAccess 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 Anforderung 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. Fügen 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 Anforderung erfolgreich ist.

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

    • Ersetzen Sie durch GreengrassCoreTokenExchangeRoleAlias den Namen des zu erstellenden Rollenalias.

    • 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 Anforderung erfolgreich ist.

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

    Um einen Rollenalias zu erstellen, müssen Sie über die Berechtigung verfügen, die IAM-Rolle für den Tokenaustausch an zu übergebenAWS 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 unter Erteilen von Berechtigungen an einen Benutzer zum Übergeben einer Rolle an einen -AWSService im AWS Identity and Access Management -Benutzerhandbuch.

Erstellen einer AWS IoT-Richtlinie

Nachdem Sie ein Gerät als -AWS IoTObjekt registriert haben, kann dieses Gerät ein digitales Zertifikat verwenden, um sich bei zu authentifizierenAWS. 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 es dem Gerät, mit AWS IoT und zu kommunizierenAWS IoT Greengrass.

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

In diesem Abschnitt erstellen Sie eine -AWS IoTRichtlinie, die an die Zertifikate aller Geräte AWS IoT angefügt wird. Mit diesem Ansatz können Sie Berechtigungen für alle Geräte als Flotte verwalten. Wenn Sie lieber eine neue AWS IoT Richtlinie für jedes Gerät erstellen möchten, können Sie diesen Abschnitt überspringen und auf die darin enthaltene Richtlinie verweisen, wenn Sie Ihre Flottenvorlage definieren.

So erstellen Sie eine AWS IoT-Richtlinie
  • Erstellen Sie eine -AWS IoTRichtlinie, 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 zukünftigen Änderungen funktioniert, die neue Greengrass-Operationen erfordern. Diese Richtlinie gewährt auch die -iot:AssumeRoleWithCertificateBerechtigung, die es Ihren Geräten ermöglicht, die Token-Exchange-Rolle 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 V2Core-Geräte.

    Gehen Sie wie folgt vor:

    1. Erstellen Sie eine -Datei, die das AWS IoT Richtliniendokument enthält, das Greengrass-Core-Geräte benötigen.

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um GNU Nano zum Erstellen der Datei zu verwenden.

      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 IoTRichtlinie aus dem Richtliniendokument.

      • Ersetzen Sie GreengrassV2IoTThingPolicy durch den Namen der zu erstellenden Richtlinie.

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

      Die Antwort sieht ähnlich wie im folgenden Beispiel aus, wenn die Anforderung 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 einer Flottenbereitstellungsvorlage

AWS IoT Flottenbereitstellungsvorlagen definieren, wie AWS IoT Objekte, Richtlinien und Zertifikate bereitgestellt werden. Um Greengrass-Core-Geräte mit dem Flottenbereitstellungs-Plugin bereitzustellen, müssen Sie eine Vorlage erstellen, die Folgendes angibt:

  • Eine -AWS IoTObjektressource. Sie können eine Liste vorhandener Objektgruppen angeben, um Komponenten auf jedem Gerät bereitzustellen, wenn es online geht.

  • Eine -AWS IoTRichtlinienressource. Diese Ressource kann eine der folgenden Eigenschaften definieren:

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

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

  • Eine -AWS IoTZertifikatressource. Diese Zertifikatressource muss den AWS::IoT::Certificate::Id Parameter verwenden, um das Zertifikat an das Core-Gerät anzuhängen. Weitere Informationen finden Sie unter J-ust-in-time Bereitstellung im AWS IoT -Entwicklerhandbuch.

In der Vorlage können Sie angeben, um das AWS IoT Objekt einer Liste vorhandener Objektgruppen hinzuzufügen. Wenn das Core-Gerät AWS IoT Greengrass zum ersten Mal eine Verbindung zu herstellt, erhält es Greengrass-Bereitstellungen für jede Objektgruppe, in der es Mitglied ist. Sie können Objektgruppen verwenden, um die neueste Software auf jedem Gerät bereitzustellen, sobald sie online ist. Weitere Informationen finden Sie unter Bereitstellen von AWS IoT Greengrass Komponenten auf Geräten.

Der AWS IoT Service benötigt Berechtigungen zum Erstellen und Aktualisieren von AWS IoT Ressourcen in Ihrem AWS-Konto bei der Bereitstellung von Geräten. Um dem AWS IoT Service Zugriff zu gewähren, erstellen Sie eine IAM-Rolle und geben sie an, wenn Sie die Vorlage erstellen. AWS IoT bietet eine -verwaltete Richtlinie, AWSIoTThingsRegistration, die den Zugriff auf alle Berechtigungen ermöglicht, die bei der Bereitstellung von Geräten verwenden AWS IoT könnte. 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 AWS IoT es ermöglicht, Ressourcen für Geräte bereitzustellen, und Sie erstellen eine Flottenbereitstellungsvorlage, die diese IAM-Rolle verwendet.

So erstellen Sie eine Flottenbereitstellungsvorlage
  1. Erstellen Sie eine IAM-Rolle, die annehmen AWS IoT kann, um Ressourcen in Ihrem bereitzustellenAWS-Konto. Gehen Sie wie folgt vor:

    1. Erstellen Sie eine -Datei, die das Vertrauensrichtliniendokument enthält, das AWS IoT die Übernahme der Rolle ermöglicht.

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um GNU Nano zum Erstellen der Datei zu verwenden.

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

      • Ersetzen Sie GreengrassFleetProvisioningRole 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 Anforderung 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. Überprüfen Sie die AWSIoTThingsRegistration Richtlinie, die den Zugriff auf alle Berechtigungen ermöglicht, die bei der Bereitstellung von Geräten verwenden AWS IoT könnte. Sie können diese verwaltete Richtlinie verwenden oder eine benutzerdefinierte Richtlinie erstellen, die eingeschränkte Berechtigungen für Ihren Anwendungsfall definiert. Wenn Sie eine benutzerdefinierte Richtlinie erstellen möchten, tun Sie dies jetzt.

    4. Fügen Sie die IAM-Richtlinie an die Flottenbereitstellungsrolle an.

      • 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 Anforderung erfolgreich ist.

  2. (Optional) Erstellen Sie einen Hook für die Vorabbereitstellung, bei dem es sich um eine -AWS LambdaFunktion handelt, die Vorlagenparameter validiert, die Geräte während der Registrierung angeben. Sie können einen Hook vor der Bereitstellung verwenden, um mehr Kontrolle darüber zu erhalten, welche und wie viele Geräte in Ihrem integriert sindAWS-Konto. Weitere Informationen finden Sie unter Vorabbereitstellung von Hooks im -AWS IoT CoreEntwicklerhandbuch.

  3. Erstellen Sie eine Flottenbereitstellungsvorlage. Gehen Sie wie folgt vor:

    1. Erstellen Sie eine -Datei, die das Bereitstellungsvorlagendokument enthält.

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um GNU Nano zum Erstellen der Datei zu verwenden.

      nano greengrass-fleet-provisioning-template.json

      Schreiben Sie das Bereitstellungsvorlagendokument. Sie können mit der folgenden Beispielbereitstellungsvorlage beginnen, die angibt, dass ein -AWS IoTObjekt mit den folgenden Eigenschaften erstellt werden soll:

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

      • Das Objekt ist Mitglied der Objektgruppe, die Sie im ThingGroupName Vorlagenparameter angeben. Die Objektgruppe muss in Ihrem vorhanden seinAWS-Konto.

      • Dem Objektzertifikat ist die AWS IoT Richtlinie mit dem Namen GreengrassV2IoTThingPolicy angefügt.

      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

      MyThing, und MyCertificate sind beliebige NamenMyPolicy, die jede Ressourcenspezifikation in der Flottenbereitstellungsvorlage identifizieren. verwendet diese Namen AWS IoT nicht in den Ressourcen, die es aus der Vorlage erstellt. Sie können diese Namen verwenden oder sie durch Werte ersetzen, die Ihnen helfen, jede Ressource in der Vorlage zu identifizieren.

    2. Erstellen Sie die Flottenbereitstellungsvorlage aus dem Dokument der Bereitstellungsvorlage.

      • Ersetzen Sie GreengrassFleetProvisioningTemplate 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 --pre-provisioning-hook -Argument an.

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

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

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

Erstellen eines Bereitstellungsantragszertifikats und eines privaten Schlüssels

Anforderungszertifikate sind X.509-Zertifikate, mit denen Geräte sich als AWS IoT Objekte registrieren und ein eindeutiges X.509-Gerätezertifikat abrufen können, das für reguläre Vorgänge verwendet werden kann. Nachdem Sie ein Anspruchszertifikat erstellt haben, fügen Sie eine -AWS IoTRichtlinie an, die es Geräten ermöglicht, damit sie eindeutige Gerätezertifikate erstellen und mit einer Flottenbereitstellungsvorlage bereitstellen können. Geräte mit dem Anspruchszertifikat können nur mithilfe der Bereitstellungsvorlage bereitstellen, 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

Die Bereitstellung privater Schlüssel für den Anspruch sollte jederzeit gesichert werden, auch auf Greengrass-Core-Geräten. Wir empfehlen Ihnen, Amazon- CloudWatch Metriken und -Protokolle zu verwenden, um Hinweise auf Missbrauch zu überwachen, z. B. die unbefugte Verwendung des Anspruchszertifikats zur Bereitstellung von Geräten. Wenn Sie einen Missbrauch feststellen, deaktivieren Sie das Bereitstellungsantragszertifikat, damit es nicht für die Gerätebereitstellung verwendet werden kann. Weitere Informationen finden Sie unter Überwachung AWS IoT im AWS IoT Core -Entwicklerhandbuch.

Um die Anzahl der Geräte und welche Geräte, die sich selbst in Ihrem registrieren, besser verwalten zu könnenAWS-Konto, können Sie beim Erstellen einer Flottenbereitstellungsvorlage einen Hook für die Vorabbereitstellung angeben. Ein Pre-Provisioning-Hook ist eine -AWS LambdaFunktion, die Vorlagenparameter validiert, die Geräte während der Registrierung bereitstellen. Sie können beispielsweise einen Hook für die Vorabbereitstellung erstellen, der eine Geräte-ID anhand einer Datenbank prüft, um sicherzustellen, dass das Gerät über die Berechtigung zur Bereitstellung verfügt. Weitere Informationen finden Sie unter Vorabbereitstellung von Hooks im -AWS IoT CoreEntwicklerhandbuch.

So erstellen Sie ein Bereitstellungsantragszertifikat und einen privaten Schlüssel
  1. Erstellen Sie einen Ordner, in dem Sie das Antragszertifikat und den privaten Schlüssel herunterladen.

    mkdir claim-certs
  2. Erstellen und speichern Sie ein Zertifikat und einen privaten Schlüssel für die Bereitstellung. AWS IoT stellt Clientzertifikate 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 Anforderung erfolgreich ist. Speichern Sie den ARN des Zertifikats, um ihn später zu verwenden.

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

    Gehen Sie wie folgt vor:

    1. Erstellen Sie eine -Datei, die das AWS IoT Richtliniendokument enthält, das Greengrass-Core-Geräte benötigen.

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um GNU Nano zum Erstellen der Datei zu verwenden.

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

      Kopieren Sie den folgenden JSON-Code in die Datei .

      • Ersetzen Sie jede Instance der Region durch die AWS-Region, in der Sie die Flottenbereitstellung eingerichtet haben.

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

      • Ersetzen Sie jede Instance 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 IoTRichtlinie aus dem Richtliniendokument.

      • Ersetzen Sie durch GreengrassProvisioningClaimPolicy den Namen der zu erstellenden Richtlinie.

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

      Die Antwort sieht ähnlich wie im folgenden Beispiel aus, wenn die Anforderung 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 an das Bereitstellungsantragszertifikat an.

    • Ersetzen Sie durch GreengrassProvisioningClaimPolicy den Namen der anzuhängenden Richtlinie.

    • Ersetzen Sie den Ziel-ARN durch den ARN des Bereitstellungsantragszertifikats.

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

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

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