Ein Anwendungs-Image erstellen - 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.

Ein Anwendungs-Image erstellen

Die AWS Panorama Appliance führt Anwendungen als Container-Dateisysteme aus, die aus einem von Ihnen erstellten Image exportiert wurden. Sie geben die Abhängigkeiten und Ressourcen Ihrer Anwendung in einem Dockerfile an, das das Basisimage der AWS 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 Basis-Image der Anwendung (public.ecr.aws/panorama/panorama-application).

  • WORKDIR— Legt das Arbeitsverzeichnis für das Bild fest. /panoramawird für Anwendungscode und zugehörige Dateien verwendet. Diese Einstellung bleibt nur während des Builds bestehen und wirkt sich nicht auf das Arbeitsverzeichnis Ihrer Anwendung zur Laufzeit aus (/).

  • COPY— Kopiert Dateien von einem lokalen Pfad in einen Pfad auf dem Bild. COPY . .kopiert die Dateien im aktuellen Verzeichnis (das Paketverzeichnis) in das Arbeitsverzeichnis des Images. 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. Ein einziger RUN Vorgang kann mehrere Befehle nacheinander ausführen, indem er && zwischen Befehlen verwendet wird. In diesem Beispiel wird der pip Paketmanager aktualisiert und anschließend die in requirements.txt aufgelisteten Bibliotheken installiert.

Sie können andere Anweisungen wie ADD und verwendenARG, 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 angibt. Die Beispielanwendung verwendet Open CV und dieAWS 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 in das dist-packages Python-Verzeichnis unter/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 die Speicherung von Anwendungen. Ihre Anwendung kann in diesem Pfad Dateien erstellen und ändern. Dateien, die im Speicherverzeichnis erstellt wurden, bleiben auch bei Neustarts erhalten. Andere temporäre Dateispeicherorte werden beim Booten gelöscht.

Bild-Assets 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 es und speichert es in dem Ordner. assets

$ 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 zur Paketkonfiguration (package.json) hinzufügt und beim AWS Panorama-Service registriert. Die CLI kopiert auch die Deskriptordatei, die den Pfad zum Anwendungsskript (dem Einstiegspunkt der Anwendung) angibt.

Beispiel /Pakete/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 Anwendungs-Image 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.