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.
Erstellen einer geheimen Ressource (Konsole)
Diese Funktion ist für AWS IoT Greengrass Core v1.7 und höher verfügbar.
In diesem Tutorial wird gezeigt, wie man mit der AWS Management Console eine geheime Ressource zu einer Greengrass-Gruppe hinzufügt. Eine geheime Ressource ist ein Verweis auf ein Secret aus dem AWS Secrets Manager. Weitere Informationen finden Sie unter Bereitstellen von Secrets für den AWS IoT Greengrass Core.
Auf dem AWS IoT Greengrass Kerngerät können Konnektoren und Lambda-Funktionen die geheime Ressource verwenden, um sich bei Diensten und Anwendungen zu authentifizieren, ohne dass Passwörter, Token oder andere Anmeldeinformationen fest codiert werden müssen.
In diesem Tutorial erstellen Sie zunächst ein Secret in der AWS Secrets Manager-Konsole. Anschließend fügen Sie in der AWS IoT Greengrass Konsole über die Ressourcenseite der Gruppe eine geheime Ressource zu einer Greengrass-Gruppe hinzu. Diese geheime Ressource verweist auf das Secrets Manager Manager-Geheimnis. Später fügen Sie die geheime Ressource einer Lambda-Funktion hinzu, sodass die Funktion den Wert des lokalen Geheimnisses abrufen kann.
Anmerkung
Alternativ können Sie mit der Konsole eine geheime und geheime Ressource erstellen, wenn Sie einen Connector oder eine Lambda-Funktion konfigurieren. Sie können dies auf der Seite „Parameter konfigurieren“ des Connectors oder auf der Seite „Ressourcen“ der Lambda-Funktion tun.
Nur Konnektoren, die Parameter für Secrets enthalten, können auf Secrets zugreifen. Ein Tutorial, das zeigt, wie der Twilio Notifications Connector ein lokal gespeichertes Authentifizierungstoken verwendet, finden Sie unter. Erste Schritte mit Greengrass-Konnektoren (Konsole)
Das Tutorial enthält die folgenden allgemeinen Schritte:
Für dieses Tutorial benötigen Sie ungefähr 20 Minuten.
Voraussetzungen
Zum Durchführen dieses Tutorials benötigen Sie Folgendes:
-
Eine Greengrass-Gruppe und ein Greengrass-Kern (v1.7 oder höher). Weitere Informationen zum Erstellen einer Greengrass-Gruppe und Greengrass Core finden Sie unter Erste Schritte mit AWS IoT Greengrass. Das Tutorial „Erste Schritte“ enthält auch die Schritte zur Installation der AWS IoT Greengrass-Core Software.
-
AWS IoT Greengrass muss für die Unterstützung lokaler Secrets konfiguriert sein. Weitere Informationen finden Sie unter Anforderungen für Secrets.
Anmerkung
Diese Anforderung beinhaltet die Gewährung des Zugriffs auf Ihre Secrets Manager Manager-Geheimnisse. Wenn Sie die standardmäßige Greengrass-Servicerolle verwenden, ist Greengrass berechtigt, die Werte von Geheimnissen abzurufen, deren Namen mit greengrass - beginnen.
-
Um die Werte lokaler Geheimnisse abzurufen, müssen Ihre benutzerdefinierten Lambda-Funktionen das AWS IoT Greengrass Core SDK v1.3.0 oder höher verwenden.
Schritt 1: Erstellen Sie ein Secrets Manager Manager-Geheimnis
In diesem Schritt erstellen Sie mithilfe der AWS Secrets Manager-Konsole ein Secret.
-
Melden Sie sich an der AWS Secrets Manager-Konsole
an. Anmerkung
Weitere Informationen zu diesem Vorgang finden Sie unter Schritt 1: Erstellen und Speichern Ihres Geheimnisses AWS Secrets Manager im AWS Secrets Manager Benutzerhandbuch.
-
Wählen Sie Store a new secret (Ein neues Secret speichern).
-
Wählen Sie unter Geheimtyp auswählen die Option Anderer Geheimtyp aus.
-
Unter Specify the key/value pairs to be stored for this secret (Angabe der Schlüssel/Wert-Paare, die für dieses Secret gespeichert werden sollen):
-
Geben Sie für Key (Schlüssel)
test
ein. -
Geben Sie für Wert
abcdefghi
ein.
-
-
Lassen Sie aws/secretsmanager für den Verschlüsselungsschlüssel ausgewählt und wählen Sie dann Weiter.
Anmerkung
Es fallen keine Gebühren an, AWS KMS wenn Sie den AWS verwalteten Standardschlüssel verwenden, den Secrets Manager in Ihrem Konto erstellt.
-
Geben Sie für Secret name (Secret-Name)
greengrass-TestSecret
ein und klicken Sie auf Next (Weiter).Anmerkung
Standardmäßig ermöglicht AWS IoT Greengrass die Greengrass-Dienstrolle das Abrufen des Werts von Geheimnissen mit Namen, die mit greengrass - beginnen. Weitere Informationen finden Sie unter Anforderungen für Secrets.
-
Für dieses Tutorial ist keine Rotation erforderlich. Wählen Sie daher Automatische Rotation deaktivieren und anschließend Weiter.
-
Prüfen Sie auf der Seite Review (Prüfen) Ihre Einstellungen und wählen Sie Store (Speichern).
Als nächstes erstellen Sie in Ihrer Greengrass-Gruppe eine geheime Ressource, die auf das Secret verweist.
Schritt 2: Hinzufügen einer geheimen Ressource zu einer Greengrass-Gruppe
In diesem Schritt konfigurieren Sie eine Gruppenressource, die auf das Secrets Manager Manager-Geheimnis verweist.
Erweitern Sie im Navigationsbereich der AWS IoT Konsole unter Verwalten die Option Greengrass-Geräte und wählen Sie dann Gruppen (V1) aus.
-
Wählen Sie die Gruppe, zu der Sie die geheime Ressource hinzufügen möchten.
-
Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte Ressourcen und scrollen Sie dann nach unten zum Abschnitt Secrets. Im Bereich Secrets werden die geheimen Ressourcen angezeigt, die zu der Gruppe gehören. In diesem Bereich können Sie geheime Ressourcen hinzufügen, bearbeiten und entfernen.
Anmerkung
Alternativ können Sie mit der Konsole eine geheime und geheime Ressource erstellen, wenn Sie einen Connector oder eine Lambda-Funktion konfigurieren. Sie können dies auf der Seite „Parameter konfigurieren“ des Connectors oder auf der Seite „Ressourcen“ der Lambda-Funktion tun.
-
Wählen Sie im Bereich Secrets die Option Hinzufügen aus.
-
Geben Sie auf der Seite Geheime Ressource hinzufügen
MyTestSecret
den Namen der Ressource ein. -
Wählen Sie unter Geheim die Option greengrass- TestSecret aus.
-
Im Abschnitt Select labels (optional) steht das AWSCURRENT Staging-Label für die neueste Version des Secrets. Dieses Label ist immer in einer geheimen Ressource enthalten.
Anmerkung
Für dieses Tutorial ist nur das AWSCURRENT Label erforderlich. Sie können optional Beschriftungen hinzufügen, die für Ihre Lambda-Funktion oder Ihren Lambda-Konnektor erforderlich sind.
-
Wählen Sie Add resource (Ressource hinzufügen) aus.
Schritt 3: Erstellen Sie ein Lambda-Funktionsbereitstellungspaket
Um eine Lambda-Funktion zu erstellen, müssen Sie zunächst ein Lambda-Funktionsbereitstellungspaket erstellen, das den Funktionscode und die Abhängigkeiten enthält. Greengrass Lambda-Funktionen benötigen das AWS IoT GreengrassCore SDK für Aufgaben wie die Kommunikation mit MQTT-Nachrichten in der Kernumgebung und den Zugriff auf lokale Geheimnisse. In diesem Tutorial wird eine Python-Funktion erstellt, sodass Sie die Python-Version des SDK im Bereitstellungspaket verwenden.
Anmerkung
Um die Werte lokaler Geheimnisse abzurufen, müssen Ihre benutzerdefinierten Lambda-Funktionen das AWS IoT Greengrass Core SDK v1.3.0 oder höher verwenden.
-
Laden Sie von der AWS IoT GreengrassCore SDK-Downloadseite das AWS IoT Greengrass Core SDK für Python auf Ihren Computer herunter.
-
Entpacken Sie das heruntergeladene Paket, um das SDK zu erhalten. Das SDK ist der
greengrasssdk
-Ordner. -
Speichern Sie die folgende Pythoncode-Funktion in einer lokalen Datei namens
secret_test.py
.import greengrasssdk secrets_client = greengrasssdk.client("secretsmanager") iot_client = greengrasssdk.client("iot-data") secret_name = "greengrass-TestSecret" send_topic = "secrets/output" def function_handler(event, context): """ Gets a secret and publishes a message to indicate whether the secret was successfully retrieved. """ response = secrets_client.get_secret_value(SecretId=secret_name) secret_value = response.get("SecretString") message = ( f"Failed to retrieve secret {secret_name}." if secret_value is None else f"Successfully retrieved secret {secret_name}." ) iot_client.publish(topic=send_topic, payload=message) print("Published: " + message)
Die
get_secret_value
Funktion unterstützt den Namen oder ARN des Secrets Manager Manager-Geheimnisses für denSecretId
Wert. Dieses Beispiel verwendet den Namen des Secrets. Für dieses Beispiel-Secret gibt AWS IoT Greengrass das Schlüssel-Werte-Paar zurück:{"test":"abcdefghi"}
.Wichtig
Stellen Sie sicher, dass Ihre benutzerdefinierten Lambda-Funktionen Secrets sicher behandeln und keine sensiblen Daten protokollieren, die in dem Secret gespeichert sind. Weitere Informationen finden Sie im Benutzerhandbuch unter Minimierung der Risiken beim Protokollieren und Debuggen Ihrer Lambda-Funktion. AWS Secrets Manager Obwohl sich diese Dokumentation speziell auf Rotationsfunktionen bezieht, gilt die Empfehlung auch für Greengrass Lambda-Funktionen.
-
Packen Sie die folgenden Elemente in einer ZIP-Datei mit dem Namen
secret_test_python.zip
. Schließen Sie beim Erstellen einer ZIP-Datei nur den Code und die Abhängigkeiten ein, nicht den dazugehörigen Ordner.-
secret_test.py. App-Logik.
-
greengrasssdk. Erforderliche Bibliothek für alle Python Greengrass Lambda-Funktionen.
Dies ist Ihr Lambda-Funktionsbereitstellungspaket.
-
Schritt 4: Erstellen einer Lambda-Funktion
In diesem Schritt verwenden Sie die AWS Lambda Konsole, um eine Lambda-Funktion zu erstellen und sie für die Verwendung Ihres Bereitstellungspakets zu konfigurieren. Anschließend veröffentlichen Sie eine Funktionsversion und erstellen einen Alias.
-
Erstellen Sie zunächst die Lambda-Funktion.
-
Wählen Sie in der AWS Management Console Services und öffnen Sie die AWS Lambda-Konsole.
-
Wählen Sie Funktion erstellen und dann Author from scratch.
-
Verwenden Sie im Abschnitt Basic information (Basisinformationen) folgende Werte:
-
Geben Sie für Function name (Funktionsname)
SecretTest
ein. -
Wählen Sie für Runtime (Laufzeit) die Option Python 3.7 aus.
-
Behalten Sie für Berechtigungen die Standardeinstellung bei. Dadurch wird eine Ausführungsrolle erstellt, die grundlegende Lambda-Berechtigungen gewährt. Diese Rolle wird nicht verwendet vonAWS IoT Greengrass.
-
-
Klicken Sie unten auf der Seite auf Create function.
-
-
Registrieren Sie als Nächstes den Handler und laden Sie Ihr Lambda-Funktionsbereitstellungspaket hoch.
-
Wählen Sie auf der Registerkarte Code unter Codequelle die Option Hochladen von aus. Wählen Sie in der Dropdownliste die ZIP-Datei aus.
-
Wählen Sie Upload und anschließend Ihr
secret_test_python.zip
Bereitstellungspaket aus. Wählen Sie dann Save (Speichern) aus. -
Wählen Sie auf der Registerkarte Code für die Funktion unter Laufzeiteinstellungen die Option Bearbeiten aus, und geben Sie dann die folgenden Werte ein.
-
Wählen Sie für Runtime (Laufzeit) die Option Python 3.7 aus.
-
Geben Sie unter Handler
secret_test.function_handler
ein.
-
-
Wählen Sie Speichern aus.
Anmerkung
Die Testtaste auf der AWS Lambda Konsole funktioniert mit dieser Funktion nicht. Das AWS IoT Greengrass Core SDK enthält keine Module, die erforderlich sind, um Ihre Greengrass Lambda-Funktionen unabhängig in der AWS Lambda Konsole auszuführen. Diese Module (zum Beispiel
greengrass_common
) werden den Funktionen zur Verfügung gestellt, nachdem sie auf Ihrem Greengrass-Kern bereitgestellt wurden.
-
-
Veröffentlichen Sie jetzt die erste Version Ihrer Lambda-Funktion und erstellen Sie einen Alias für die Version.
Anmerkung
Greengrass-Gruppen können eine Lambda-Funktion nach Alias (empfohlen) oder nach Version referenzieren. Die Verwendung eines Alias erleichtert die Verwaltung von Codeaktualisierungen, da Sie Ihre Abonnementtabelle oder Gruppendefinition nicht ändern müssen, wenn der Funktionscode aktualisiert wird. Stattdessen verweisen Sie einfach mit dem Alias auf die neue Funktionsversion.
-
Wählen Sie auf der Konfigurationsseite SecretTest: 1 im Menü Aktionen die Option Alias erstellen aus.
-
Geben Sie auf der Seite Create a new alias folgende Werte an:
-
Geben Sie unter Name
GG_SecretTest
ein. -
Wählen Sie für Version die Option 1.
Anmerkung
AWS IoT Greengrassunterstützt keine Lambda-Aliase für $LATEST-Versionen.
-
-
Wählen Sie Erstellen aus.
-
Jetzt sind Sie bereit, die Lambda-Funktion zu Ihrer Greengrass-Gruppe hinzuzufügen und die geheime Ressource anzuhängen.
Schritt 5: Fügen Sie die Lambda-Funktion zur Greengrass-Gruppe hinzu
In diesem Schritt fügen Sie die Lambda-Funktion zur Greengrass-Gruppe in der AWS IoT Konsole hinzu.
-
Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte Lambda-Funktionen aus.
-
Wählen Sie im Abschnitt Meine Lambda-Funktionen die Option Hinzufügen aus.
-
Wählen SecretTestSie für die Lambda-Funktion.
-
Wählen Sie für die Lambda-Funktionsversion den Alias der Version, die Sie veröffentlicht haben.
Als Nächstes konfigurieren Sie den Lebenszyklus der Lambda-Funktion.
-
Nehmen Sie im Abschnitt Lambda-Funktionskonfiguration die folgenden Aktualisierungen vor.
Anmerkung
Wir empfehlen, dass Sie Ihre Lambda-Funktion ohne Containerisierung ausführen, sofern Ihr Geschäftsszenario dies nicht erfordert. Auf diese Weise können Sie auf die GPU und Kamera Ihres Geräts zugreifen, ohne die Geräteressourcen konfigurieren zu müssen. Wenn Sie ohne Containerisierung arbeiten, müssen Sie auch Root-Zugriff auf Ihre AWS IoT Greengrass Lambda-Funktionen gewähren.
-
Um ohne Containerisierung zu laufen:
-
Wählen Sie für Systembenutzer und Gruppe die Option.
Another user ID/group ID
Geben Sie als Systembenutzer-ID ein0
. Geben Sie als Systemgruppen-ID ein0
.Dadurch kann Ihre Lambda-Funktion als Root ausgeführt werden. Weitere Hinweise zur Ausführung als Root finden Sie unterFestlegen der Standardzugriffsidentität für Lambda-Funktionen in einer Gruppe.
Tipp
Sie müssen Ihre
config.json
Datei auch aktualisieren, um Root-Zugriff auf Ihre Lambda-Funktion zu gewähren. Informationen zum Verfahren finden Sie unterAusführen einer Lambda-Funktion als Root. -
Wählen Sie für die Containerisierung von Lambda-Funktionen die Option Kein Container aus.
Weitere Hinweise zur Ausführung ohne Containerisierung finden Sie unter. Überlegungen bei der Auswahl der Containerisierung von Lambda-Funktionen
-
Geben Sie in Timeout (Zeitüberschreitung)
10 seconds
ein. -
Wählen Sie für Pinned die Option True aus.
Weitere Informationen finden Sie unter Lebenszykluskonfiguration für Greengrass-Lambda-Funktionen.
-
Wählen Sie unter Zusätzliche Parameter für Lesezugriff auf das Verzeichnis /sys die Option Aktiviert aus.
-
-
Um stattdessen im containerisierten Modus zu starten:
Anmerkung
Wir empfehlen nicht, im containerisierten Modus zu arbeiten, es sei denn, Ihr Geschäftsszenario erfordert dies.
-
Wählen Sie für Systembenutzer und Gruppe die Option Gruppenstandard verwenden aus.
-
Wählen Sie für die Containerisierung von Lambda-Funktionen die Option Gruppenstandard verwenden aus.
-
Geben Sie in Memory Limit (Speicherlimit)
1024 MB
ein. -
Geben Sie in Timeout (Zeitüberschreitung)
10 seconds
ein. -
Wählen Sie für Pinned die Option True aus.
Weitere Informationen finden Sie unter Lebenszykluskonfiguration für Greengrass-Lambda-Funktionen.
-
Wählen Sie unter Zusätzliche Parameter für Lesezugriff auf das Verzeichnis /sys die Option Aktiviert aus.
-
-
-
Wählen Sie Lambda-Funktion hinzufügen.
Ordnen Sie als Nächstes die geheime Ressource der Funktion zu.
Schritt 6: Hängen Sie die geheime Ressource an die Lambda-Funktion an
In diesem Schritt ordnen Sie die geheime Ressource der Lambda-Funktion in Ihrer Greengrass-Gruppe zu. Dadurch wird die Ressource der Funktion zugeordnet, sodass die Funktion den Wert des lokalen Geheimnisses abrufen kann.
-
Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte Lambda-Funktionen aus.
-
Wählen Sie die SecretTestFunktion aus.
-
Wählen Sie auf der Detailseite der Funktion Ressourcen aus.
-
Scrollen Sie zum Bereich Secrets und wählen Sie Associate aus.
-
Wählen Sie MyTestSecretund wählen Sie dann Associate aus.
Schritt 7: Hinzufügen von Abonnements zur Greengrass-Gruppe
In diesem Schritt fügen Sie Abonnements hinzu, die den Austausch von Nachrichten ermöglichen, AWS IoT und die Lambda-Funktion. Ein Abonnement ermöglicht es AWS IoT, die Funktion aufzurufen, und eines ermöglicht es der Funktion, Ausgabedaten an AWS IoT zu senden.
-
Erstellen Sie ein Abonnement, das es AWS IoT ermöglicht, Nachrichten an die Funktion zu veröffentlichen.
Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte Abonnements und dann Abonnement hinzufügen aus.
-
Konfigurieren Sie auf der Seite Abonnement erstellen die Quelle und das Ziel wie folgt:
-
Wählen Sie unter Quelltyp die Option Lambda-Funktion und dann IoT Cloud aus.
-
Wählen Sie unter Zieltyp die Option Service und dann aus SecretTest.
-
Geben Sie im Themenfilter Folgendes ein
secrets/input
und wählen Sie dann Abonnement erstellen aus.
-
-
Hinzufügen eines zweiten Abonnements. Wählen Sie die Registerkarte Abonnements aus, wählen Sie Abonnement hinzufügen und konfigurieren Sie Quelle und Ziel wie folgt:
-
Wählen Sie unter Quelltyp die Option Dienste und dann aus SecretTest.
-
Wählen Sie unter Zieltyp die Option Lambda-Funktion und dann IoT Cloud aus.
-
Geben Sie im Themenfilter Folgendes ein
secrets/output
und wählen Sie dann Abonnement erstellen aus.
-
Schritt 8: Bereitstellen der Greengrass-Gruppe
Stellen Sie die Gruppe auf dem Core-Gerät bereit. Ruft während der AWS IoT Greengrass Bereitstellung den Wert des Secrets aus Secrets Manager ab und erstellt eine lokale, verschlüsselte Kopie auf dem Core.
Lambda-Funktion testen
-
Wählen Sie auf der Startseite der AWS IoT Konsole die Option Test aus.
-
Verwenden Sie für Thema abonnieren die folgenden Werte und wählen Sie dann Abonnieren aus.
Property (Eigenschaft)
Wert
Abonnementthema
secrets/output
MQTT-Nutzlast-Anzeige
Zeigt Nutzlasten als Zeichenfolgen an
-
Verwenden Sie für Im Thema veröffentlichen die folgenden Werte und wählen Sie dann Veröffentlichen, um die Funktion aufzurufen.
Property (Eigenschaft)
Wert
Topic
secrets/input
Fehlermeldung
Behalten der Standardnachricht. Das Veröffentlichen einer Nachricht ruft die Lambda-Funktion auf, aber die Funktion in diesem Tutorial verarbeitet den Nachrichtentext nicht.
Im Erfolgsfall veröffentlicht die Funktion eine "Success"-Meldung.