Déployer une application - AWS Panorama

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déployer une application

Pour déployer une application, vous utilisez l'interface de ligne de commande de l'application AWS Panorama, vous l'importez dans votre compte, vous créez le conteneur, vous chargez et enregistrez des actifs et vous créez une instance d'application. Cette rubrique décrit chacune de ces étapes en détail et décrit ce qui se passe en arrière-plan.

Si vous n'avez pas encore déployé d'application, consultez la procédure pas Démarrer avec AWS Panorama à pas.

Pour plus d'informations sur la personnalisation et l'extension de l'exemple d'application, reportez-vous Création d'applications AWS Panorama à la section.

Installation de l'interface de ligne de commande de l'application AWS Panorama

Pour installer l'interface de ligne de commande de l'application AWS PanoramaAWS CLI, utilisez pip.

$ pip3 install --upgrade awscli panoramacli

Pour créer des images d'application à l'aide de l'interface de ligne de commande AWS Panorama Application, vous avez besoin de Docker. Sous Linux, qemu les bibliothèques système associées sont également requises. Pour plus d'informations sur l'installation et la configuration de l'interface de ligne de commande de l'application AWS Panorama, consultez le fichier README dans le référentiel du GitHub projet.

Pour obtenir des instructions sur la configuration d'un environnement de génération dans Windows avec WSL2, consultez. Configuration d'un environnement de développement sous Windows

Importer une application

Si vous travaillez avec un exemple d'application ou une application fournie par un tiers, utilisez l'interface de ligne de commande AWS Panorama Application pour importer l'application.

my-app$ panorama-cli import-application

Cette commande renomme les packages d'applications à l'aide de votre identifiant de compte. Les noms des packages commencent par l'ID du compte sur lequel ils sont déployés. Lorsque vous déployez une application sur plusieurs comptes, vous devez importer et empaqueter l'application séparément pour chaque compte.

Par exemple, l'exemple d'application de ce guide, un package de code et un package modèle, chacun étant nommé par un identifiant de compte réservé. La import-application commande les renomme pour utiliser l'ID de compte que la CLI déduit des informations d'identification de votre espace de travail. 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

123456789012est remplacé par votre identifiant de compte dans les noms des répertoires des packages et dans le manifeste de l'application (graph.json), qui y fait référence. Vous pouvez confirmer l'identifiant de votre compte aws sts get-caller-identity en appelant leAWS CLI.

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

Création d'une image de conteneur

Le code de votre application est empaqueté dans une image de conteneur Docker, qui inclut le code de l'application et les bibliothèques que vous installez dans votre Dockerfile. Utilisez la build-container commande CLI de l'application AWS Panorama pour créer une image Docker et exporter une image de système de fichiers.

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

Cette commande crée une image Docker nommée code_asset et exporte un système de fichiers vers une .tar.gz archive du assets dossier. La CLI extrait l'image de base de l'application depuis Amazon Elastic Container Registry (Amazon ECR), comme spécifié dans le Dockerfile de l'application.

Outre l'archive du conteneur, la CLI crée un actif pour le descripteur de package ()descriptor.json. Les deux fichiers sont renommés avec un identifiant unique qui reflète un hachage du fichier d'origine. L'interface de ligne de commande de l'application AWS Panorama ajoute également un bloc à la configuration du package qui enregistre les noms des deux actifs. Ces noms sont utilisés par l'appliance au cours du processus de déploiement.

Exemple Packages/123456789012-sample_code-1.0/package.json — avec bloc de ressources
{ "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" },

Le nom de la ressource de code, spécifié dans la build-container commande, doit correspondre à la valeur du asset champ dans la configuration du package. Dans l'exemple précédent, les deux valeurs sontcode_asset.

Importer un modèle

Il se peut que votre application contienne une archive de modèles dans son dossier de ressources ou que vous téléchargiez séparément. Si vous avez un nouveau modèle, un modèle mis à jour ou un fichier descripteur de modèle mis à jour, utilisez la add-raw-model commande pour l'importer.

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

Si vous avez juste besoin de mettre à jour le fichier descripteur, vous pouvez réutiliser le modèle existant dans le répertoire des actifs. Vous devrez peut-être mettre à jour le fichier descripteur pour configurer des fonctionnalités telles que le mode de précision à virgule flottante. Par exemple, le script suivant montre comment procéder avec l'exemple d'application.

Exemple scripts/utiles/ .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

Les modifications apportées au fichier descripteur dans le répertoire du package de modèles ne sont appliquées que lorsque vous le réimportez avec l'interface de ligne de commande. La CLI met à jour la configuration du package modèle avec les nouveaux noms de ressources en place, de la même manière qu'elle met à jour la configuration du package de code d'application lorsque vous reconstruisez un conteneur.

Charger les actifs de l'application

Pour charger et enregistrer les actifs de l'application, notamment l'archive du modèle, l'archive du système de fichiers du conteneur et leurs fichiers descripteurs, utilisez la package-application commande.

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

Si aucune modification n'est apportée à un fichier de ressources ou à la configuration du package, la CLI l'ignore.

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

La CLI télécharge les ressources de chaque package vers un point d'accès Amazon S3 spécifique à votre compte. AWS Panorama gère le point d'accès pour vous et fournit des informations à ce sujet via l'DescribePackageAPI. La CLI télécharge les ressources de chaque package vers l'emplacement prévu pour ce package et les enregistre auprès du service AWS Panorama avec les paramètres décrits dans la configuration du package.

Déployer une application avec la console AWS Panorama

Vous pouvez déployer une application à l'aide de la console AWS Panorama. Au cours du processus de déploiement, vous choisissez les flux de caméra à transmettre au code de l'application et vous configurez les options fournies par le développeur de l'application.

Pour déployer une application
  1. Ouvrez la page Applications déployées de la console AWS Panorama.

  2. Choisissez Déployer l'application.

  3. Collez le contenu du manifeste de l'applicationgraph.json, dans l'éditeur de texte. Choisissez Suivant.

  4. Entrez un nom et une description.

  5. Choisissez Proceed to deploy.

  6. Choisissez Commencer le déploiement.

  7. Si votre application utilise un rôle, sélectionnez-le dans le menu déroulant. Choisissez Suivant.

  8. Choisissez Sélectionner l'appareil, puis choisissez votre appareil. Choisissez Suivant.

  9. À l'étape Sélectionner les sources de données, choisissez Afficher les entrées et ajoutez le flux de votre caméra en tant que source de données. Choisissez Suivant.

  10. À l'étape Configurer, configurez tous les paramètres spécifiques à l'application définis par le développeur. Choisissez Suivant.

  11. Choisissez Déployer, puis cliquez sur Terminé.

  12. Dans la liste des applications déployées, choisissez l'application dont vous souhaitez contrôler l'état.

Le processus de déploiement prend 15 à 20 minutes. La sortie de l'appliance peut rester vide pendant une période prolongée pendant le démarrage de l'application. Si vous rencontrez une erreur, reportez-vous à la sectionRésolution des problèmes.

Automatisez le déploiement des applications

Vous pouvez automatiser le processus de déploiement des applications à l'aide de l'CreateApplicationInstanceAPI. L'API prend deux fichiers de configuration en entrée. Le manifeste de l'application précise les packages utilisés et leurs relations. Le second fichier est un fichier de remplacement qui spécifie les remplacements de valeurs au moment du déploiement dans le manifeste de l'application. L'utilisation d'un fichier de remplacement vous permet d'utiliser le même manifeste d'application pour déployer l'application avec différents flux de caméras et configurer d'autres paramètres spécifiques à l'application.

Pour plus d'informations et des exemples de scripts pour chacune des étapes de cette rubrique, consultezAutomatisez le déploiement des applications.