Jobs vorbereiten AWS IoT - 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.

Jobs vorbereiten AWS IoT

AWS IoT Device Management Der Softwarepaketkatalog erweitert AWS IoT Jobs um Ersetzungsparameter und die Integration mit AWS IoT Flottenindizierung, dynamischen Dinggruppen und dem reservierten Named AWS IoT Shadow des Dings.

Anmerkung

Um alle Funktionen nutzen zu können, die der Softwarepaketkatalog bietet, müssen Sie die folgenden AWS Identity and Access Management (IAM) Rollen und Richtlinien erstellen: AWS IoT Job-Rechte zum Bereitstellen von Paketversionen und AWS IoT Job-Rechte zum Aktualisieren des reservierten Named Shadow. Weitere Informationen finden Sie unter Vorbereitung der Sicherheit

Ersetzungsparameter für Jobs AWS IoT

Sie können Substitutionsparameter als Platzhalter in Ihrem AWS IoT Jobdokument verwenden. Wenn der Auftragsservice auf einen Substitutionsparameter stößt, verweist er den Auftrag auf das Attribut einer benannten Softwareversion für den Parameterwert. Sie können diesen Prozess verwenden, um ein einzelnes Auftragsdokument zu erstellen und die Metadaten über allgemeine Attribute an den Auftrag zu übergeben. Sie könnten beispielsweise einen Amazon Simple Storage Service (Amazon S3)URL, ein Softwarepaket Amazon Resource Name (ARN) oder eine Signatur über Paketversionsattribute an das Auftragsdokument übergeben.

Die Substitutionsparameter sollten im Jobdokument wie folgt formatiert sein:

  • Name und Paketversion des Softwarepakets

    • Die leere Zeichenfolge zwischen package::version steht für den Ersatzparameter für den Softwarepaketnamen. Die leere Zeichenfolge zwischen version::attribute steht für den Ersetzungsparameter der Softwarepaketversion. Das folgende Beispiel zeigt, wie Sie die Ersetzungsparameter für den Paketnamen und die Paketversion in einem Jobdokument verwenden:. ${aws:iot:package::version::attributes:<attributekey>}

    • Das Jobdokument füllt diese Ersetzungsparameter automatisch anhand der Version ARN aus den Paketversionsdetails aus. Wenn Sie einen Job oder eine Jobvorlage für eine Einzelpaket-Bereitstellung mit einem API CLI Or-Befehl erstellen, wird die Version ARN für eine Paketversion durch den destinationPackageVersions Parameter in und dargestellt. CreateJob DescribeJob

  • Alle Attribute für eine Softwarepaketversion

    • Das folgende Beispiel zeigt, wie Sie den Ersatzparameter „Alle Attribute“ einer Softwarepaketversion in einem Jobdokument verwenden: ${aws:iot:package:<packageName>:version:<versionName>:attributes}

Anmerkung

Der Paketname, die Paketversion und alle Ersetzungsparameter für Attribute können zusammen verwendet werden. Das folgende Beispiel zeigt, wie alle drei Substitutionsparameter in einem Jobdokument verwendet werden: ${aws:iot:package::version::attributes}

Im folgenden Beispiel gibt es ein Softwarepaket mit dem Namen samplePackage und dem Namen einer Paketversion mit 2.1.5 den folgenden Attributen:

  • Name: s3URL, Wert: https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile

    • Dieses Attribut identifiziert den Speicherort der Codedatei, die in Amazon S3 gespeichert ist.

  • Name: signature, Wert: aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj

    • Dieses Attribut stellt einen Wert für die Codesignatur bereit, den das Gerät als Sicherheitsmaßnahme benötigt. Weitere Informationen finden Sie unter Codesignatur für Aufträge. Hinweis: Dieses Attribut ist ein Beispiel und nicht als Teil des Softwarepaket-Katalogs oder von Aufträgen erforderlich.

Für s3URL wird der Auftragsdokumentparameter wie folgt geschrieben:

{ "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}" }

Für signature wird der Auftragsdokumentparameter wie folgt geschrieben:

{ "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}" }

Das vollständige Auftragsdokument ist wie folgt geschrieben:

{ ... "Steps": { "uninstall": ["samplePackage"], "download": [ { "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}" }, ], "signature": [ "samplePackage" : "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}" ] } }

Nachdem die Ersetzung vorgenommen wurde, wird das folgende Auftragsdokument auf den Geräten bereitgestellt:

{ ... "Steps": { "uninstall": ["samplePackage"], "download": [ { "samplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile" }, ], "signature": [ "samplePackage" : "aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj" ] } }

Ersetzungsparameter (Vorher-Nachher-Ansicht)

Ersetzungsparameter vereinfachen die Erstellung eines Auftragsdokuments mithilfe verschiedener Flags, z. B. $default für die Standardpaketversion. Dadurch entfällt die Notwendigkeit, spezifische Paketversionsmetadaten für jede Auftragsbereitstellung manuell einzugeben, da diese Flags automatisch mit den referenzierten Metadaten in der jeweiligen Paketversion gefüllt werden. Weitere Informationen zu Paketversionsattributen, z. B. $default zur Standard-Paketversion, finden Sie unter. Vorbereitung des Auftragsdokuments und der Paketversion für die Bereitstellung

Klicken Sie im Fenster des AWS Management ConsoleEditors für die Installationsanweisungsdatei während der Bereitstellung einer Paketversion auf die Schaltfläche Substitution in der Vorschau anzeigen, um das Auftragsdokument mit und ohne die Ersetzungsparameter anzuzeigen.

Mithilfe des Parameters „Before-Substitution“ im Feld und können Sie sich die API Antwort vor DescribeJob und GetJobDocument APIs nach dem Entfernen der Substitutionsparameter anzeigen lassen. Sehen Sie sich die folgenden Beispiele mit dem und an: DescribeJob GetJobDocument APIs

  • DescribeJob

    • Standardansicht

      { "jobId": "<jobId>", "description": "<description>", "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/1.0.2"] }
    • Ansicht vor der Ersetzung

      { "jobId": "<jobId>", "description": "<description>", "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"] }
  • GetJobDocument

    • Standardansicht

      { "attributes": { "location": "prod-artifacts.s3.us-east-1.amazonaws.com/mqtt-core", "signature": "IQoJb3JpZ2luX2VjEIrwEaCXVzLWVhc3QtMSJHMEUCIAofPNPpZ9cI", "streamName": "mqtt-core", "fileId": "0" }, }
    • Ansicht vor der Ersetzung

      { "attributes": "${aws:iot:package:TestPackage:version:$default:attributes}", }

Weitere Informationen zu AWS IoT Jobs, zum Erstellen von Jobdokumenten und zum Bereitstellen von Jobs finden Sie unter Jobs.

Vorbereitung des Auftragsdokuments und der Paketversion für die Bereitstellung

Wenn eine Paketversion erstellt wird, befindet sie sich in einem draft Zustand, der anzeigt, dass sie für die Bereitstellung vorbereitet wird. Um die Paketversion für die Bereitstellung vorzubereiten, müssen Sie ein Job-Dokument erstellen, das Dokument an einem Ort speichern, auf den der Job zugreifen kann (z. B. Amazon S3), und sicherstellen, dass die Paketversion die Attributwerte enthält, die das Job-Dokument verwenden soll. (Hinweis: Sie können Attribute für eine Paketversion nur aktualisieren, solange sie sich im draft Status befindet.)

Wenn Sie einen AWS IoT Job oder eine Jobvorlage für eine Einzelpaket-Bereitstellung erstellen, haben Sie die folgenden Optionen, um Ihr Jobdokument anzupassen:

Anweisungsdatei für die Bereitstellung () recipe

  • Die Bereitstellungsanweisungsdatei für eine Paketversion enthält die Bereitstellungsanweisungen, einschließlich eines Inline-Jobdokuments, für die Bereitstellung einer Paketversion auf mehreren Geräten. Die Datei ordnet einer Paketversion spezifische Bereitstellungsanweisungen zu, um eine schnelle und effiziente Auftragsbereitstellung zu ermöglichen.

    In können Sie die AWS Management Console Datei im Vorschaufenster mit den Bereitstellungsanweisungen auf der Registerkarte Konfigurationen für die Versionsbereitstellung des Workflows „Neues Paket erstellen“ erstellen. Mithilfe der Option Mit AWS IoT empfohlener Datei beginnen können Sie automatisch eine Anweisungsdatei aus Ihren Paketversionsattributen generieren oder Ihr vorhandenes Auftragsdokument verwenden, das in einem Amazon S3 S3-Bucket gespeichert ist, indem Sie Ihre eigene Bereitstellungsanweisungsdatei verwenden. AWS IoT

    Anmerkung

    Wenn Sie Ihr eigenes Auftragsdokument verwenden, können Sie es direkt im Vorschaufenster mit den Bereitstellungsanweisungen aktualisieren. Ihr ursprüngliches Auftragsdokument, das in Ihrem Amazon S3 S3-Bucket gespeichert ist, wird dadurch jedoch nicht automatisch aktualisiert.

    Wenn Sie den Befehl AWS CLI oder verwenden, recipe steht ein API Befehl wie CreatePackageVersion GetPackageVersionUpdatePackageVersion, oder für die Bereitstellungsanweisungsdatei, die ein Inline-Jobdokument enthält.

    Weitere Informationen darüber, was ein Jobdokument ist, finden Sie unterGrundkonzepte.

    Im folgenden Beispiel finden Sie die Bereitstellungsanweisungsdatei, dargestellt durchrecipe:

    { "packageName": "sample-package-name", "versionName": "sample-package-version", ... "recipe": "{...}" }
    Anmerkung

    Die Bereitstellungsanweisungsdatei, wie sie durch dargestellt wird, recipe kann aktualisiert werden, wenn sich eine Paketversion im published Statusstatus befindet, da sie von den Metadaten der Paketversion getrennt ist. Während der Arbeitsbereitstellung wird sie unveränderlich.

ArtifactVersionsattribut

  • Mithilfe des Versionsattributs artifact in Ihrer Softwarepaketversion können Sie den Amazon S3 S3-Speicherort für Ihre Paketversionsartefakte hinzufügen. Wenn eine Auftragsbereitstellung für Ihre Paketversion mithilfe von AWS IoT Jobs ausgelöst wird, wird der vorsignierte URL Platzhalter ${aws:iot:package:<packageName>:version:<versionName>:artifact-location:s3-presigned-url} im Jobdokument anhand des Amazon S3 S3-Buckets, des Bucket-Schlüssels und der Version der im Amazon S3 S3-Bucket gespeicherten Datei aktualisiert. Der Amazon S3 S3-Bucket, in dem die Paketversionsartefakte gespeichert sind, muss sich in derselben Region befinden, in der die Paketversion erstellt wurde.

    Anmerkung

    Um mehrere Objektversionen derselben Datei in Ihrem Amazon S3 S3-Bucket zu speichern, müssen Sie die Versionierung in Ihrem Bucket aktivieren. Weitere Informationen finden Sie unter Versionierung für Buckets aktivieren.

    Um auf die Paketversionsartefakte im Amazon S3 S3-Bucket zuzugreifen, wenn Sie die UpdatePackageVersion API Operation CreatePackageVersion oder verwenden, benötigen Sie die folgenden Berechtigungen:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObjectVersion", "Resource": "arn:<partition>:s3:::<bucket>/<key>" } ] }

    Weitere Informationen zum Versionsattribut artifact in den UpdatePackageVersion API Operationen CreatePackageVersion und finden Sie unter CreatePackageVersionund UpdatePackageVersion.

    Sehen Sie sich das folgende Beispiel an, das das Versionsattribut zeigt, das die Artefaktposition in Amazon S3 artifact unterstützt, wenn eine neue Paketversion erstellt wird:

    { "packageName": "sample package name", "versionName": "1.0", "artifact": { "s3Location": { "bucket": "firmware", "key": "image.bin", "version": "12345" } } }
    Anmerkung

    Wenn eine Paketversion von einem Statusstatus in einen draft Statusstatus aktualisiert wird, werden die Paketversionsattribute und der Speicherort der Artefakte unveränderlich. published Um diese Informationen zu aktualisieren, müssen Sie eine neue Paketversion erstellen und diese Aktualisierungen durchführen, während Sie sich im Statusstatus befinden. draft

Version Package

  • In den verfügbaren Versionen des Softwarepakets kann eine Standardversion des Softwarepakets angegeben werden, die eine sichere und stabile Paketversion bietet. Dies dient als Basisversion des Softwarepakets, wenn Sie die Standardpaketversion mithilfe AWS IoT von Jobs für Ihre Geräteflotte bereitstellen. Beim Erstellen eines Auftrags zur Bereitstellung der $default Paketversion für ein Softwarepaket müssen die Paketversion im Auftragsdokument und in der neuen Auftragsbereitstellung mit übereinstimmen$default. Die Paketversion in der Auftragsbereitstellung wird durch destinationPackageVersions die CLI Befehle for API und und VersionARN in der dargestellt AWS Management Console. Die Paketversion im Jobdokument wird durch den folgenden Platzhalter für das Jobdokument dargestellt (siehe unten):

    arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$default

    Um einen Job oder eine Jobvorlage mit der Standard-Paketversion zu erstellen, verwenden Sie das $default Flag im CreateJobTemplate API Befehl CreateJob oder wie unten dargestellt:

    "$ aws iot create-job \ --destination-package-versions "arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default" --document file://jobdoc.json
    Anmerkung

    Das $default Paketversionsattribut, das auf die Standardversion verweist, ist ein optionales Attribut, das nur erforderlich ist, wenn über AWS IoT Jobs auf die Standardpaketversion für eine Auftragsbereitstellung verwiesen wird.

Wenn Sie mit der Paketversion zufrieden sind, veröffentlichen Sie sie entweder über die Seite mit den Softwarepaketdetails in der AWS IoT Konsole oder indem Sie den UpdatePackageVersionAPIVorgang ausführen. Sie können dann bei der Erstellung des Auftrags entweder über die AWS IoT Konsole oder durch Ausführen des CreateJobAPIVorgangs auf die Paketversion verweisen.

Benennen der Pakete und Versionen bei der Bereitstellung

Um eine Softwarepaketversion auf einem Gerät bereitzustellen, stellen Sie sicher, dass das Softwarepaket und die Paketversion, auf die im Jobdokument verwiesen wird, mit dem Softwarepaket und der Paketversion übereinstimmen, die im destinationPackageVersions Parameter des CreateJob API Vorgangs angegeben sind. Wenn sie nicht übereinstimmen, erhalten Sie eine Fehlermeldung, in der Sie aufgefordert werden, beide Referenzen zuzuordnen. Weitere Informationen zu Fehlermeldungen im Softwarepaketkatalog finden Sie unterAllgemeine Fehlermeldungen zur Fehlerbehebung.

Zusätzlich zu den Softwarepaketen und Paketversionen, auf die im Job-Dokument verwiesen wird, können Sie zusätzliche Softwarepakete und Paketversionen in den destinationPackageVersions Parameter des CreateJob API Vorgangs aufnehmen, auf die im Job-Dokument nicht verwiesen wird. Stellen Sie sicher, dass die erforderlichen Installationsinformationen im Jobdokument enthalten sind, damit die Geräte die zusätzlichen Softwarepaketversionen ordnungsgemäß installieren können. Weitere Informationen zur CreateJob API Operation finden Sie unter CreateJob.

Gezielte Jobsuche mithilfe AWS IoT dynamischer Dinggruppen

Der Softwarepaketkatalog arbeitet mit Flottenindizierung, AWS IoT Aufträgen und AWS IoT dynamischen Objektgruppen, um Geräte innerhalb Ihrer Flotte zu filtern und gezielt auszuwählen, um auszuwählen, welche Paketversion auf Ihren Geräten bereitgestellt werden soll. Sie können eine Flottenindizierungsabfrage auf der Grundlage der aktuellen Paketinformationen Ihres Geräts ausführen und diese Dinge gezielt für einen AWS IoT Job auswählen. Sie können auch Softwareupdates veröffentlichen, jedoch nur für geeignete Zielgeräte. Sie können beispielsweise angeben, dass Sie eine Konfiguration nur für die Geräte bereitstellen möchten, auf denen derzeit die iot-device-client 1.5.09 ausgeführt wird. Weitere Informationen finden Sie unter Erstellen einer dynamischen Objektgruppe.

Reservierte benannte Schatten- und Paketversionen

Falls konfiguriert, können AWS IoT Jobs den reservierten Namen shadow ($package) einer Sache aktualisieren, wenn der Job erfolgreich abgeschlossen wurde. In diesem Fall müssen Sie dem reservierten benannten Schatten eines Objekts keine Paketversion manuell zuordnen.

In den folgenden Situationen können Sie sich dafür entscheiden, eine Paketversion manuell dem reservierten benannten Schatten des Objekts zuzuordnen oder zu aktualisieren:

  • Sie registrieren eine Sache unter, AWS IoT Core ohne die installierte Paketversion zuzuordnen.

  • AWS IoT Jobs ist nicht so konfiguriert, dass es den reservierten Namen Shadow des Dings aktualisiert.

  • Sie verwenden ein internes Verfahren, um Paketversionen an Ihre Flotte zu versenden, und dieser Prozess wird nicht aktualisiert, AWS IoT Core wenn er abgeschlossen ist.

Anmerkung

Wir empfehlen Ihnen, AWS IoT Jobs zu verwenden, um die Paketversion im reservierten Shadow ($package) zu aktualisieren. Das Aktualisieren des Versionsparameters im $package Shadow durch andere Prozesse (z. B. manuelle oder programmatische API Aufrufe), wenn AWS IoT Jobs ebenfalls für die Aktualisierung des Shadows konfiguriert ist, kann zu Inkonsistenzen zwischen der tatsächlichen Version auf dem Gerät und der Version führen, die an den reservierten benannten Shadow gemeldet wurde.

Sie können dem reservierten Objekt mit dem Namen shadow ($package) über die Konsole oder den Vorgang eine Paketversion hinzufügen oder diese aktualisieren. UpdateThingShadowAPI Weitere Informationen finden Sie unter Eine Paketversion einer AWS IoT Sache zuordnen.

Anmerkung

Durch das Zuordnen einer Paketversion zu einem AWS IoT Ding wird die Gerätesoftware nicht direkt aktualisiert. Sie müssen die Paketversion auf dem Gerät bereitstellen, um die Gerätesoftware zu aktualisieren.

Deinstallation eines Softwarepakets und seiner Paketversion

$nullist ein reservierter Platzhalter, der den AWS IoT Jobs-Dienst auffordert, das vorhandene Softwarepaket und die Paketversion aus dem reservierten benannten Schatten des Geräts zu entfernen. $package Weitere Informationen finden Sie unter Reservierter benannter Schatten.

Um diese Funktion zu verwenden, ersetzen Sie den Versionsnamen am Ende des destinationPackageVersionAmazon-Ressourcennamens (ARN) durch$null. Anschließend müssen Sie Ihren Service anweisen, die Software vom Gerät zu entfernen.

Der autorisierte ARN Benutzer verwendet das folgende Format:

arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null

Zum Beispiel

$ aws iot create-job \ ... \ --destinationPackageVersions ["arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/$null"]