Implementar una aplicación - AWS Panorama

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implementar una aplicación

Para implementar una aplicación, debe utilizar la CLI de la aplicación de AWS Panorama, importarla a su cuenta, crear el contenedor, cargar y registrar activos y crear una instancia de aplicación. En este tema se analiza cada uno de estos pasos en detalle y se describe lo que ocurre en segundo plano.

Si aún no ha implementado una aplicación, consulte Introducción a AWS Panorama para ver un tutorial.

Para obtener más información sobre cómo personalizar y ampliar la aplicación de ejemplo, consulte Creación de AWS Panorama aplicaciones.

Para instalar la CLI de la aplicación de AWS Panorama

Para instalar la CLI de la aplicación de AWS Panorama y AWS CLI, utilice pip.

$ pip3 install --upgrade awscli panoramacli

Para crear imágenes de aplicaciones con la CLI de la aplicación de AWS Panorama, necesita Docker. En Linux, qemu y en sistemas relacionados, también se requieren bibliotecas de sistemas relacionadas. Para obtener más información sobre la instalación y configuración de la CLI de la aplicación de AWS Panorama, consulte el archivo README en el repositorio de GitHub del proyecto.

Para obtener instrucciones acerca de cómo configurar un entorno de compilación en Windows con WSL2, consulte Configuración de un entorno de desarrollo en Windows.

Importar una aplicación

Si está trabajando con una aplicación de muestra o una aplicación proporcionada por un tercero, utilice la CLI de la aplicación de AWS Panorama para importar la aplicación.

my-app$ panorama-cli import-application

Este comando cambia el nombre de los paquetes de aplicación con su ID de cuenta. Los nombres de los paquetes comienzan con el ID de cuenta de la cuenta en la que se implementan. Al implementar una aplicación en varias cuentas, debe importar y empaquetar la aplicación por separado para cada cuenta.

Por ejemplo, la aplicación de muestra de esta guía es un paquete de códigos y un paquete modelo, cada uno nombrado con un marcador de posición de identificador de cuenta. El comando import-application les cambia el nombre para usar el ID de cuenta que la CLI deduce de las credenciales AWS de su espacio de trabajo.

/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

123456789012 se sustituye por su ID de cuenta en los nombres del directorio del paquete y en el manifiesto de la aplicación (graph.json), que hace referencia a ellos. Puede confirmar su ID de cuenta llamando a aws sts get-caller-identity con el AWS CLI.

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

Crear una imagen de contenedor

El código de la aplicación está empaquetado en una imagen de contenedor de Docker, que incluye el código de la aplicación y las bibliotecas que se instalan en el Dockerfile. Utilice el comando build-container de la CLI de la aplicación de AWS Panorama para crear una imagen de Docker y exportar una imagen del sistema de archivos.

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

Este comando crea una imagen de Docker de nombre code_asset y exporta un sistema de archivos a un archivo .tar.gz de la carpeta assets. La CLI extrae la imagen base de la aplicación desde Amazon Elastic Container Registry (Amazon ECR), tal y como se especifica en el Dockerfile de la aplicación.

Además del archivo contenedor, la CLI crea un activo para el descriptor del paquete (descriptor.json). Se cambia el nombre de ambos archivos con un identificador único que refleja un hash del archivo original. La CLI de la aplicación de AWS Panorama también agrega un bloque a la configuración del paquete que registra los nombres de los dos activos. El dispositivo utiliza estos nombres durante el proceso de implementación.

ejemplo packages/123456789012-SAMPLE_CODE-1.0/package.json – con bloque de activos
{ "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" },

El nombre del activo de código, especificado en el comando build-container, debe coincidir con el valor del campo asset de la configuración del paquete. En el ejemplo anterior, ambos valores son code_asset.

Importar un modelo

Es posible que la aplicación tenga un archivo de modelos en la carpeta de activos o que se descargue por separado. Si tiene un modelo nuevo, un modelo actualizado o un archivo descriptor de modelo actualizado, utilice el comando add-raw-model para importarlo.

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 solo necesita actualizar el archivo descriptor, puede reutilizar el modelo existente en el directorio de activos. Es posible que necesite actualizar el archivo descriptor para configurar funciones como el modo de precisión de punto flotante. Por ejemplo, el siguiente script muestra cómo hacerlo con la aplicación de muestra.

ejemplo util-scripts/update-model-config.sh
#!/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

Los cambios en el archivo descriptor del directorio del paquete del modelo no se aplican hasta que se vuelva a importarlo con la CLI. La CLI actualiza la configuración del paquete del modelo con los nuevos nombres de activos en su lugar, de forma similar a como actualiza la configuración del paquete de códigos de la aplicación cuando se reconstruye un contenedor.

Cargar los activos de la aplicación

Para cargar y registrar los activos de la aplicación, que incluyen el archivo modelo, el archivo del sistema de archivos del contenedor y sus archivos descriptores, utilice el comando package-application.

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 no hay cambios en un archivo de activos o en la configuración del paquete, la CLI los omite.

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 carga los activos de cada paquete en un punto de acceso de Amazon S3 específico de su cuenta. AWS Panorama administra el punto de acceso por usted y proporciona información sobre él a través de la API DescribePackage. La CLI carga los activos de cada paquete en la ubicación proporcionada para ese paquete y los registra en el servicio AWS Panorama con los ajustes descritos en la configuración del paquete.

Implementar una aplicación con la consola de AWS Panorama

Puede implementar una aplicación con la consola de AWS Panorama. Durante el proceso de implementación, usted elige qué secuencias de cámara desea transferir al código de la aplicación y configura las opciones proporcionadas por el desarrollador de la aplicación.

Para implementar una aplicación
  1. Abra la página Aplicaciones implementadas de la consola de AWS Panorama.

  2. Elija Implementar aplicación.

  3. Pegue el contenido del manifiesto de la aplicación, graph.json, en el editor de texto. Elija Siguiente.

  4. Introduzca un nombre y una descripción.

  5. Elija Proceder a implementar.

  6. Elija Comenzar la implementación.

  7. Si la aplicación usa un rol, elíjalo en el menú desplegable. Elija Siguiente.

  8. Elija Seleccionar dispositivo y, a continuación, elija su dispositivo. Elija Siguiente.

  9. En el paso Seleccionar fuentes de datos, elija Ver entradas y añada la transmisión de la cámara como origen de datos. Elija Siguiente.

  10. En el paso Configurar, configure los ajustes específicos de la aplicación definidos por el desarrollador. Elija Siguiente.

  11. Elija Implementación y a continuación elija Listo.

  12. En la lista de aplicaciones implementadas, elija la aplicación para supervisar su estado.

El proceso de implementación tarda entre 15 y 20 minutos. La salida del dispositivo puede permanecer en blanco durante un período prolongado mientras se inicia la aplicación. Si ocurre un error, consulte Solución de problemas.

Automatización de las implementaciones de aplicaciones

Puede automatizar el proceso de implementación de aplicaciones con la API CreateApplicationInstance. La API toma dos archivos de configuración como entrada. El manifiesto de la aplicación especifica los paquetes utilizados y sus relaciones. El segundo archivo es un archivo de anulaciones que especifica las anulaciones de los valores del manifiesto de la aplicación en el momento de la implementación. El uso de un archivo de anulaciones permite utilizar el mismo manifiesto de aplicación para implementar la aplicación con diferentes secuencias de cámara y configurar otros ajustes específicos de la aplicación.

Para obtener más información y ejemplos de scripts para cada uno de los pasos de este tema, consulte Automatización de las implementaciones de aplicaciones.