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 für 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.
Verfahren in diesem Tutorial
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.
Themen
Erstellen Sie Gerätezertifikatsdateien und laden Sie sie herunter, um AWS IoT Jobs zu demonstrieren
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:
-
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
-Wert zur späteren Verwendung.certificateArn
{ "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" } } -
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
-
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.
Erstellen Sie AWS IoT Ressourcen, um AWS IoT Jobs zu demonstrieren
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.
So stellen Sie Ihr Gerät in AWS IoT bereit:
Gehen Sie im Terminalfenster auf Ihrem lokalen Host-Computer, der mit Ihrem Raspberry Pi verbunden ist, folgendermaßen vor:
-
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
-Wert zur späteren Verwendung.endpointAddress
{ "endpointAddress": "
a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com
" } -
Ersetzen
uniqueThingName
mit einem 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 Ding-Ressource AWS IoT für Ihren Raspberry Pi zu erstellen.
aws iot create-thing --thing-name "
uniqueThingName
"Da AWS IoT es sich bei einer Ding-Ressource um eine virtuelle Darstellung Ihres Geräts in der Cloud handelt, können wir mehrere Ding-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.
anstelle des statischen Objektnamens verwenden,ThingName
}
.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, zurückgehen und die Demos wiederholen können, indem Sie die Ressourcen verwenden, die Sie jeweils speziell erstellt haben.
Wenn Ihre AWS IoT Ding-Ressource erstellt wurde, gibt der Befehl eine Antwort wie diese zurück. Notieren Sie sich den
-Wert, damit er später verwendet werden kann, wenn Sie den Job für die Ausführung auf diesem Gerät erstellen.thingArn
{ "thingName": "
uniqueThingName
", "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/uniqueThingName
", "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd" } -
Im Terminalfenster:
-
Öffnen Sie einen Texteditor, z. B.
nano
. -
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:57EXAMPLE833
:client/uniqueThingName
" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833
:topic/test/dc/pubtopic", "arn:aws:iot:us-west-2:57EXAMPLE833
:topic/$aws/events/job/*", "arn:aws:iot:us-west-2:57EXAMPLE833
:topic/$aws/events/jobExecution/*", "arn:aws:iot:us-west-2:57EXAMPLE833
:topic/$aws/things/uniqueThingName
/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833
:topicfilter/test/dc/subtopic", "arn:aws:iot:us-west-2:57EXAMPLE833
:topic/$aws/events/jobExecution/*", "arn:aws:iot:us-west-2:57EXAMPLE833
:topicfilter/$aws/things/uniqueThingName
/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833
:topic/test/dc/subtopic", "arn:aws:iot:us-west-2:57EXAMPLE833
:topic/$aws/things/uniqueThingName
/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:DescribeJobExecution", "iot:GetPendingJobExecutions", "iot:StartNextPendingJobExecution", "iot:UpdateJobExecution" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833
:topic/$aws/things/uniqueThingName
" ] } ] } -
Ersetzen Sie im Editor im
Resource
Abschnitt jeder Grundsatzerklärungus-west-2:57EXAMPLE833
mit Ihrem AWS-Region, einem Doppelpunkt (:) und Ihrer 12-stelligen AWS-Konto Zahl. -
Ersetzen Sie im Editor in jeder Grundsatzerklärung
uniqueThingName
mit dem Namen, den du diesem Ding als Ressource gegeben hast. -
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.
-
-
Ersetzen
uniqueThingName
mit dem Ding-Namen für das Gerät, und führen Sie dann diesen Befehl aus, um eine AWS IoT Richtlinie zu erstellen, die auf dieses Gerät zugeschnitten ist.aws iot create-policy \ --policy-name "JobTestPolicyFor
uniqueThingName
" \ --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": "JobTestPolicyFor
uniqueThingName
", "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" -
Ersetzen
uniqueThingName
mit dem Ding-Namen für das Gerät und
mit demcertificateArn
certificateArn
Wert, den Sie weiter oben 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 "JobTestPolicyFor
uniqueThingName
" \ --target "certificateArn
"Bei erfolgreicher Ausführung gibt dieser Befehl nichts zurück.
-
Ersetzen
uniqueThingName
durch den Ding-Namen für das Gerät
ersetzen Sie ihn durch dencertificateArn
certificateArn
Wert, den Sie weiter oben in diesem Abschnitt gespeichert haben, und führen Sie dann diesen Befehl aus, um das Gerätezertifikat an die AWS IoT Ding-Ressource 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 den AWS IoT Geräteclient so, dass er den Job-Agent ausführt fortfahren.
Konfigurieren Sie den AWS IoT Geräteclient so, dass er den Job-Agent ausführt
Mit diesem Verfahren wird eine Konfigurationsdatei für den AWS IoT Geräteclient erstellt, 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.
So erstellen Sie die Konfigurationsdatei zum Testen des AWS IoT Geräteclients:
-
Gehen Sie im Terminalfenster auf Ihrem lokalen Host-Computer, der mit Ihrem Raspberry Pi verbunden ist, folgendermaßen vor:
-
Öffnen Sie einen Texteditor, z. B.
nano
. -
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": "" } } -
Ersetzen Sie das
endpoint
Wert durch den Endpunktwert der Gerätedaten für Ihren AWS-Konto , den Sie in gefunden habenStellen Sie Ihr Gerät bereit in AWS IoT Core. -
Ersetzen
uniqueThingName
mit dem Dingnamen, den Sie für dieses Gerät verwendet haben. -
Speichern Sie die Datei als
~/dc-configs/dc-jobs-config.json
in Ihrem Texteditor.
-
-
Führen Sie diesen Befehl aus, um die Dateiberechtigungen der neuen Konfigurationsdatei festzulegen.
chmod 644 ~/dc-configs/dc-jobs-config.json
Sie werden den MQTTTestclient für diesen Test nicht verwenden. Das Gerät tauscht zwar auftragsbezogene MQTT Nachrichten mit AWS IoT, Nachrichten über den Auftragsfortschritt werden jedoch nur mit dem Gerät ausgetauscht, auf dem der Job ausgeführt wird. Da Nachrichten über den Auftragsstatus 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 AWS IoT Konsole aus.
Nachdem Sie die Konfigurationsdatei gespeichert haben, können Sie mit Erstellen Sie den Job AWS IoT mit dem AWS IoT Geräteclient und führen Sie ihn aus fortfahren.