Implantar uma aplicação - AWS Panorama

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Implantar uma aplicação

Para implantar uma aplicação, use a CLI da aplicação do AWS Panorama, importe-a para sua conta, crie o contêiner, faça upload e registre os ativos e crie uma instância da aplicação. Este tópico aborda cada uma dessas etapas em detalhes e descreve o que acontece em segundo plano.

Se você ainda não implantou uma aplicação, consulte uma explicação passo a passo em Conceitos básicos do AWS Panorama.

Para obter mais informações sobre como personalizar e estender a aplicação de exemplo, consulte Criação de aplicações com o AWS Panorama.

Instale a CLI da aplicação do AWS Panorama

Para instalar a CLI da aplicação do AWS Panorama e o AWS CLI, use o pip.

$ pip3 install --upgrade awscli panoramacli

Para criar imagens de aplicações com a CLI da aplicação do AWS Panorama, você precisa do Docker. No Linux, bibliotecas qemu e bibliotecas de sistema relacionadas também são necessárias. Para obter mais informações sobre como instalar e configurar a CLI da aplicação do AWS Panorama, consulte o arquivo README no repositório GitHub do projeto.

Para obter instruções sobre como configurar um ambiente de compilação no Windows com WSL2, consulte Configurar um ambiente de desenvolvimento no Windows.

Importação de uma aplicação

Se você estiver trabalhando com uma aplicação de exemplo ou uma aplicação fornecida por terceiros, use a CLI da aplicação do AWS Panorama para importar a aplicação.

my-app$ panorama-cli import-application

Esse comando renomeia os pacotes de aplicação com o ID da sua conta. Os nomes dos pacotes começam com o ID da conta na qual foram implantados. Ao implantar uma aplicação em várias contas, você deve importar e empacotar a aplicação separadamente para cada conta.

Por exemplo, a aplicação de exemplo deste guia é um pacote de código e um pacote de modelo, cada um nomeado com um ID de conta reservado. O comando import-application os renomeia para usar o ID da conta que a CLI infere com base nas credenciais AWS do seu espaço de trabalho.

/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 é substituído pelo ID da sua conta nos nomes dos diretórios de pacotes e no manifesto da aplicação (graph.json), que se refere a eles. Você pode confirmar o ID da sua conta chamando aws sts get-caller-identity com a AWS CLI.

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

Criar uma imagem de contêiner

O código da aplicação é empacotado em uma imagem de contêiner do Docker, que inclui o código da aplicação e as bibliotecas que você instala no seu Dockerfile. Use o comando build-container da CLI da aplicação do AWS Panorama para criar uma imagem do Docker e exportar uma imagem do sistema de arquivos.

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

Esse comando cria uma imagem do Docker chamada code_asset e exporta um sistema de arquivos para um arquivo .tar.gz na pasta assets. A CLI extrai a imagem base da aplicação do Amazon Elastic Container Registry (Amazon ECR), conforme especificado no Dockerfile da aplicação.

Além do arquivo do contêiner, a CLI cria um ativo para o descritor do pacote (descriptor.json). Ambos os arquivos são renomeados com um identificador exclusivo que reflete um hash do arquivo original. A CLI da aplicação do AWS Panorama também adiciona um bloco à configuração do pacote, que registra os nomes dos dois ativos. Esses nomes são usados pelo dispositivo durante o processo de implantação.

exemplo packages/123456789012-SAMPLE_CODE-1.0/package.json: com bloco de ativos
{ "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" },

O nome do ativo de código, especificado no comando build-container, deve corresponder ao valor do campo asset na configuração do pacote. No exemplo anterior, os dois valores são code_asset.

Importação de um modelo

Sua aplicação pode ter um arquivo de modelo na pasta de ativos, ou você pode baixar um arquivo de modelo separadamente. Se você tiver um novo modelo, um modelo atualizado ou um arquivo descritor de modelo atualizado, use o comando add-raw-model para importá-lo.

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

Se você precisar apenas atualizar o arquivo descritor, poderá reutilizar o modelo existente no diretório de ativos. Talvez seja necessário atualizar o arquivo descritor para configurar atributos, como o modo de precisão de ponto flutuante. Por exemplo, o script a seguir mostra como fazer isso com a aplicação de exemplo.

exemplo 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

As alterações no arquivo descritor no diretório do pacote do modelo não serão aplicadas até que você o reimporte com a CLI. A CLI atualiza a configuração do pacote do modelo com os novos nomes de ativos no local, da mesma forma como atualiza a configuração do pacote de código da aplicação quando você reconstrói um contêiner.

Upload de ativos da aplicação

Para fazer upload e registrar os ativos da aplicação, que incluem o arquivo do modelo, o arquivo do sistema de arquivos do contêiner e os respectivos arquivos descritores, use o 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 ...

Se não houver alterações em um arquivo de ativo ou na configuração do pacote, a CLI os ignorará.

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

A CLI carrega os ativos de cada pacote em um Ponto de Acesso Amazon S3 que é específico da sua conta. O AWS Panorama gerencia o ponto de acesso para você e fornece informações sobre ele por meio da API DescribePackage. A CLI carrega os ativos de cada pacote no local fornecido para esse pacote e os registra no serviço AWS Panorama com as configurações descritas na configuração do pacote.

Implantação de uma aplicação com o console do AWS Panorama

Você pode implantar uma aplicação com o console do AWS Panorama. Durante o processo de implantação, você escolhe quais streams de câmera passar para o código da aplicação e configura as opções fornecidas pelo desenvolvedor da aplicação.

Para implantar uma aplicação
  1. Abra a Página de aplicações implantadas do console do AWS Panorama.

  2. Escolha Implantar aplicação.

  3. Cole o conteúdo do manifesto da aplicação, graph.json, no editor de texto. Escolha Next (Próximo).

  4. Digite um nome e uma descrição.

  5. Escolha Prosseguir para a implantação.

  6. Escolha Iniciar implantação.

  7. Se a aplicação usar uma função, escolha-a no menu suspenso. Escolha Next (Próximo).

  8. Escolha Selecionar dispositivo e, em seguida, escolha seu dispositivo. Escolha Next (Próximo).

  9. Na etapa Selecionar fontes de dados, escolha Visualizar entrada(s) e adicione o stream da câmera como uma fonte de dados. Escolha Next (Próximo).

  10. Na etapa Configurar, realize todas as configurações específicas da aplicação definidas pelo desenvolvedor. Escolha Next (Próximo).

  11. Escolha Implantar e Concluído.

  12. Na lista de aplicações implantadas, escolha a aplicação para monitorar seu status.

O processo de implantação leva de 15 a 20 minutos. A saída do dispositivo pode ficar em branco por um longo período enquanto a aplicação é iniciada. Se for exibido um erro, consulte Solução de problemas.

Automatização da implantação da aplicação

Você pode automatizar o processo de implantação da aplicação com a API CreateApplicationInstance. A API usa dois arquivos de configuração como entrada. O manifesto da aplicação especifica os pacotes usados e seus relacionamentos. O segundo arquivo é um arquivo de substituições que especifica as substituições de valores no manifesto da aplicação no momento da implantação. O uso de um arquivo de substituições permite que você use o mesmo manifesto da aplicação para implantar a aplicação com diferentes streams de câmera e defina outras configurações específicas da aplicação.

Para obter mais informações e exemplos de scripts para cada uma das etapas deste tópico, consulte Automatização da implantação da aplicação.