AWS IoT Greengrass In einem Docker-Container mit automatischer Ressourcenbereitstellung ausführen - AWS IoT Greengrass

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.

AWS IoT Greengrass In einem Docker-Container mit automatischer Ressourcenbereitstellung ausführen

Dieses Tutorial zeigt Ihnen, wie Sie die AWS IoT Greengrass Core-Software in einem Docker-Container mit automatisch bereitgestellten AWS Ressourcen und lokalen Entwicklungstools installieren und ausführen. Sie können diese Entwicklungsumgebung verwenden, um AWS IoT Greengrass Funktionen in einem Docker-Container zu erkunden. Die Software benötigt AWS Anmeldeinformationen, um diese Ressourcen bereitzustellen und die lokalen Entwicklungstools bereitzustellen.

Wenn Sie keine AWS Anmeldeinformationen für den Container angeben können, können Sie die AWS Ressourcen bereitstellen, die das Kerngerät für den Betrieb benötigt. Sie können die Entwicklungstools auch auf einem Kerngerät bereitstellen, um es als Entwicklungsgerät zu verwenden. Auf diese Weise können Sie dem Gerät weniger Berechtigungen gewähren, wenn Sie den Container ausführen. Weitere Informationen finden Sie unter Ausführen AWS IoT Greengrass in einem Docker-Container mit manueller Ressourcenbereitstellung.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie Folgendes.

  • Ein AWS-Konto. Falls Sie noch keines haben, beachten Sie die Informationen unter Richten Sie eine ein AWS-Konto.

  • Ein AWS IAM Benutzer mit der Berechtigung, die AWS IoT und IAM Ressourcen für ein Greengrass-Core-Gerät bereitzustellen. Das AWS IoT Greengrass Core-Softwareinstallationsprogramm verwendet Ihre AWS Anmeldeinformationen, um diese Ressourcen automatisch bereitzustellen. Informationen zur IAM Mindestrichtlinie für die automatische Bereitstellung von Ressourcen finden Sie unterMinimale IAM-Richtlinie für das Installationsprogramm zur Bereitstellung von Ressourcen.

  • Ein AWS IoT Greengrass Docker-Image. Sie können ein Image aus dem AWS IoT Greengrass Dockerfile erstellen.

  • Der Host-Computer, auf dem Sie den Docker-Container ausführen, muss die folgenden Anforderungen erfüllen:

    • Ein Linux-basiertes Betriebssystem mit einer Internetverbindung.

    • Docker Engine Version 18.09 oder höher.

    • (Optional) Docker Compose Version 1.22 oder höher. Docker Compose ist nur erforderlich, wenn Sie Docker Compose zum Ausführen Ihrer Docker-Images CLI verwenden möchten.

Konfigurieren Ihrer AWS -Anmeldeinformationen

In diesem Schritt erstellen Sie eine Anmeldeinformationsdatei auf dem Host-Computer, die Ihre Sicherheitsanmeldeinformationen enthält. AWS Wenn Sie das AWS IoT Greengrass Docker-Image ausführen, müssen Sie den Ordner, der diese Anmeldeinformationsdatei enthält, /root/.aws/ in den Docker-Container einbinden. Das AWS IoT Greengrass Installationsprogramm verwendet diese Anmeldeinformationen, um Ressourcen in Ihrem bereitzustellen. AWS-Konto Informationen zu den IAM Mindestrichtlinien, die das Installationsprogramm für die automatische Bereitstellung von Ressourcen benötigt, finden Sie unterMinimale IAM-Richtlinie für das Installationsprogramm zur Bereitstellung von Ressourcen.

  1. Rufen Sie eine der folgenden Optionen ab.

  2. Erstellen Sie einen Ordner, in dem Sie Ihre Anmeldeinformationsdatei ablegen.

    mkdir ./greengrass-v2-credentials
  3. Verwenden Sie einen Texteditor, um eine Konfigurationsdatei mit dem Namen credentials des ./greengrass-v2-credentials Ordners zu erstellen.

    Sie können beispielsweise den folgenden Befehl ausführen, um GNU Nano zum Erstellen der credentials Datei zu verwenden.

    nano ./greengrass-v2-credentials/credentials
  4. Fügen Sie der credentials Datei Ihre AWS Anmeldeinformationen im folgenden Format hinzu.

    [default] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY aws_session_token = AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk

    Nur aws_session_token für temporäre Anmeldeinformationen einschließen.

Wichtig

Entfernen Sie die Anmeldeinformationsdatei vom Host-Computer, nachdem Sie den AWS IoT Greengrass Container gestartet haben. Wenn Sie die Anmeldeinformationsdatei nicht entfernen, bleiben Ihre AWS Anmeldeinformationen im Container gespeichert. Weitere Informationen finden Sie unter Führen Sie die AWS IoT Greengrass Core-Software in einem Container aus.

Erstellen Sie eine Umgebungsdatei

In diesem Tutorial werden mithilfe einer Umgebungsdatei die Umgebungsvariablen festgelegt, die an das AWS IoT Greengrass Core-Softwareinstallationsprogramm im Docker-Container übergeben werden. Sie können auch das --env Argument -e oder in Ihrem docker run Befehl verwenden, um Umgebungsvariablen im Docker-Container festzulegen, oder Sie können die Variablen in einem environment Block in der docker-compose.yml Datei festlegen.

  1. Verwenden Sie einen Texteditor, um eine Umgebungsdatei mit dem Namen .env zu erstellen.

    Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um GNU Nano zu verwenden, um die Datei .env im aktuellen Verzeichnis zu erstellen.

    nano .env
  2. Kopieren Sie den folgenden Inhalt in die Datei.

    GGC_ROOT_PATH=/greengrass/v2 AWS_REGION=region PROVISION=true THING_NAME=MyGreengrassCore THING_GROUP_NAME=MyGreengrassCoreGroup TES_ROLE_NAME=GreengrassV2TokenExchangeRole TES_ROLE_ALIAS_NAME=GreengrassCoreTokenExchangeRoleAlias COMPONENT_DEFAULT_USER=ggc_user:ggc_group

    Ersetzen Sie dann die folgenden Werte.

    • /greengrass/v2. Der Greengrass-Stammordner, den Sie für die Installation verwenden möchten. Sie verwenden die GGC_ROOT Umgebungsvariable, um diesen Wert festzulegen.

    • region. Der AWS-Region Ort, an dem Sie die Ressourcen erstellt haben.

    • MyGreengrassCore. Der Name der AWS IoT Sache. Wenn das Ding nicht existiert, erstellt es das Installationsprogramm. Das Installationsprogramm lädt die Zertifikate herunter, um sich als das AWS IoT Ding zu authentifizieren.

    • MyGreengrassCoreGroup. Der Name der AWS IoT Dinggruppe. Wenn die Dinggruppe nicht existiert, erstellt das Installationsprogramm sie und fügt ihr das Ding hinzu. Wenn die Dinggruppe vorhanden ist und über eine aktive Bereitstellung verfügt, lädt das Kerngerät die in der Bereitstellung angegebene Software herunter und führt sie aus.

    • GreengrassV2TokenExchangeRole. Ersetzen Sie durch den Namen der IAM Token-Austauschrolle, die es dem Greengrass-Core-Gerät ermöglicht, temporäre AWS Anmeldeinformationen abzurufen. Wenn die Rolle nicht existiert, erstellt das Installationsprogramm sie und erstellt und fügt eine Richtlinie mit dem Namen hinzu GreengrassV2TokenExchangeRoleZugriff. Weitere Informationen finden Sie unter Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS.

    • GreengrassCoreTokenExchangeRoleAlias. Der Alias der Token-Exchange-Rolle. Wenn der Rollenalias nicht existiert, erstellt ihn das Installationsprogramm und verweist ihn auf die von Ihnen angegebene IAM Token-Exchange-Rolle. Weitere Informationen finden Sie unter

    Anmerkung

    Sie können die DEPLOY_DEV_TOOLS Umgebungsvariable auf setzen, true um die CLIGreengrass-Komponente bereitzustellen, mit der Sie benutzerdefinierte Komponenten innerhalb des Docker-Containers entwickeln können. Wir empfehlen, diese Komponente nur in Entwicklungsumgebungen zu verwenden, nicht in Produktionsumgebungen. Diese Komponente bietet Zugriff auf Informationen und Operationen, die Sie in einer Produktionsumgebung normalerweise nicht benötigen. Folgen Sie dem Prinzip der geringsten Rechte, indem Sie diese Komponente nur dort einsetzen, wo Sie sie benötigen.

Führen Sie die AWS IoT Greengrass Core-Software in einem Container aus

Dieses Tutorial zeigt Ihnen, wie Sie das Docker-Image starten, das Sie in einem Docker-Container erstellt haben. Sie können den Docker CLI oder den Docker Compose verwenden, CLI um das AWS IoT Greengrass Core-Software-Image in einem Docker-Container auszuführen.

Docker
  1. Führen Sie den folgenden Befehl aus, um den Docker-Container zu starten.

    docker run --rm --init -it --name docker-image \ -v path/to/greengrass-v2-credentials:/root/.aws/:ro \ --env-file .env \ -p 8883 \ your-container-image:version

    Dieser Beispielbefehl verwendet die folgenden Argumente für docker run:

    • --rm. Reinigt den Behälter, wenn er austritt.

    • --init. Verwendet einen Init-Prozess im Container.

      Anmerkung

      Das --init Argument ist erforderlich, um die AWS IoT Greengrass Core-Software herunterzufahren, wenn Sie den Docker-Container beenden.

    • -it. (Optional) Führt den Docker-Container im Vordergrund als interaktiven Prozess aus. Sie können dies durch das -d Argument ersetzen, den Docker-Container stattdessen im getrennten Modus auszuführen. Weitere Informationen finden Sie unter Separated vs Foreground in der Docker-Dokumentation.

    • --name. Führt einen Container mit dem Namen aus aws-iot-greengrass

    • -v. Hängt ein Volume in den Docker-Container ein, um die Konfigurationsdatei und die Zertifikatsdateien für die AWS IoT Greengrass Ausführung innerhalb des Containers verfügbar zu machen.

    • --env-file. (Optional) Gibt die Umgebungsdatei an, um die Umgebungsvariablen festzulegen, die an das AWS IoT Greengrass Core-Softwareinstallationsprogramm im Docker-Container übergeben werden. Dieses Argument ist nur erforderlich, wenn Sie eine Umgebungsdatei zum Setzen von Umgebungsvariablen erstellt haben. Wenn Sie keine Umgebungsdatei erstellt haben, können Sie --env Argumente verwenden, um Umgebungsvariablen direkt in Ihrem Docker-Run-Befehl festzulegen.

    • -p. (Optional) Veröffentlicht den 8883-Container-Port auf dem Host-Computer. Dieses Argument ist erforderlich, wenn Sie eine Verbindung herstellen und kommunizieren möchten, MQTT da Port 8883 für MQTT den Datenverkehr AWS IoT Greengrass verwendet wird. Verwenden Sie zusätzliche -p Argumente, um andere Ports zu öffnen.

    Anmerkung

    Um Ihren Docker-Container mit erhöhter Sicherheit auszuführen, können Sie die --cap-add Argumente --cap-drop und verwenden, um Linux-Funktionen für Ihren Container selektiv zu aktivieren. Weitere Informationen finden Sie in der Docker-Dokumentation unter Runtime-Privilegien und Linux-Funktionen.

  2. Entfernen Sie die Anmeldeinformationen ./greengrass-v2-credentials vom Host-Gerät.

    rm -rf ./greengrass-v2-credentials
    Wichtig

    Sie entfernen diese Anmeldeinformationen, da sie umfassende Berechtigungen bieten, die das Kerngerät nur während der Einrichtung benötigt. Wenn Sie diese Anmeldeinformationen nicht entfernen, können Greengrass-Komponenten und andere Prozesse, die im Container ausgeführt werden, darauf zugreifen. Wenn Sie AWS Anmeldeinformationen für eine Greengrass-Komponente angeben müssen, verwenden Sie den Token-Austauschdienst. Weitere Informationen finden Sie unter Interagieren mit -AWSServices.

Docker Compose
  1. Verwenden Sie einen Texteditor, um eine Docker Compose-Datei mit dem Namen zu erstellen. docker-compose.yml

    Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um GNU Nano zu verwenden, um die Datei docker-compose.yml im aktuellen Verzeichnis zu erstellen.

    nano docker-compose.yml
    Anmerkung

    Sie können auch die neueste Version der AWS bereitgestellten Compose-Datei von herunterladen und verwenden. GitHub

  2. Fügen Sie der Compose-Datei den folgenden Inhalt hinzu. Die Datei sollte ähnlich wie im folgenden Beispiel aussehen. Ersetzen docker-image mit dem Namen Ihres Docker-Images.

    version: '3.7' services: greengrass: init: true container_name: aws-iot-greengrass image: docker-image volumes: - ./greengrass-v2-credentials:/root/.aws/:ro env_file: .env ports: - "8883:8883"

    Die folgenden Parameter in dieser Compose-Beispieldatei sind optional:

    • ports— Veröffentlicht die 8883 Container-Ports auf dem Host-Computer. Dieser Parameter ist erforderlich, wenn Sie eine Verbindung herstellen und kommunizieren möchten, MQTT da Port 8883 für den Datenverkehr AWS IoT Greengrass verwendet wird. MQTT

    • env_file— Gibt die Umgebungsdatei an, um die Umgebungsvariablen festzulegen, die an das AWS IoT Greengrass Core-Softwareinstallationsprogramm im Docker-Container übergeben werden. Dieser Parameter ist nur erforderlich, wenn Sie eine Umgebungsdatei zum Setzen von Umgebungsvariablen erstellt haben. Wenn Sie keine Umgebungsdatei erstellt haben, können Sie den Umgebungsparameter verwenden, um die Variablen direkt in Ihrer Compose-Datei festzulegen.

    Anmerkung

    Um Ihren Docker-Container mit erhöhter Sicherheit auszuführen, können Sie cap_drop und cap_add in Ihrer Compose-Datei verwenden, um selektiv Linux-Funktionen für Ihren Container zu aktivieren. Weitere Informationen finden Sie unter Runtime-Rechte und Linux-Funktionen in der Docker-Dokumentation.

  3. Führen Sie den folgenden Befehl aus, um den Docker-Container zu starten.

    docker-compose -f docker-compose.yml up
  4. Entfernen Sie die Anmeldeinformationen ./greengrass-v2-credentials vom Host-Gerät.

    rm -rf ./greengrass-v2-credentials
    Wichtig

    Sie entfernen diese Anmeldeinformationen, da sie umfassende Berechtigungen bieten, die das Kerngerät nur während der Einrichtung benötigt. Wenn Sie diese Anmeldeinformationen nicht entfernen, können Greengrass-Komponenten und andere Prozesse, die im Container ausgeführt werden, darauf zugreifen. Wenn Sie AWS Anmeldeinformationen für eine Greengrass-Komponente angeben müssen, verwenden Sie den Token-Austauschdienst. Weitere Informationen finden Sie unter Interagieren mit -AWSServices.

Nächste Schritte

AWS IoT Greengrass Die Kernsoftware läuft jetzt in einem Docker-Container. Führen Sie den folgenden Befehl aus, um die Container-ID für den aktuell laufenden Container abzurufen.

docker ps

Anschließend können Sie den folgenden Befehl ausführen, um auf den Container zuzugreifen und die im Container ausgeführte AWS IoT Greengrass Core-Software zu erkunden.

docker exec -it container-id /bin/bash

Informationen zum Erstellen einer einfachen Komponente finden Sie Schritt 4: Entwickeln und Testen einer Komponente auf Ihrem Gerät unter Tutorial: Erste Schritte mit AWS IoT Greengrass V2

Anmerkung

Wenn Sie docker exec Befehle innerhalb des Docker-Containers ausführen, werden diese Befehle nicht in den Docker-Protokollen protokolliert. Um Ihre Befehle in den Docker-Protokollen zu protokollieren, fügen Sie dem Docker-Container eine interaktive Shell hinzu. Weitere Informationen finden Sie unter Anfügen einer interaktiven Shell an den Docker-Container.

Die AWS IoT Greengrass Core-Protokolldatei wird aufgerufen greengrass.log und befindet sich in. /greengrass/v2/logs Die Protokolldateien der Komponenten befinden sich ebenfalls im selben Verzeichnis. Um Greengrass-Logs in ein temporäres Verzeichnis auf dem Host zu kopieren, führen Sie den folgenden Befehl aus:

docker cp container-id:/greengrass/v2/logs /tmp/logs

Wenn Sie Protokolle beibehalten möchten, nachdem ein Container beendet oder entfernt wurde, empfehlen wir, dass Sie nur das Verzeichnis an das temporäre /greengrass/v2/logs Protokollverzeichnis auf dem Host binden, anstatt das gesamte Greengrass-Verzeichnis zu mounten. Weitere Informationen finden Sie unter Greengrass-Protokolle außerhalb des Docker-Containers beibehalten.

Um einen laufenden AWS IoT Greengrass Docker-Container zu beenden, führen Sie oder aus. docker stop docker-compose -f docker-compose.yml stop Diese Aktion sendet SIGTERM an den Greengrass-Prozess und beendet alle zugehörigen Prozesse, die im Container gestartet wurden. Der Docker-Container wird mit der docker-init ausführbaren Datei als Prozess PID 1 initialisiert, was beim Entfernen aller übrig gebliebenen Zombie-Prozesse hilft. Weitere Informationen finden Sie unter Spezifizieren Sie einen Init-Prozess in der Docker-Dokumentation.

Informationen zur Behebung von Problemen bei der Ausführung AWS IoT Greengrass in einem Docker-Container finden Sie unter. Fehlerbehebung bei AWS IoT Greengrass in einem Docker-Container