View a markdown version of this page

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, die API-Operationen zur Auftragsverwaltung und -steuerung, das AWS Command Line Interface oder die AWS SDKs zum Erstellen und Verwalten von Aufträgen verwenden.

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 Code Signing 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-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 Jobdokumente finden Sie im Beispiel jobs-agent.js im AWS IoT SDK für JavaScript.

Vorsignierte URLs

Ihr Auftragsdokument kann eine vorsignierte Amazon S3-URL enthalten, die auf Ihre Code-Datei (oder eine andere Datei) verweist. Vorsignierte Amazon S3-URLs gelten nur für einen begrenzten Zeitraum und werden generiert, wenn ein Gerät ein Auftragsdokument anfordert. Da die vorsignierte URL nicht erstellt wird, wenn Sie das Auftragsdokument erstellen, setzen Sie stattdessen eine Platzhalter-URL in Ihr Auftragsdokument. Eine Platzhalter-URL sieht wie folgt aus:

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

Wobei:

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

  • code fileist der Amazon S3-Schlüssel der Codedatei.

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

IAM-Rolle zur Erteilung der Erlaubnis für den Download von Dateien von S3

Wenn Sie einen Auftrag erstellen, der vorsignierte Amazon S3-URLs verwendet, 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 optional ein Timeout für die vorsignierte URL angeben. Weitere Informationen finden Sie unter CreateJob.

Gewährung AWS IoT Jobs — Erlaubnis, Ihre Rolle zu übernehmen
  1. Gehen Sie zum Rollen-Hub der IAM-Konsole und wählen Sie Ihre Rolle.

  2. Wählen Sie auf der Registerkarte Vertrauensbeziehungen die Option Vertrauensstellung bearbeiten aus und ersetzen Sie das Richtliniendokument durch das folgende JSON-Dokument. 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:*. Vergewissern Sie sich, dass dies region Ihrer AWS IoT Region und Ihrer Kundenkonto-ID account-id entspricht. Weitere Informationen finden Sie unter Cross-service Confused Deputy Prevention.

    { "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 Auftrag ein Auftragsdokument verwendet, das ein Amazon S3-Objekt ist, wählen Sie Berechtigungen und verwenden Sie das folgende JSON. 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/*" } ] }

Vorsignierte URL für den Datei-Upload

Wenn Ihre Geräte während einer Auftragsbereitstellung Dateien in einen Amazon 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 innerhalb des key Attributs in der Platzhalter-URL für das Hochladen von ${thingName} Dateien in Ihrem Jobdokument jeweils maximal zwei der Schlüsselwörter, und ${executionNumber} als reservierte Schlüsselwörter verwenden. ${jobId} Der lokale Platzhalter, der diese reservierten Schlüsselwörter im key Attribut darstellt, wird analysiert und ersetzt, wenn die Auftragsausführung erstellt wird. Die Verwendung eines lokalen Platzhalters mit reservierten Schlüsselwörtern, die für jedes Gerät spezifisch sind, stellt sicher, dass jede von einem Gerät hochgeladene Datei für dieses Gerät spezifisch ist und nicht durch eine ähnliche hochgeladene Datei von einem anderen Gerät überschrieben wird, für das dieselbe Jobbereitstellung vorgesehen ist. Informationen zur Problembehandlung bei lokalen Platzhaltern innerhalb eines vorsignierten URL-Platzhalters beim Hochladen von Dateien während einer Jobbereitstellung finden Sie unter. Allgemeine Fehlermeldungen zur Fehlerbehebung

Anmerkung

Der Name des Amazon S3-Buckets 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 Jobdokument in eine vorsignierte Amazon S3-Upload-URL umgewandelt, wenn ein Gerät ihn empfängt. Ihre Geräte verwenden dies, um Dateien in einen Amazon S3-Ziel-Bucket hochzuladen.

Anmerkung

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

Vorsignierte URL unter Verwendung der Amazon S3-Versionierung

Der Schutz der Integrität einer Datei, die in einem Amazon S3-Bucket gespeichert ist, ist entscheidend für die sichere Bereitstellung von Aufträgen, die diese Datei verwenden, für Ihre Geräteflotte. Mithilfe der Amazon S3-Versionierung können Sie für jede Variante der Datei, die in Ihrem Amazon S3-Bucket gespeichert ist, eine Versionskennung hinzufügen, um jede Version der Datei nachzuverfolgen. 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-Buckets, die Versionierung verwenden, finden Sie unter Verwenden der Versionierung in Amazon S3-Buckets.

Wenn die Datei in Amazon S3 gespeichert ist und das Jobdokument einen vorsignierten URL-Platzhalter enthält, generiert AWS IoT Jobs eine vorsignierte URL im Jobdokument unter Verwendung des Amazon S3-Buckets, des Bucket-Schlüssels und der Version der im Amazon S3-Bucket gespeicherten Datei. Diese im Jobdokument generierte vorsignierte URL ersetzt den vorsignierten URL-Platzhalter, der ursprünglich im Jobdokument enthalten war. Wenn Sie die in Ihrem Amazon S3-Bucket gespeicherte Datei aktualisieren, versionId werden eine neue und nachfolgende Version der Datei erstellt, um die vorgenommenen Aktualisierungen zu signalisieren und die Möglichkeit zu bieten, diese bestimmte Datei bei zukünftigen Auftragsbereitstellungen als Ziel auszuwählen.

Anhand der folgenden Beispiele können Sie sich die vorsignierten Amazon S3-URLs in Ihrem Jobdokument vor und während der Bearbeitung ansehen. Verwenden Sie dazu: versionId

Amazon S3-Platzhalter für vorsignierte URLs (vor der Auftragsbereitstellung)

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

Vorsignierte Amazon S3-URL (während der Auftragsbereitstellung)

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

Weitere Informationen zu virtuell gehosteten Amazon S3-Objekt-URLs und Objekt-URLs im Pfadstil finden Sie unter Anfragen und Anfragen. Virtual-hosted-style Path-style

Anmerkung

Wenn Sie eine vorsignierte Amazon S3-URL anhängen versionId möchten, muss diese der Unterstützung für die URL-Codierung entsprechen. AWS SDK for Java 2.x Weitere Informationen finden Sie unter Änderungen beim Parsen von Amazon S3-URIs von Version 1 auf Version 2.

Versionsunterschiede zwischen vorsignierten URL-Platzhaltern in Amazon S3

In der folgenden Liste sind die Unterschiede zwischen den vorsignierten URL-Platzhaltern von Amazon S3 ${aws:iot:s3-presigned-url-v1 (Version 1) und ${aws:iot:s3-presigned-url-v2 (Version 2) aufgeführt:

  • Der vorsignierte URL-Platzhalter ${aws:iot:s3-presigned-url-v1 von Amazon S3 wird nicht unterstützt. version-id

  • Der vorsignierte URL-Platzhalter von Amazon S3 ${aws:iot:s3-presigned-url-v1 empfängt die Amazon S3-URL unverschlüsselt. Für den Amazon S3-Platzhalter für vorsignierte URLs ${aws:iot:s3-presigned-url-v2 muss die Amazon S3-URL so codiert sein, dass sie dem Amazon S3-SDK-Standard entspricht.