Erstellen einer geheimen Ressource (Konsole) - 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.

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.

  1. 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.

  2. Wählen Sie Store a new secret (Ein neues Secret speichern).

  3. Wählen Sie unter Geheimtyp auswählen die Option Anderer Geheimtyp aus.

  4. 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.

  5. 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.

  6. 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.

  7. Für dieses Tutorial ist keine Rotation erforderlich. Wählen Sie daher Automatische Rotation deaktivieren und anschließend Weiter.

  8. 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.

  1. Erweitern Sie im Navigationsbereich der AWS IoT Konsole unter Verwalten die Option Greengrass-Geräte und wählen Sie dann Gruppen (V1) aus.

  2. Wählen Sie die Gruppe, zu der Sie die geheime Ressource hinzufügen möchten.

  3. 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.

  4. Wählen Sie im Bereich Secrets die Option Hinzufügen aus.

  5. Geben Sie auf der Seite Geheime Ressource hinzufügen MyTestSecret den Namen der Ressource ein.

  6. Wählen Sie unter Geheim die Option greengrass- TestSecret aus.

  7. 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.

  8. 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.

  1. Laden Sie von der AWS IoT GreengrassCore SDK-Downloadseite das AWS IoT Greengrass Core SDK für Python auf Ihren Computer herunter.

  2. Entpacken Sie das heruntergeladene Paket, um das SDK zu erhalten. Das SDK ist der greengrasssdk-Ordner.

  3. 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 den SecretId 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.

  4. 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.

  1. Erstellen Sie zunächst die Lambda-Funktion.

    1. Wählen Sie in der AWS Management Console Services und öffnen Sie die AWS Lambda-Konsole.

    2. Wählen Sie Funktion erstellen und dann Author from scratch.

    3. 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.

    4. Klicken Sie unten auf der Seite auf Create function.

  2. Registrieren Sie als Nächstes den Handler und laden Sie Ihr Lambda-Funktionsbereitstellungspaket hoch.

    1. Wählen Sie auf der Registerkarte Code unter Codequelle die Option Hochladen von aus. Wählen Sie in der Dropdownliste die ZIP-Datei aus.

      Das Drop-down-Menü „Von hochladen“, wobei die ZIP-Datei hervorgehoben ist.
    2. Wählen Sie Upload und anschließend Ihr secret_test_python.zip Bereitstellungspaket aus. Wählen Sie dann Save (Speichern) aus.

    3. 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.

    4. 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 Beispielgreengrass_common) werden den Funktionen zur Verfügung gestellt, nachdem sie auf Ihrem Greengrass-Kern bereitgestellt wurden.

  3. 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.

    1. Wählen Sie im Menü Actions die Option Publish new version aus.

    2. Geben Sie unter Version description (Versionsbeschreibung) den Wert First version ein und wählen Sie dann Publish (Veröffentlichen) aus.

    3. Wählen Sie auf der Konfigurationsseite SecretTest: 1 im Menü Aktionen die Option Alias erstellen aus.

    4. 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.

    5. 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.

  1. Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte Lambda-Funktionen aus.

  2. Wählen Sie im Abschnitt Meine Lambda-Funktionen die Option Hinzufügen aus.

  3. Wählen SecretTestSie für die Lambda-Funktion.

  4. 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.

  1. 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.

    1. Um ohne Containerisierung zu laufen:

    2. 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.

  2. 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.

  1. Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte Lambda-Funktionen aus.

  2. Wählen Sie die SecretTestFunktion aus.

  3. Wählen Sie auf der Detailseite der Funktion Ressourcen aus.

  4. Scrollen Sie zum Bereich Secrets und wählen Sie Associate aus.

  5. 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.

  1. Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte Abonnements und dann Abonnement hinzufügen aus.

  2. 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.

  3. Konfigurieren Sie auf der Seite Abonnement erstellen die Quelle und das Ziel wie folgt:

    1. Wählen Sie unter Quelltyp die Option Lambda-Funktion und dann IoT Cloud aus.

    2. Wählen Sie unter Zieltyp die Option Service und dann aus SecretTest.

    3. Geben Sie im Themenfilter Folgendes ein secrets/input und wählen Sie dann Abonnement erstellen aus.

  4. 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:

    1. Wählen Sie unter Quelltyp die Option Dienste und dann aus SecretTest.

    2. Wählen Sie unter Zieltyp die Option Lambda-Funktion und dann IoT Cloud aus.

    3. 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.

  1. Stellen Sie sicher, dass der AWS IoT Greengrass Core läuft. Führen Sie im Raspberry Pi-Terminal die folgenden Befehle aus, falls nötig.

    1. So prüfen Sie, ob der Daemon ausgeführt wird:

      ps aux | grep -E 'greengrass.*daemon'

      Wenn die Ausgabe einen root-Eintrag für /greengrass/ggc/packages/ggc-version/bin/daemon enthält, dann wird der Daemon ausgeführt.

      Anmerkung

      Die Version in dem Pfad hängt von der AWS IoT Greengrass-Core-Softwareversion ab, die auf Ihrem Core-Gerät installiert ist.

    2. Um den Daemon zu starten:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. Wählen Sie auf der Seite mit der Gruppenkonfiguration die Option Deploy aus.

    1. Wählen Sie auf der Registerkarte Lambda-Funktionen im Abschnitt System-Lambda-Funktionen die Option IP-Detektor und dann Bearbeiten aus.

    2. Wählen Sie im Dialogfeld IP-Detektoreinstellungen bearbeiten die Option MQTT-Broker-Endpunkte automatisch erkennen und überschreiben aus.

    3. Wählen Sie Speichern aus.

      Damit können Geräte automatisch Core-Verbindungsinformationen abrufen, z. B. die IP-Adresse, DNS und die Portnummer. Die automatische Ermittlung wird empfohlen, aber AWS IoT Greengrass unterstützt auch manuell angegebene Endpunkte. Sie werden nur bei der ersten Bereitstellung der Gruppe zur Angabe der Ermittlungsmethode aufgefordert.

      Anmerkung

      Wenn Sie dazu aufgefordert werden, erteilen Sie die Erlaubnis, die Greengrass-Servicerolle zu erstellen und sie Ihrer AWS-Konto aktuellen AWS-Region Rolle zuzuordnen. Diese Rolle ermöglicht AWS IoT Greengrass den Zugriff auf Ihre Ressourcen in AWS Diensten.

      Auf der Seite Deployments werden der Zeitstempel, die Versions-ID und der Status der Bereitstellung angegeben. Nach Abschluss sollte der für die Bereitstellung angezeigte Status Abgeschlossen lauten.

      Hilfe zur Problembehebung finden Sie unter Fehlerbehebung für AWS IoT Greengrass.

Lambda-Funktion testen

  1. Wählen Sie auf der Startseite der AWS IoT Konsole die Option Test aus.

  2. 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

  3. 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.

Weitere Informationen finden Sie auch unter