Eine Anwendung bereitstellen - 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.

Eine Anwendung bereitstellen

Um eine Anwendung bereitzustellen, verwenden Sie die AWS Panorama Application CLI, importieren sie in Ihr Konto, erstellen den Container, laden Assets hoch und registrieren sie und erstellen eine Anwendungsinstanz. Dieses Thema geht detailliert auf jeden dieser Schritte ein und beschreibt, was im Hintergrund vor sich geht.

Wenn Sie noch keine Anwendung bereitgestellt haben, finden Sie Erste Schritte mit AWS Panorama eine exemplarische Vorgehensweise.

Weitere Informationen zum Anpassen und Erweitern der Beispielanwendung finden Sie unterAWS Panorama Anwendungen erstellen.

Installieren Sie die AWS Panorama-Anwendungs-CLI

Um die AWS Panorama Application CLI zu installierenAWS CLI, verwenden Sie pip.

$ pip3 install --upgrade awscli panoramacli

Um Anwendungs-Images mit der AWS Panorama Application CLI zu erstellen, benötigen Sie Docker. Unter Linux sind qemu auch verwandte Systembibliotheken erforderlich. Weitere Informationen zur Installation und Konfiguration der AWS Panorama Application CLI finden Sie in der README-Datei im Projekt-Repository. GitHub

Anweisungen zum Einrichten einer Build-Umgebung in Windows mit WSL2 finden Sie unter. Einrichten einer Entwicklungsumgebung in Windows

Eine Anwendung importieren

Wenn Sie mit einer Beispielanwendung oder einer von einem Drittanbieter bereitgestellten Anwendung arbeiten, verwenden Sie die AWS Panorama Application CLI, um die Anwendung zu importieren.

my-app$ panorama-cli import-application

Dieser Befehl benennt Anwendungspakete mit Ihrer Konto-ID um. Paketnamen beginnen mit der Konto-ID des Kontos, für das sie bereitgestellt werden. Wenn Sie eine Anwendung für mehrere Konten bereitstellen, müssen Sie die Anwendung für jedes Konto separat importieren und verpacken.

Zum Beispiel die Beispielanwendung dieses Handbuchs, ein Codepaket und ein Modellpaket, die jeweils mit einer Platzhalter-Konto-ID benannt sind. Der import-application Befehl benennt diese um, sodass sie die Konto-ID verwenden, die die CLI aus den Anmeldeinformationen Ihres Workspace ableitet. AWS

/aws-panorama-sample ├── assets ├── graphs │   └── my-app │   └── graph.json └── packages    ├── 123456789012-SAMPLE_CODE-1.0    │   ├── Dockerfile    │   ├── application.py    │   ├── descriptor.json    │   ├── package.json    │   ├── requirements.txt    │   └── squeezenet_classes.json    └── 123456789012-SQUEEZENET_PYTORCH-1.0    ├── descriptor.json    └── package.json

123456789012wird in den Paketverzeichnisnamen und im Anwendungsmanifest (graph.json), das sich auf sie bezieht, durch Ihre Konto-ID ersetzt. Sie können Ihre Konto-ID bestätigen, indem Sie aws sts get-caller-identity mit dem anrufenAWS CLI.

$ aws sts get-caller-identity { "UserId": "AIDAXMPL7W66UC3GFXMPL", "Account": "210987654321", "Arn": "arn:aws:iam::210987654321:user/devenv" }

Erstellen Sie ein Container-Image

Ihr Anwendungscode ist in einem Docker-Container-Image verpackt, das den Anwendungscode und die Bibliotheken enthält, die Sie in Ihrem Dockerfile installieren. Verwenden Sie den build-container CLI-Befehl AWS Panorama Application, um ein Docker-Image zu erstellen und ein Dateisystem-Image zu exportieren.

my-app$ panorama-cli build-container --container-asset-name code_asset --package-path packages/210987654321-SAMPLE_CODE-1.0 { "name": "code_asset", "implementations": [ { "type": "container", "assetUri": "5fa5xmplbc8c16bf8182a5cb97d626767868d3f4d9958a4e49830e1551d227c5.tar.gz", "descriptorUri": "1872xmpl129481ed053c52e66d6af8b030f9eb69b1168a29012f01c7034d7a8f.json" } ] } Container asset for the package has been succesfully built at assets/5fa5xmplbc8c16bf8182a5cb97d626767868d3f4d9958a4e49830e1551d227c5.tar.gz

Dieser Befehl erstellt ein Docker-Image mit dem Namen code_asset und exportiert ein Dateisystem in ein .tar.gz Archiv im assets Ordner. Die CLI ruft das Basisimage der Anwendung aus der Amazon Elastic Container Registry (Amazon ECR) ab, wie in der Dockerfile der Anwendung angegeben.

Zusätzlich zum Container-Archiv erstellt die CLI ein Asset für den Paketdeskriptor ()descriptor.json. Beide Dateien werden mit einer eindeutigen Kennung umbenannt, die einen Hash der Originaldatei widerspiegelt. Die AWS Panorama Application CLI fügt der Paketkonfiguration außerdem einen Block hinzu, der die Namen der beiden Assets aufzeichnet. Diese Namen werden von der Appliance während des Bereitstellungsprozesses verwendet.

Beispiel packages/123456789012-sample_code-1.0/package.json — mit Asset-Block
{ "nodePackage": { "envelopeVersion": "2021-01-01", "name": "SAMPLE_CODE", "version": "1.0", "description": "Computer vision application code.", "assets": [ { "name": "code_asset", "implementations": [ { "type": "container", "assetUri": "5fa5xmplbc8c16bf8182a5cb97d626767868d3f4d9958a4e49830e1551d227c5.tar.gz", "descriptorUri": "1872xmpl129481ed053c52e66d6af8b030f9eb69b1168a29012f01c7034d7a8f.json" } ] } ], "interfaces": [ { "name": "interface", "category": "business_logic", "asset": "code_asset", "inputs": [ { "name": "video_in", "type": "media" },

Der im build-container Befehl angegebene Name des Code-Assets muss mit dem Wert des asset Felds in der Paketkonfiguration übereinstimmen. Im vorherigen Beispiel sind beide Wertecode_asset.

Ein Modell importieren

Ihre Anwendung hat möglicherweise ein Modellarchiv in ihrem Assets-Ordner oder das Sie separat herunterladen. Wenn Sie ein neues Modell, ein aktualisiertes Modell oder eine aktualisierte Modelldeskriptordatei haben, verwenden Sie den add-raw-model Befehl, um es zu importieren.

my-app$ panorama-cli add-raw-model --model-asset-name model_asset \ --model-local-path my-model.tar.gz \ --descriptor-path packages/210987654321-SQUEEZENET_PYTORCH-1.0/descriptor.json \ --packages-path packages/210987654321-SQUEEZENET_PYTORCH-1.0

Wenn Sie nur die Deskriptordatei aktualisieren müssen, können Sie das vorhandene Modell im Assets-Verzeichnis wiederverwenden. Möglicherweise müssen Sie die Deskriptordatei aktualisieren, um Funktionen wie den Fließkommagenauigkeitsmodus zu konfigurieren. Das folgende Skript zeigt beispielsweise, wie Sie dies mit der Beispiel-App tun.

Beispiel util-Scripts/ .sh update-model-config
#!/bin/bash set -eo pipefail MODEL_ASSET=fd1axmplacc3350a5c2673adacffab06af54c3f14da6fe4a8be24cac687a386e MODEL_PACKAGE=SQUEEZENET_PYTORCH ACCOUNT_ID=$(ls packages | grep -Eo '[0-9]{12}' | head -1) panorama-cli add-raw-model --model-asset-name model_asset --model-local-path assets/${MODEL_ASSET}.tar.gz --descriptor-path packages/${ACCOUNT_ID}-${MODEL_PACKAGE}-1.0/descriptor.json --packages-path packages/${ACCOUNT_ID}-${MODEL_PACKAGE}-1.0 cp packages/${ACCOUNT_ID}-${MODEL_PACKAGE}-1.0/package.json packages/${ACCOUNT_ID}-${MODEL_PACKAGE}-1.0/package.json.bup

Änderungen an der Deskriptordatei im Modellpaketverzeichnis werden erst angewendet, wenn Sie sie mit der CLI erneut importieren. Die CLI aktualisiert die Modellpaketkonfiguration mit den neuen Asset-Namen direkt, ähnlich wie sie die Konfiguration für das Anwendungscodepaket aktualisiert, wenn Sie einen Container neu erstellen.

Laden Sie Anwendungsressourcen hoch

Verwenden Sie den Befehl, um die Assets der Anwendung hochzuladen und zu registrieren, zu denen das Modellarchiv, das Container-Dateisystemarchiv und die package-application zugehörigen Deskriptordateien gehören.

my-app$ panorama-cli package-application Uploading package SQUEEZENET_PYTORCH Patch version for the package 5d3cxmplb7113faa1d130f97f619655d8ca12787c751851a0e155e50eb5e3e96 Deregistering previous patch version e845xmpl8ea0361eb345c313a8dded30294b3a46b486dc8e7c174ee7aab29362 Asset fd1axmplacc3350a5c2673adacffab06af54c3f14da6fe4a8be24cac687a386e.tar.gz already exists, ignoring upload upload: assets/87fbxmpl6f18aeae4d1e3ff8bbc6147390feaf47d85b5da34f8374974ecc4aaf.json to s3://arn:aws:s3:us-east-2:212345678901:accesspoint/panorama-210987654321-6k75xmpl2jypelgzst7uux62ye/210987654321/nodePackages/SQUEEZENET_PYTORCH/binaries/87fbxmpl6f18aeae4d1e3ff8bbc6147390feaf47d85b5da34f8374974ecc4aaf.json Called register package version for SQUEEZENET_PYTORCH with patch version 5d3cxmplb7113faa1d130f97f619655d8ca12787c751851a0e155e50eb5e3e96 ...

Wenn an einer Asset-Datei oder der Paketkonfiguration keine Änderungen vorgenommen werden, überspringt die CLI dies.

Uploading package SAMPLE_CODE Patch Version ca91xmplca526fe3f07821fb0c514f70ed0c444f34cb9bd3a20e153730b35d70 already registered, ignoring upload Register patch version complete for SQUEEZENET_PYTORCH with patch version 5d3cxmplb7113faa1d130f97f619655d8ca12787c751851a0e155e50eb5e3e96 Register patch version complete for SAMPLE_CODE with patch version ca91xmplca526fe3f07821fb0c514f70ed0c444f34cb9bd3a20e153730b35d70 All packages uploaded and registered successfully

Die CLI lädt die Assets für jedes Paket auf einen Amazon S3-Zugangspunkt hoch, der für Ihr Konto spezifisch ist. AWS Panorama verwaltet den Access Point für Sie und stellt über die DescribePackageAPI Informationen darüber bereit. Die CLI lädt die Assets für jedes Paket an den für das Paket bereitgestellten Speicherort hoch und registriert sie mit den in der Paketkonfiguration beschriebenen Einstellungen beim AWS Panorama-Service.

Stellen Sie eine Anwendung mit der AWS Panorama-Konsole bereit

Sie können eine Anwendung mit der AWS Panorama-Konsole bereitstellen. Während des Bereitstellungsprozesses wählen Sie aus, welche Kamerastreams an den Anwendungscode übergeben werden sollen, und konfigurieren die vom Entwickler der Anwendung bereitgestellten Optionen.

Um eine Anwendung bereitzustellen
  1. Öffnen Sie die Seite „Bereitgestellte Anwendungen“ der AWS Panorama-Konsole.

  2. Wählen Sie Anwendung bereitstellen aus.

  3. Fügen Sie den Inhalt des Anwendungsmanifestsgraph.json, in den Texteditor ein. Wählen Sie Weiter.

  4. Geben Sie einen Namen und eine Beschreibung ein.

  5. Wählen Sie Proceed to deploy aus.

  6. Wählen Sie Bereitstellung starten aus.

  7. Wenn Ihre Anwendung eine Rolle verwendet, wählen Sie sie aus dem Drop-down-Menü aus. Wählen Sie Weiter.

  8. Wählen Sie Gerät auswählen und dann Ihr Gerät aus. Wählen Sie Weiter.

  9. Wählen Sie im Schritt Datenquellen auswählen die Option Eingabe (en) anzeigen aus und fügen Sie Ihren Kamerastream als Datenquelle hinzu. Wählen Sie Weiter.

  10. Konfigurieren Sie im Schritt Konfigurieren alle vom Entwickler definierten anwendungsspezifischen Einstellungen. Wählen Sie Weiter.

  11. Wählen Sie Deploy und dann Fertig.

  12. Wählen Sie in der Liste der bereitgestellten Anwendungen die Anwendung aus, deren Status überwacht werden soll.

Der Bereitstellungsprozess dauert 15 bis 20 Minuten. Die Ausgabe der Appliance kann für einen längeren Zeitraum leer sein, während die Anwendung gestartet wird. Wenn Sie auf einen Fehler stoßen, finden Sie weitere Informationen unterFehlerbehebung.

Automatisieren Sie die Anwendungsbereitstellung

Sie können den Prozess der Anwendungsbereitstellung mit der CreateApplicationInstanceAPI automatisieren. Die API verwendet zwei Konfigurationsdateien als Eingabe. Das Anwendungsmanifest spezifiziert die verwendeten Pakete und ihre Beziehungen. Die zweite Datei ist eine Überschreibungsdatei, die die Außerkraftsetzung von Werten im Anwendungsmanifest während der Bereitstellung festlegt. Mithilfe einer Overrides-Datei können Sie dasselbe Anwendungsmanifest verwenden, um die Anwendung mit verschiedenen Kamerastreams bereitzustellen und andere anwendungsspezifische Einstellungen zu konfigurieren.

Weitere Informationen und Beispielskripts für die einzelnen Schritte in diesem Thema finden Sie unterAutomatisieren Sie die Anwendungsbereitstellung.