Verwalten von Aufträgen - 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.

Verwalten von Aufträgen

Verwenden Sie Aufträge, um Geräte über ein Software- oder Firmware-Update zu informieren. Sie können die AWS IoT Konsole, dieAPI-Operationen für Auftragsverwaltung und -kontrolle, die oder die verwenden AWS Command Line Interface, um Jobs AWS SDKszu erstellen und zu verwalten.

Codesignatur für Aufgaben

Wenn Sie Code an Geräte senden, damit Geräte erkennen können, ob der Code während der Übertragung geändert wurde, empfehlen wir, die Codedatei mit dem AWS CLI zu signieren. Anweisungen finden Sie unter Erstellen und Verwalten von Aufträgen mithilfe von AWS CLI.

Weitere Informationen finden Sie unter Wozu dient Codesignatur AWS IoT? .

Auftragsdokument

Bevor Sie einen Auftrag erstellen, müssen Sie ein Auftragsdokument erstellen. Wenn Sie Code Signing für verwenden AWS IoT, müssen Sie Ihr Auftragsdokument in einen versionierten Amazon S3 S3-Bucket hochladen. Weitere Informationen zum Erstellen eines Amazon S3-Buckets und zum Hochladen von Dateien in diesen Bucket finden Sie unter Erste Schritte mit Amazon Simple Storage Service im Amazon S3 Einführungshandbuch.

Tipp

Beispiele für Auftragsdokumente finden Sie im Beispiel jobs-agent.js im AWS IoT SDK for JavaScript.

Vorsigniert URLs

Ihr Jobdokument kann eine vorsignierte Amazon S3 S3-Datei enthaltenURL, die auf Ihre Codedatei (oder eine andere Datei) verweist. Vorsignierte Amazon S3 URLs sind nur für einen begrenzten Zeitraum gültig und werden generiert, wenn ein Gerät ein Auftragsdokument anfordert. Da das vorsignierte Dokument URL nicht bei der Erstellung des Auftragsdokuments erstellt wird, verwenden Sie stattdessen einen Platzhalter URL in Ihrem Auftragsdokument. Ein Platzhalter URL sieht wie folgt aus:

${aws:iot:s3-presigned-url:https://s3.region.amazonaws.com/<bucket>/<code file>}

Wobei:

  • bucket ist der Amazon S3 S3-Bucket, der die Codedatei enthält.

  • code file ist der Amazon S3 S3-Schlüssel der Codedatei.

Wenn ein Gerät das Auftragsdokument anfordert, AWS IoT generiert es das vorsignierte Dokument URL und ersetzt den Platzhalter durch das URL vorsignierte. URL Ihr Auftragsdokument wird dann an das Gerät gesendet.

IAMRolle, um die Erlaubnis zum Herunterladen von Dateien von S3 zu erteilen

Wenn Sie einen Job erstellen, der vorsigniertes Amazon S3 verwendetURLs, müssen Sie eine IAM Rolle angeben. Die Rolle muss die Berechtigung zum Herunterladen von Dateien aus dem Amazon S3-Bucket gewähren, in dem die Daten oder Updates gespeichert sind. Die Rolle muss auch die Berechtigung für AWS IoT zur Übernahme der Rolle gewähren.

Sie können ein optionales Timeout für den vorsignierten Benutzer angeben. URL Weitere Informationen finden Sie unter. CreateJob

Erteilen Sie AWS IoT Jobs die Erlaubnis, Ihre Rolle anzunehmen
  1. Gehen Sie zum Rollen-Hub der IAM Konsole und wählen Sie Ihre Rolle aus.

  2. Wählen Sie auf der Registerkarte Vertrauensbeziehungen die Option Vertrauensstellung bearbeiten aus und ersetzen Sie das Richtliniendokument durch das FolgendeJSON. Wählen Sie Update Trust Policy (Trust Policy aktualisieren).

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "iot.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  3. Verwenden Sie die globalen Konditionsschlüssel aws:SourceArn und aws:SourceAccount für die Richtlinie, um vor dem Confused-Deputy-Problem zu schützen.

    Wichtig

    Ihr aws:SourceArn muss das Format einhalten: arn:aws:iot:region:account-id:*. Stellen Sie sicher, dass region entspricht Ihrer AWS IoT Region und account-id entspricht Ihrer Kundenkonto-ID. Weitere Informationen finden Sie unter Vermeidung des dienstübergreifenden Confused-Deputy-Problems.

    { "Effect": "Allow", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:iot:*:123456789012:job/*" } } } ] }
  4. Wenn Ihr Job ein Jobdokument verwendet, das ein Amazon S3 S3-Objekt ist, wählen Sie Permissions und verwenden Sie FolgendesJSON. Dadurch wird eine Richtlinie hinzugefügt, die das Herunterladen von Dateien aus Ihrem Amazon S3-Bucket gestattet:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your_S3_bucket/*" } ] }

Vorsigniert URL für den Datei-Upload

Wenn Ihre Geräte während einer Auftragsbereitstellung Dateien in einen Amazon S3 S3-Bucket hochladen müssen, können Sie den folgenden vorsignierten URL Platzhalter in Ihr Jobdokument aufnehmen:

${aws:iot:s3-presigned-url-upload:https://s3.region.amazonaws.com/<bucket>/<key>}

Sie können maximal zwei von jedem${thingName},${jobId}, und ${executionNumber} als reservierte Schlüsselwörter innerhalb des key Attributs im Platzhalter für den Datei-Upload in Ihrem URL Jobdokument verwenden. Der lokale Platzhalter, der diese reservierten Schlüsselwörter im key Attribut darstellt, wird analysiert und ersetzt, wenn die Jobausführung erstellt wird. Durch die Verwendung eines lokalen Platzhalters mit reservierten Schlüsselwörtern für jedes Gerät wird sichergestellt, dass jede hochgeladene Datei von einem Gerät spezifisch für dieses Gerät ist und nicht durch eine ähnliche hochgeladene Datei von einem anderen Gerät überschrieben wird, auf das dieselbe Auftragsbereitstellung abzielt. Informationen zur Fehlerbehebung bei lokalen Platzhaltern innerhalb eines vordefinierten URL Platzhalters für das Hochladen von Dateien während einer Auftragsbereitstellung finden Sie unter. Allgemeine Fehlermeldungen zur Fehlerbehebung

Anmerkung

Der Amazon S3 S3-Bucket-Name darf nicht den lokalen Platzhalter enthalten, der die reservierten Schlüsselwörter für die hochgeladene Datei darstellt. Der lokale Platzhalter muss sich im Attribut befinden. key

Dieser vorsignierte URL Platzhalter wird in Ihrem Auftragsdokument URL in einen vorsignierten Amazon S3 S3-Upload umgewandelt, wenn ein Gerät ihn empfängt. Ihre Geräte verwenden dies, um Dateien in einen Amazon S3 S3-Ziel-Bucket hochzuladen.

Anmerkung

Wenn der Amazon S3 S3-Bucket und der Schlüssel nicht im obigen Platzhalter bereitgestellt werdenURL, generiert AWS IoT Jobs automatisch einen Schlüssel für jedes Gerät, wobei maximal zwei von jeweils ${thingName}${jobId}, und ${executionNumber} verwendet werden.

URLMit Amazon S3 S3-Versionierung vorab signiert

Der Schutz der Integrität einer Datei, die in einem Amazon S3 S3-Bucket gespeichert ist, ist entscheidend für die Gewährleistung sicherer Auftragsbereitstellungen unter Verwendung dieser Datei für Ihre Geräteflotte. Mithilfe der Amazon S3 S3-Versionierung können Sie für jede Variante der in Ihrem Amazon S3 S3-Bucket gespeicherten Datei eine Versions-ID hinzufügen, um jede Version der Datei zu verfolgen. Dies gibt Aufschluss darüber, welche Version der Datei mithilfe AWS IoT von Jobs für Ihre Geräteflotte bereitgestellt wird. Weitere Informationen zu Amazon S3 S3-Buckets, die Versionierung verwenden, finden Sie unter Verwenden der Versionierung in Amazon S3 S3-Buckets.

Wenn die Datei in Amazon S3 gespeichert ist und das Jobdokument einen vorsignierten URL Platzhalter enthält, generiert AWS IoT Jobs mithilfe des Amazon S3-Buckets, des Bucket-Schlüssels und der Version der URL im Amazon S3 S3-Bucket gespeicherten Datei ein im Job-Bucket vorsigniertes Dokument. Dieser im Job-Dokument URL generierte vorsignierte Platzhalter ersetzt den ursprünglich im Job-Dokument vorsignierten URL Platzhalter. Wenn Sie die in Ihrem Amazon S3 S3-Bucket gespeicherte Datei aktualisieren, versionId wird eine neue Version der Datei und weitere Versionen erstellt, um die vorgenommenen Aktualisierungen zu signalisieren und die Möglichkeit zu bieten, diese spezifische Datei bei future Auftragsbereitstellungen als Ziel zu verwenden.

In den folgenden Beispielen finden Sie eine Vorher- und Nachbetrachtung des Amazon S3, das URLs in Ihrem Auftragsdokument vorsigniert wurde, mit demversionId:

Vorsignierter Amazon S3 URL S3-Platzhalter (vor der Auftragsbereitstellung)

//Virtual-hosted style URL ${aws:iot:s3-presigned-url:https://bucket-name.s3.region-code.amazonaws.com/key-name%3FversionId%3Dversion-id} //Path-style URL ${aws:iot:s3-presigned-url:https://s3.region-code.amazonaws.com/bucket-name/key-name%3FversionId%3Dversion-id}

Amazon S3 vorab signiert URL (während der Auftragsbereitstellung)

//Virtual-hosted style URL ${aws:iot:s3-presigned-url:https://sample-bucket-name.s3.us-west-2.amazonaws.com/sample-code-file.png%3FversionId%3Dversion1} //Path-style ${aws:iot:s3-presigned-url:https://s3.us-west-2.amazonaws.com/sample-bucket-name/sample-code-file.png%3FversionId%3Dversion1}

Weitere Informationen zu virtuell gehosteten Objekten und URLs Pfadobjekten in Amazon S3 finden Sie unter Virtual-hosted-style Anfragen und Anfragen im Path-Stil.

Anmerkung

Wenn Sie an ein vorsigniertes Amazon S3 anhängen versionId möchtenURL, muss es der Kodierungsunterstützung entsprechenURL. AWS SDK for Java 2.x Weitere Informationen finden Sie unter Änderungen beim Parsen von Amazon S3 URIs von Version 1 zu Version 2.