Konfigurieren Sie IDT-Einstellungen zum Ausführen desAWS IoT GreengrassQualifizierungs-Paket - AWS IoT Greengrass

AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.

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.

Konfigurieren Sie IDT-Einstellungen zum Ausführen desAWS IoT GreengrassQualifizierungs-Paket

Bevor Sie Tests ausführen, müssen Sie Einstellungen für konfigurierenAWS-Anmeldeinformationen und Geräte auf Ihrem Hostcomputer.

Konfigurieren Ihrer AWS-Anmeldeinformationen

Sie müssen Ihre IAM-Benutzeranmeldeinformationen in der<device-tester-extract-location> /configs/config.jsonfile. Verwenden Sie die IDT-Anmeldeinformationen für AWS IoT Greengrass-Benutzer, die Sie in Erstellen und konfigurieren Sie ein AWS-Konto erstellt haben. Sie können Ihre Anmeldeinformationen auf zwei Arten angeben:

  • Anmeldeinformationen-Datei

  • Umgebungsvariablen

IDT verwendet die gleiche Anmeldeinformationsdatei wie das AWS CLI. Weitere Informationen finden Sie unter Konfigurations- und Anmeldeinformationsdateien.

Der Speicherort der Datei mit den Anmeldeinformationen variiert je nach verwendetem Betriebssystem:

  • macOS Linux: ~/.aws/credentials

  • Windows: C:\Users\UserName\.aws\credentials

Fügen Sie IhreAWS-Anmeldeinformationen fürcredentialsDatei im folgenden Format:

[default] aws_access_key_id = <your_access_key_id> aws_secret_access_key = <your_secret_access_key>

So konfigurieren Sie IDT fürAWS IoT Greengrasszu verwendenAWS-Anmeldeinformationen von IhremcredentialsDatei, bearbeite deineconfig.jsonDatei wie folgt:

{ "awsRegion": "us-west-2", "auth": { "method": "file", "credentials": { "profile": "default" } } }
Anmerkung

Wenn Sie dendefault AWSÄndern Sie unbedingt den Profilnamen in Ihremconfig.jsonfile. Weitere Informationen hierzu finden Sie unter Benannte Profile.

Umgebungsvariablen sind Variablen, die vom Betriebssystem gepflegt und von Systembefehlen verwendet werden. Sie werden nicht gespeichert, wenn Sie die SSH-Sitzung schließen. IDT fürAWS IoT GreengrassSie können dieAWS_ACCESS_KEY_IDundAWS_SECRET_ACCESS_KEY-Umgebungsvariablen zum Speichern IhrerAWS-Anmeldeinformationen.

Um diese Variablen auf Linux, macOS oder Unix festzulegen, verwenden Sie export:

export AWS_ACCESS_KEY_ID=<your_access_key_id> export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

In Windows können Sie die Variablen mit set festlegen:

set AWS_ACCESS_KEY_ID=<your_access_key_id> set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

Um den IDT so zu konfigurieren, dass er die Umgebungsvariablen verwendet, bearbeiten Sie den Abschnitt auth in Ihrer Datei config.json. Ein Beispiel:

{ "awsRegion": "us-west-2", "auth": { "method": "environment" } }

Konfigurieren von device.json

Zusätzlich zuAWS-Anmeldeinformationen, IDT fürAWS IoT Greengrassbenötigt Informationen zu den Geräten, auf denen Tests ausgeführt werden (z. B. IP-Adresse, Anmeldeinformationen, Betriebssystem und CPU-Architektur).

Sie müssen diese Informationen mittels der Vorlage device.json in <device_tester_extract_location>/configs/device.json angeben:

Physical device
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "os", "value": "linux | ubuntu | openwrt" }, { "name": "arch", "value": "x86_64 | armv6l | armv7l | aarch64" }, { "name": "container", "value": "yes | no" }, { "name": "docker", "value": "yes | no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "yes | no" }, { "name": "ml", "value": "mxnet | tensorflow | dlr | mxnet,dlr,tensorflow | no" }, *********** Remove the section below if the device is not qualifying for ML **************, { "name": "mlLambdaContainerizationMode", "value": "container | process | both" }, { "name": "processor", "value": "cpu | gpu" }, ****************************************************************************************** ], *********** Remove the section below if the device is not qualifying for HSI *************** "hsm": { "p11Provider": "/path/to/pkcs11ProviderLibrary", "slotLabel": "<slot_label>", "slotUserPin": "<slot_pin>", "privateKeyLabel": "<key_label>", "openSSLEngine": "/path/to/openssl/engine" }, ******************************************************************************************** *********** Remove the section below if the device is not qualifying for ML **************** "machineLearning": { "dlrModelPath": "/path/to/compiled/dlr/model", "environmentVariables": [ { "key": "<environment-variable-name>", "value": "<Path:$PATH>" } ], "deviceResources": [ { "name": "<resource-name>", "path": "<resource-path>", "type": "device | volume" } ] }, ****************************************************************************************** "kernelConfigLocation": "", "greengrassLocation": "", "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh", "ip": "<ip-address>", "port": 22, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", "privKeyPath": "/path/to/private/key", "password": "<password>" } } } } ] } ]
Anmerkung

Geben Sie privKeyPath nur an, wenn method auf pki gesetzt ist.

Geben Sie password nur an, wenn method auf password gesetzt ist.

Docker container
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "os", "value": "linux | ubuntu | openwrt" }, { "name": "arch", "value": "x86_64" }, { "name": "container", "value": "no" }, { "name": "docker", "value": "no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "no" }, { "name": "ml", "value": "mxnet | tensorflow | dlr | mxnet,dlr,tensorflow | no" }, *********** Remove the section below if the device is not qualifying for ML **************, { "name": "mlLambdaContainerizationMode", "value": "process" }, { "name": "processor", "value": "cpu | gpu" }, ****************************************************************************************** ], *********** Remove the section below if the device is not qualifying for ML **************** "machineLearning": { "dlrModelPath": "/path/to/compiled/dlr/model", "environmentVariables": [ { "key": "<environment-variable-name>", "value": "<Path:$PATH>" } ], "deviceResources": [ { "name": "<resource-name>", "path": "<resource-path>", "type": "device | volume" } ] }, ****************************************************************************************** "kernelConfigLocation": "", "greengrassLocation": "", "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "docker", "containerId": "<container-name | container-id>", "containerUser": "<user>" } } ] } ]

Nachfolgend sind alle Pflichtfelder beschrieben:

id

Eine benutzerdefinierte alphanumerische ID, die eine Sammlung von Geräten, den sogenannten Gerätepool, eindeutig identifiziert. Geräte, die zu einem Pool gehören, müssen über identische Hardware verfügen. Bei der Ausführung einer Reihe von Tests werden Geräte im Pool verwendet, um die Workload zu parallelisieren. Mehrere Geräte werden verwendet, um verschiedene Tests auszuführen.

sku

Ein alphanumerischer Wert, durch den das zu testende Gerät eindeutig identifiziert wird. Die SKU wird verwendet, um qualifizierte Boards nachzuverfolgen.

Anmerkung

Wenn Sie Ihr Board im AWS Partner-Gerätekatalog auflisten möchten, muss die hier angegebene SKU mit der SKU übereinstimmen, die Sie während des Einreichungsprozesses verwenden.

features

Ein Array, das die Funktionen enthält, die das Gerät unterstützt. Alle Funktionen sind erforderlich.

os und arch

Unterstützte Kombinationen von Betriebssystemen (OS) und Architektur:

  • linux, x86_64

  • linux, armv6l

  • linux, armv7l

  • linux, aarch64

  • ubuntu, x86_64

  • openwrt, armv7l

  • openwrt, aarch64

Anmerkung

Wenn Sie IDT zum Testen verwendenAWS IoT GreengrassWenn in einem Docker-Container ausgeführt wird, wird nur die x86_64 Docker-Architektur unterstützt.

container

Überprüft, ob das Gerät alle Software- und Hardwareanforderungen zum Ausführen von Lambda-Funktionen im Containermodus auf einem Greengrass-Kern erfüllt.

Der gültige Wert istyesodernoaus.

docker

Überprüft, ob das Gerät alle erforderlichen technischen Abhängigkeiten erfüllt, um den Greengrass-Docker-Anwendungsbereitstellungs-Konnektor zum Ausführen von Containern verwenden zu können

Der gültige Wert istyesodernoaus.

streamManagement

Überprüft, ob das Gerät alle erforderlichen technischen Abhängigkeiten erfüllt, um den AWS IoT Greengrass-Stream-Manager ausführen zu können.

Der gültige Wert istyesodernoaus.

hsi

Überprüft, ob die bereitgestellte freigegebene HSI-Bibliothek eine Schnittstelle mit dem Hardwaresicherheitsmodul (HSM) herstellen kann und die erforderlichen PKCS# 11-APIs korrekt implementiert. Das HSM und die freigegebene Bibliothek müssen in der Lage sein, eine CSR zu signieren, TLS-Operationen auszuführen und die korrekten Schlüssellängen sowie den korrekten Algorithmus für den öffentlichen Schlüssel bereitzustellen.

Der gültige Wert istyesodernoaus.

ml

Überprüft, ob das Gerät alle erforderlichen technischen Abhängigkeiten erfüllt, um die ML-Inferenz lokal ausführen zu können.

Der gültige Wert kann eine beliebige Kombination vonmxnet,tensorflow,dlr, undno(z. B.mxnet,mxnet,tensorflow,mxnet,tensorflow,dlr, oderno) enthalten.

mlLambdaContainerizationMode

Überprüft, ob das Gerät alle erforderlichen technischen Abhängigkeiten erfüllt, um die ML-Inferenz im Containermodus auf einem Greengrass-Gerät durchführen zu können.

Der gültige Wert istcontainer,process, oderbothaus.

processor

Überprüft, ob das Gerät alle Hardwareanforderungen für den angegebenen Prozessortyp erfüllt.

Der gültige Wert istcpuodergpuaus.

Anmerkung

Wenn Sie dencontainer,docker,streamManager,hsi, oderml-Funktion können Sie die entsprechende Option festlegenvaluezunoaus.

Docker unterstützt nur Feature-Qualifikation fürstreamManagementundmlaus.

machineLearning

Optional. Konfigurationsinformationen für ML-Qualifizierungstests Weitere Informationen finden Sie unter Konfigurieren von device.json für die ML-Qualifizierung.

hsm

Optional. Konfigurationsinformationen für Tests mit einem AWS IoT Greengrass-Hardware-Sicherheitsmodul (HSM). Andernfalls sollte die hsm-Eigenschaft weggelassen werden. Weitere Informationen finden Sie unter Integration von Hardware-Sicherheit.

Diese Eigenschaft gilt nur, wenn connectivity.protocol auf ssh festgelegt ist.

hsm.p11Provider

Der absolute Pfad zur libdl-ladbaren Bibliothek der PKCS#11-Implementierung.

hsm.slotLabel

Das Slot-Label zur Identifizierung des Hardwaremoduls

hsm.slotUserPin

Die Benutzer-PIN, mit demAWS IoT GreengrassKern des Moduls.

hsm.privateKeyLabel

Das Label zur Identifizierung des Schlüssels im Hardwaremodul.

hsm.openSSLEngine

Der absolute Pfad zur .so-Datei der OpenSSL-Engine, um die PKCS#11-Unterstützung unter OpenSSL zu aktivieren Wird vom AWS IoT Greengrass-OTA-Aktualisierungsagent verwendet.

devices.id

Eine benutzerdefinierte eindeutige Kennung für das zu testende Gerät.

connectivity.protocol

Das Kommunikationsprotokoll, das für die Kommunikation mit diesem Gerät verwendet wird. Derzeit sind die einzigen unterstützten Werte ssh für physische Geräte und docker für Docker-Container.

connectivity.ip

Die IP-Adresse des zu testenden Geräts.

Diese Eigenschaft gilt nur, wenn connectivity.protocol auf ssh festgelegt ist.

connectivity.containerId

Die Container-ID oder der Name des getesteten Docker-Containers.

Diese Eigenschaft gilt nur, wenn connectivity.protocol auf docker festgelegt ist.

connectivity.auth

Authentifizierungsinformationen für die Verbindung.

Diese Eigenschaft gilt nur, wenn connectivity.protocol auf ssh festgelegt ist.

connectivity.auth.method

Die Authentifizierungsmethode, die für den Zugriff über ein bestimmtes Verbindungsprotokoll auf ein Gerät verwendet wird.

Unterstützte Werte sind:

  • pki

  • password

connectivity.auth.credentials

Die für die Authentifizierung verwendeten Anmeldeinformationen.

connectivity.auth.credentials.password

Das Passwort für die Anmeldung am Gerät wird überprüft.

Dieser Wert gilt nur, wenn connectivity.auth.method auf password festgelegt ist.

connectivity.auth.credentials.privKeyPath

Der vollständige Pfad zum privaten Schlüssel, der für die Anmeldung bei dem zu testenden Gerät verwendet wird.

Dieser Wert gilt nur, wenn connectivity.auth.method auf pki festgelegt ist.

connectivity.auth.credentials.user

Der Benutzername für die Anmeldung bei dem zu testenden Gerät.

connectivity.auth.credentials.privKeyPath

Der vollständige Pfad zum privaten Schlüssel, der für die Anmeldung beim zu testenden Gerät verwendet wird.

connectivity.port

Optional. Die Portnummer, die für SSH-Verbindungen verwendet werden soll.

Der Standardwert ist 22.

Diese Eigenschaft gilt nur, wennconnectivity.protocolwird auf gesetztsshaus.

greengrassLocation

Der Speicherort der AWS IoT Greengrass Core-Software auf Ihren Geräten.

Dieser Wert wird für physische Geräte nur verwendet, wenn Sie eine bestehende Installation von AWS IoT Greengrass verwenden. Verwenden Sie dieses Attribut, um IDT anzuweisen, die auf Ihren Geräten installierte Version der AWS IoT Greengrass Core-Software zu verwenden.

Wenn Sie Tests in einem Docker-Container aus dem von AWS IoT Greengrass bereitgestellten Docker-Image oder Dockerfile ausführen, setzen Sie diesen Wert auf /greengrass.

kernelConfigLocation

Optional. Der Pfad zur Kernel-Konfigurationsdatei.AWS IoT Device Tester überprüft anhand dieser Datei, ob für die Geräte die erforderlichen Kernel-Funktionen aktiviert sind. Wenn nicht angeben, verwendet IDT die folgenden Pfade, um nach der Kernel-Konfigurationsdatei zu suchen:/proc/config.gzund/boot/config-<kernel-version>aus.AWS IoT Device Tester verwendet den ersten Pfad, der gefunden wird.

Konfigurieren von device.json für die ML-Qualifizierung

In diesem Abschnitt werden die optionalen Eigenschaften für die ML-Qualifizierung in der Gerätekonfigurationsdatei beschrieben. Wenn Sie Tests für die ML-Qualifizierung ausführen möchten, müssen Sie die Eigenschaften für Ihren Anwendungsfall definieren.

Sie können die Vorlage device-ml.json verwenden, um die Konfigurationseinstellungen für Ihr Gerät zu definieren. Diese Vorlage enthält die optionalen ML-Eigenschaften. Sie können auch die Datei device.json verwenden und die Eigenschaften für die ML-Qualifizierung hinzufügen. Diese Dateien sind unter <device-tester-extract-location>/configs gespeichert und enthalten Eigenschaften für die ML-Qualifizierung. Wenn Sie device-ml.json verwenden, müssen Sie die Datei in device.json umbenennen, bevor Sie IDT-Tests ausführen.

Weitere Informationen zu Eigenschaften für die Gerätekonfiguration, die nicht für die ML-Qualifizierung gelten, finden Sie unter Konfigurieren von device.json.

 

ml im Array features

Die ML-Frameworks, die Ihr Board unterstützt. Diese Eigenschaft erfordert IDT v3.1.0 oder höher.

  • Wenn Ihr Board nur ein Framework unterstützt, geben Sie das Framework an. Zum Beispiel:

    { "name": "ml", "value": "mxnet" }
  • Wenn Ihr Board mehrere Frameworks unterstützt, geben Sie die Frameworks als durch Kommas getrennte Liste an. Zum Beispiel:

    { "name": "ml", "value": "mxnet,tensorflow" }
mlLambdaContainerizationMode im Array features

Der Containerisierungsmodus, den Sie für die Tests verwenden möchten. Diese Eigenschaft erfordert IDT v3.1.0 oder höher.

  • Klicken Sie aufprocessum ML-Inferenzcode mit einer nicht containerisierten Lambda-Funktion auszuführen. Diese Option erfordert AWS IoT Greengrass v1.10.x oder höher.

  • Klicken Sie aufcontainerum ML-Inferenzcode mit einer containerisierten Lambda-Funktion auszuführen.

  • Wählen Sie both, um ML-Inferenzcode mit beiden Modi auszuführen. Diese Option erfordert AWS IoT Greengrass v1.10.x oder höher.

processor im Array features

Gibt den Hardwarebeschleuniger an, den Ihr Board unterstützt. Diese Eigenschaft erfordert IDT v3.1.0 oder höher.

  • Wählen Sie cpu, wenn Ihr Board eine CPU als Prozessor verwendet.

  • Wählen Sie gpu, wenn Ihr Board eine GPU als Prozessor verwendet.

machineLearning

Optional. Konfigurationsinformationen für ML-Qualifizierungstests Diese Eigenschaft erfordert IDT v3.1.0 oder höher.

dlrModelPath

Erforderlich, um das Framework dlr verwenden zu können. Der absolute Pfad zu Ihrem kompilierten DLR-Modellverzeichnis, das mit resnet18 benannt werden muss. Weitere Informationen finden Sie unter Kompilieren des DLR-Modells.

Anmerkung

Im Folgenden sehen Sie einen Beispielpfad unter macOS: /Users/<user>/Downloads/resnet18.

environmentVariables

Ein Array von Schlüssel-Wert-Paaren, die Einstellungen dynamisch an ML-Inferenztests übergeben können. Optional für CPU-Geräte. In diesem Abschnitt können Sie Framework-spezifische Umgebungsvariablen hinzufügen, die für Ihren Gerätetyp erforderlich sind. Weitere Informationen zu diesen Anforderungen finden Sie auf der offiziellen Website des Frameworks oder des Geräts. Zum Ausführen von MXNet-Inferenztests sind auf einigen Geräten möglicherweise die folgenden Umgebungsvariablen erforderlich.

"environmentVariables": [ ... { "key": "PYTHONPATH", "value": "$MXNET_HOME/python:$PYTHONPATH" }, { "key": "MXNET_HOME", "value": "$HOME/mxnet/" }, ... ]
Anmerkung

Das Feld value kann je nach Ihrer MXNet-Installation variieren.

Wenn Sie Lambda-Funktionen testen, die mitContainerisierungFügen Sie auf GPU-Geräten Umgebungsvariablen für die GPU-Bibliothek hinzu. Dadurch kann die GPU Berechnungen ausführen. Informationen zur Verwendung verschiedener GPU-Bibliotheken finden Sie in der offiziellen Dokumentation für die Bibliothek oder das Gerät.

Anmerkung

Konfigurieren Sie die folgenden Schlüssel, wenn für die Funktion mlLambdaContainerizationMode container oder both festgelegt ist

"environmentVariables": [ { "key": "PATH", "value": "<path/to/software/bin>:$PATH" }, { "key": "LD_LIBRARY_PATH", "value": "<path/to/ld/lib>" }, ... ]
deviceResources

Erforderlich für GPU-Geräte. EnthältLokale Ressourcenauf die Lambda-Funktionen zugegriffen werden kann. Verwenden Sie diesen Abschnitt, um lokale Geräte- und Volume-Ressourcen hinzuzufügen.

  • Geben Sie für Geräteressourcen "type": "device" an. Bei GPU-Geräten sollten die Geräteressourcen GPU-bezogene Gerätedateien unter /dev sein.

    Anmerkung

    Das Verzeichnis /dev/shm stellt eine Ausnahme dar. Sie kann nur als eine Volume-Ressource konfiguriert werden.

  • Geben Sie für Volume-Ressourcen "type": "volume" an.