Erstellen eines Anwendungsabbilds - AWS Panorama

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 eines Anwendungsabbilds

Die AWS Panorama Appliance führt Anwendungen als Container-Dateisysteme aus, die aus einem von Ihnen erstellten Image exportiert werden. Sie geben die Abhängigkeiten und Ressourcen Ihrer Anwendung in einem Dockerfile an, das das Basisimage der AWS Panorama Panorama-Anwendung als Ausgangspunkt verwendet.

Um ein Anwendungs-Image zu erstellen, verwenden Sie Docker und die AWS Panorama Application CLI. Das folgende Beispiel aus der Beispielanwendung dieses Handbuchs veranschaulicht diese Anwendungsfälle.

Beispiel Pakete/123456789012-sample_code-1.0/Dockerfile
FROM public.ecr.aws/panorama/panorama-application WORKDIR /panorama COPY . . RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt

Die folgenden Dockerfile-Anweisungen werden verwendet.

  • FROM— Lädt das Basisimage der Anwendung ()public.ecr.aws/panorama/panorama-application.

  • WORKDIR— Legt das Arbeitsverzeichnis auf dem Image fest. /panoramawird für Anwendungscode und zugehörige Dateien verwendet. Diese Einstellung bleibt nur während des Builds bestehen und hat keinen Einfluss auf das Arbeitsverzeichnis Ihrer Anwendung zur Laufzeit (/).

  • COPY— Kopiert Dateien von einem lokalen Pfad in einen Pfad auf dem Image. COPY . .kopiert die Dateien im aktuellen Verzeichnis (dem Paketverzeichnis) in das Arbeitsverzeichnis auf dem Image. Beispielsweise wird der Anwendungscode von packages/123456789012-SAMPLE_CODE-1.0/application.py nach kopiert/panorama/application.py.

  • RUN— Führt während des Builds Shell-Befehle auf dem Image aus. Eine einzelne RUN Operation kann mehrere Befehle nacheinander ausführen, indem && zwischen Befehlen verwendet wird. In diesem Beispiel wird der pip Paketmanager aktualisiert und anschließend die unter aufgeführten Bibliotheken installiertrequirements.txt.

Sie können andere Anweisungen verwenden, z. B. ADD undARG, die bei der Erstellung nützlich sind. Anweisungen, die dem Container Laufzeitinformationen hinzufügen, wie z. B.ENV, funktionieren nicht mit AWS Panorama. AWS Panorama führt keinen Container aus dem Image aus. Es verwendet das Image nur, um ein Dateisystem zu exportieren, das auf die Appliance übertragen wird.

Angeben von Abhängigkeiten

requirements.txtist eine Python-Anforderungsdatei, die die von der Anwendung verwendeten Bibliotheken spezifiziert. Die Beispielanwendung verwendet Open CV und die AWS SDK for Python (Boto3).

Beispiel Pakete/123456789012-sample_code-1.0/requirements.txt
boto3==1.24.* opencv-python==4.6.*

Der pip install Befehl im Dockerfile installiert diese Bibliotheken im dist-packages Python-Verzeichnis darunter/usr/local/lib, sodass sie von Ihrem Anwendungscode importiert werden können.

Lokaler Speicher

AWS Panorama reserviert das /opt/aws/panorama/storage Verzeichnis für den Anwendungsspeicher. Ihre Anwendung kann Dateien in diesem Pfad erstellen und ändern. Im Speicherverzeichnis erstellte Dateien bleiben auch nach Neustarts erhalten. Andere Speicherorte für temporäre Dateien werden beim Start gelöscht.

Image-Objekte erstellen

Wenn Sie mit der AWS Panorama Application CLI ein Image für Ihr Anwendungspaket erstellen, wird die CLI docker build im Paketverzeichnis ausgeführt. Dadurch wird ein Anwendungs-Image erstellt, das Ihren Anwendungscode enthält. Die CLI erstellt dann einen Container, exportiert sein Dateisystem, komprimiert ihn und speichert ihn im assets Ordner.

$ panorama-cli build-container --container-asset-name code_asset --package-path packages/123456789012-SAMPLE_CODE-1.0 docker build -t code_asset packages/123456789012-SAMPLE_CODE-1.0 --pull docker export --output=code_asset.tar $(docker create code_asset:latest) gzip -1 code_asset.tar { "name": "code_asset", "implementations": [ { "type": "container", "assetUri": "6f67xmpl32743ed0e60c151a02f2f0da1bf70a4ab9d83fe236fa32a6f9b9f808.tar.gz", "descriptorUri": "1872xmpl129481ed053c52e66d6af8b030f9eb69b1168a29012f01c7034d7a8f.json" } ] } Container asset for the package has been succesfully built at /home/user/aws-panorama-developer-guide/sample-apps/aws-panorama-sample/assets/6f67xmpl32743ed0e60c151a02f2f0da1bf70a4ab9d83fe236fa32a6f9b9f808.tar.gz

Der JSON-Block in der Ausgabe ist eine Asset-Definition, die die CLI der Paketkonfiguration (package.json) hinzufügt und beim AWS Panorama Panorama-Service registriert. Die CLI kopiert auch die Deskriptordatei, die den Pfad zum Anwendungsskript (den Einstiegspunkt der Anwendung) angibt.

Beispiel packages/123456789012-sample_code-1.0/descriptor.json
{ "runtimeDescriptor": { "envelopeVersion": "2021-01-01", "entry": { "path": "python3", "name": "/panorama/application.py" } } }

Im Assets-Ordner sind der Deskriptor und das Anwendungsbild nach ihrer SHA-256-Prüfsumme benannt. Dieser Name wird als eindeutige Kennung für das Asset verwendet, wenn es in Amazon S3 gespeichert wird.