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 zwischenversion::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 wieCreatePackageVersion
GetPackageVersion
UpdatePackageVersion
, 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 durch
recipe
:{ "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 impublished
Statusstatus befindet, da sie von den Metadaten der Paketversion getrennt ist. Während der Arbeitsbereitstellung wird sie unveränderlich.
Artifact
Versionsattribut
-
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:<
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.packageName
>:version:<versionName
>:artifact-location:s3-presigned-url
}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 OperationCreatePackageVersion
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 denUpdatePackageVersion
API OperationenCreatePackageVersion
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 durchdestinationPackageVersions
die CLI Befehle for API und undVersionARN
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 imCreateJobTemplate
API BefehlCreateJob
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. UpdateThingShadow
API 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
$null
ist 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"]