View a markdown version of this page

Bereiten Sie den Raspberry Pi auf die Ausführung von Jobs vor - 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.

Bereiten Sie den Raspberry Pi auf die Ausführung von Jobs vor

Die Verfahren in diesem Abschnitt beschreiben, wie Sie Ihren Raspberry Pi für die Ausführung von Jobs mithilfe des AWS IoT Geräteclients vorbereiten.

Anmerkung

Diese Verfahren sind gerätespezifisch. Wenn Sie die Verfahren in diesem Abschnitt mit mehr als einem Gerät gleichzeitig durchführen möchten, benötigt jedes Gerät eine eigene Richtlinie und ein eindeutiges, gerätespezifisches Zertifikat sowie einen ebensolchen Objektnamen. Um jedem Gerät seine eigenen Ressourcen zuzuweisen, führen Sie dieses Verfahren einmal für jedes Gerät durch und ändern Sie dabei die gerätespezifischen Elemente, wie in den Verfahren beschrieben.

Bereitstellen Ihres Raspberry Pi, um Jobs zu demonstrieren

Die Verfahren in diesem Abschnitt stellen Ihren Raspberry Pi bereit, AWS IoT indem Sie AWS IoT Ressourcen und Gerätezertifikate dafür erstellen.

Erstellen Sie Gerätezertifikatsdateien und laden Sie sie herunter, um dies zu demonstrieren AWS IoT jobs

Mit diesem Verfahren werden die Gerätezertifikatsdateien für diese Demo erstellt.

Wenn Sie mehr als ein Gerät vorbereiten, muss dieses Verfahren auf jedem Gerät durchgeführt werden.

So erstellen Sie die Gerätezertifikatsdateien für Ihren Raspberry Pi und laden sie herunter:

Gehen Sie im Terminalfenster auf Ihrem lokalen Host-Computer, der mit Ihrem Raspberry Pi verbunden ist, folgendermaßen vor:

  1. Geben Sie den folgenden Befehl ein, um die Gerätezertifikatsdateien für Ihr Gerät zu erstellen.

    aws iot create-keys-and-certificate \ --set-as-active \ --certificate-pem-outfile "~/certs/jobs/device.pem.crt" \ --public-key-outfile "~/certs/jobs/public.pem.key" \ --private-key-outfile "~/certs/jobs/private.pem.key"

    Die Ausgabe des Befehls ähnelt der Folgenden: Speichern Sie den certificateArn-Wert zur späteren Verwendung.

    { "certificateArn": "arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269", "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269", "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n" } }
  2. Geben Sie die folgenden Befehle ein, um die Berechtigungen für das Zertifikatsverzeichnis und seine Dateien festzulegen.

    chmod 700 ~/certs/jobs chmod 644 ~/certs/jobs/* chmod 600 ~/certs/jobs/private.pem.key
  3. Führen Sie diesen Befehl aus, um die Berechtigungen für Ihre Zertifikatsverzeichnisse und -dateien zu überprüfen.

    ls -l ~/certs/jobs

    Der Befehl sollte ähnliche Werte wie die hier angezeigten ausgeben, mit der Ausnahme, dass Datum und Uhrzeit unterschiedlich sein werden.

    -rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key -rw-r--r-- 1 pi pi 451 Oct 28 13:02 public.pem.key

Nachdem Sie die Gerätezertifikatsdateien auf Ihren Raspberry Pi heruntergeladen haben, können Sie mit Bereitstellen Ihres Raspberry Pi, um Jobs zu demonstrieren fortfahren.

Create AWS IoT Ressourcen zum Demonstrieren AWS IoT jobs

Erstellen Sie die AWS IoT Ressourcen für dieses Gerät.

Wenn Sie mehr als ein Gerät vorbereiten, muss dieses Verfahren auf jedem Gerät durchgeführt werden.

Um Ihr Gerät bereitzustellen in AWS IoT:

Gehen Sie im Terminalfenster auf Ihrem lokalen Host-Computer, der mit Ihrem Raspberry Pi verbunden ist, folgendermaßen vor:

  1. Geben Sie den folgenden Befehl ein, um die Adresse des Gerätedatenendpunkts für Ihr AWS-Konto abzurufen.

    aws iot describe-endpoint --endpoint-type IoT:Data-ATS

    Der Endpunktwert hat sich seit der letzten Ausführung dieses Befehls nicht geändert. Wenn Sie den Befehl hier erneut ausführen, können Sie den Datenendpunktwert leicht finden und in die in diesem Tutorial verwendete Konfigurationsdatei einfügen.

    Die Ausgabe des describe-endpoint-Befehls ähnelt der folgenden: Notieren Sie sich den endpointAddress-Wert zur späteren Verwendung.

    { "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com" }
  2. uniqueThingNameErsetzen Sie es durch einen eindeutigen Namen für Ihr Gerät. Wenn Sie dieses Tutorial mit mehreren Geräten durchführen möchten, geben Sie jedem Gerät einen eigenen Namen. Beispiele: TestDevice01, TestDevice02 usw.

    Geben Sie diesen Befehl ein, um eine neue Ressource AWS IoT für Ihren Raspberry Pi zu erstellen.

    aws iot create-thing --thing-name "uniqueThingName"

    Da eine AWS IoT Ding-Ressource eine virtuelle Repräsentation Ihres Geräts in der Cloud ist, können wir mehrere Ressourcen erstellen, AWS IoT um sie für verschiedene Zwecke zu verwenden. Sie können alle von demselben physischen IoT-Gerät verwendet werden, um verschiedene Aspekte des Geräts darzustellen.

    Anmerkung

    Wenn Sie die Richtlinie für mehrere Geräte sichern möchten, können Sie ${iot:Thing.ThingName} anstelle des statischen Objektnamens verwenden, uniqueThingName.

    In diesen Tutorials wird jeweils nur eine Objektressource pro Gerät verwendet. Auf diese Weise stellen sie in diesen Tutorials die verschiedenen Demos dar, sodass Sie, nachdem Sie die AWS IoT Ressourcen für eine Demo erstellt haben, die Demos mit den Ressourcen wiederholen können, die Sie speziell für die jeweilige Demo erstellt haben.

    Wenn Ihre AWS IoT Ding-Ressource erstellt wurde, gibt der Befehl eine Antwort wie diese zurück. Notieren Sie sich den thingArn-Wert, damit er später verwendet werden kann, wenn Sie den Job für die Ausführung auf diesem Gerät erstellen.

    { "thingName": "uniqueThingName", "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/uniqueThingName", "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd" }
  3. Im Terminalfenster:

    1. Öffnen Sie einen Texteditor, z. B. nano.

    2. Kopieren Sie dieses JSON-Dokument und fügen Sie es in Ihren geöffneten Texteditor ein.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-west-2:123456789012:client/uniqueThingName" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic", "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/job/*", "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*", "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic", "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*", "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/things/uniqueThingName/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic", "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:DescribeJobExecution", "iot:GetPendingJobExecutions", "iot:StartNextPendingJobExecution", "iot:UpdateJobExecution" ], "Resource": [ "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName" ] } ] }
    3. Ersetzen Sie im Editor im Resource Abschnitt jeder Richtlinienerklärung us-west-2:57EXAMPLE833 durch Ihren AWS-Region, einen Doppelpunkt (:) und Ihre 12-stellige AWS-Konto Zahl.

    4. Ersetzen Sie im Editor in jeder Grundsatzerklärung durch den Namen des uniqueThingName Dings, den Sie dieser Ding-Ressource gegeben haben.

    5. Speichern Sie die Datei als ~/policies/jobs_test_thing_policy.json in Ihrem Texteditor.

      Wenn Sie dieses Verfahren für mehrere Geräte ausführen, speichern Sie die Datei auf jedem Gerät unter diesem Dateinamen.

  4. uniqueThingNameErsetzen Sie es durch den Dingnamen für das Gerät, und führen Sie dann diesen Befehl aus, um eine auf das Gerät zugeschnittene AWS IoT Richtlinie zu erstellen.

    aws iot create-policy \ --policy-name "JobTestPolicyForuniqueThingName" \ --policy-document "file://~/policies/jobs_test_thing_policy.json"

    Wenn die Richtlinie erstellt wurde, gibt der Befehl eine Antwort wie die folgende zurück:

    { "policyName": "JobTestPolicyForuniqueThingName", "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/JobTestPolicyForuniqueThingName", "policyDocument": "{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Connect\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Publish\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Subscribe\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Receive\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*\"\n]\n}\n]\n}\n", "policyVersionId": "1" }
  5. uniqueThingNameErsetzen Sie es durch den Dingnamen für das Gerät und certificateArn durch den certificateArn Wert, den Sie zuvor in diesem Abschnitt für dieses Gerät gespeichert haben, und führen Sie dann diesen Befehl aus, um die Richtlinie an das Gerätezertifikat anzuhängen.

    aws iot attach-policy \ --policy-name "JobTestPolicyForuniqueThingName" \ --target "certificateArn"

    Bei erfolgreicher Ausführung gibt dieser Befehl nichts zurück.

  6. uniqueThingNameErsetzen Sie es durch den Dingnamen für das Gerät, certificateArn ersetzen Sie es durch den certificateArn Wert, den Sie zuvor in diesem Abschnitt gespeichert haben, und führen Sie dann diesen Befehl aus, um das Gerätezertifikat an die AWS IoT Dingressource anzuhängen.

    aws iot attach-thing-principal \ --thing-name "uniqueThingName" \ --principal "certificateArn"

    Bei erfolgreicher Ausführung gibt dieser Befehl nichts zurück.

Nachdem Sie Ihren Raspberry Pi erfolgreich bereitgestellt haben, können Sie diesen Abschnitt für einen anderen Raspberry Pi in Ihrem Test wiederholen oder, falls alle Geräte bereitgestellt wurden, mit Konfigurieren Sie das AWS IoT Device Client zum Ausführen des Jobs Agents fortfahren.

Konfigurieren Sie das AWS IoT Device Client zum Ausführen des Jobs Agents

Dieses Verfahren erstellt eine Konfigurationsdatei für den AWS IoT Device Client, um den Job-Agenten auszuführen:.

Hinweis: Wenn Sie mehr als ein Gerät vorbereiten, muss dieses Verfahren auf jedem Gerät durchgeführt werden.

Um die Konfigurationsdatei zum Testen der zu erstellen AWS IoT Geräte-Client:
  1. Gehen Sie im Terminalfenster auf Ihrem lokalen Host-Computer, der mit Ihrem Raspberry Pi verbunden ist, folgendermaßen vor:

    1. Öffnen Sie einen Texteditor, z. B. nano.

    2. Kopieren Sie dieses JSON-Dokument und fügen Sie es in Ihren geöffneten Texteditor ein.

      { "endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com", "cert": "~/certs/jobs/device.pem.crt", "key": "~/certs/jobs/private.pem.key", "root-ca": "~/certs/AmazonRootCA1.pem", "thing-name": "uniqueThingName", "logging": { "enable-sdk-logging": true, "level": "DEBUG", "type": "STDOUT", "file": "" }, "jobs": { "enabled": true, "handler-directory": "" }, "tunneling": { "enabled": false }, "device-defender": { "enabled": false, "interval": 300 }, "fleet-provisioning": { "enabled": false, "template-name": "", "template-parameters": "", "csr-file": "", "device-key": "" }, "samples": { "pub-sub": { "enabled": false, "publish-topic": "", "publish-file": "", "subscribe-topic": "", "subscribe-file": "" } }, "config-shadow": { "enabled": false }, "sample-shadow": { "enabled": false, "shadow-name": "", "shadow-input-file": "", "shadow-output-file": "" } }
    3. Ersetzen Sie den endpoint Wert durch den Gerätedaten-Endpunktwert für Ihr AWS-Konto , den Sie in gefunden habenStellen Sie Ihr Gerät bereit in AWS IoT Core.

    4. uniqueThingNameErsetzen Sie ihn durch den Namen der Sache, den Sie für dieses Gerät verwendet haben.

    5. Speichern Sie die Datei als ~/dc-configs/dc-jobs-config.json in Ihrem Texteditor.

  2. Führen Sie diesen Befehl aus, um die Dateiberechtigungen der neuen Konfigurationsdatei festzulegen.

    chmod 644 ~/dc-configs/dc-jobs-config.json

Sie werden den MQTT-Testclient für diesen Test nicht verwenden. Das Gerät tauscht zwar auftragsbezogene MQTT-Nachrichten mit ihnen aus AWS IoT, Meldungen zum Auftragsfortschritt werden jedoch nur mit dem Gerät ausgetauscht, auf dem der Job ausgeführt wird. Da Meldungen zum Auftragsfortschritt nur mit dem Gerät ausgetauscht werden, auf dem der Job ausgeführt wird, können Sie sie nicht von einem anderen Gerät aus abonnieren, z. B. von der Konsole aus. AWS IoT

Nachdem Sie die Konfigurationsdatei gespeichert haben, können Sie mit Erstellen Sie den Job und führen Sie ihn aus in AWS IoT mit AWS IoT Geräte-Client fortfahren.