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á.
Construir uma imagem de aplicação
O AWS Panorama Appliance executa aplicações como sistemas de arquivos de contêiner exportados a partir de uma imagem que você cria. Você especifica as dependências e os recursos da sua aplicação em um Dockerfile que usa a imagem base da aplicação do AWS Panorama como ponto de partida.
Para criar uma imagem da aplicação, você usa o Docker e a CLI da aplicação do AWS Panorama. O exemplo a seguir da aplicação de exemplo deste guia demonstra esses casos de uso.
exemplo packages/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
As seguintes instruções do Dockerfile são usadas.
-
FROM
: carrega a imagem base da aplicação (public.ecr.aws/panorama/panorama-application
). -
WORKDIR
: define o diretório de trabalho na imagem./panorama
é usado para o código da aplicação e arquivos relacionados. Essa configuração só persiste durante a compilação e não afeta o diretório de trabalho da sua aplicação em runtime (/
). -
COPY
: copia arquivos de um caminho local para um caminho na imagem.COPY . .
copia os arquivos no diretório atual (o diretório do pacote) para o diretório de trabalho na imagem. Por exemplo, o código da aplicação é copiado depackages/123456789012-SAMPLE_CODE-1.0/application.py
para/panorama/application.py
. -
RUN
: executa comandos de shell na imagem durante a compilação. Uma única operaçãoRUN
pode executar vários comandos em sequência usando&&
entre comandos. Este exemplo atualiza o gerenciador de pacotespip
e, em seguida, instala as bibliotecas listadas emrequirements.txt
.
Você pode usar outras instruções, como ADD
e ARG
, que são úteis no momento da compilação. Instruções que adicionam informações de runtime ao contêiner, como ENV
, não funcionam com o AWS Panorama. O AWS Panorama não executa um contêiner a partir da imagem. Ele só usa a imagem para exportar um sistema de arquivos, que é transferido para o dispositivo.
Especificação de dependências
requirements.txt
é um arquivo de requisitos do Python que especifica as bibliotecas usadas pela aplicação. A aplicação de exemplo usa Open CV e o AWS SDK for Python (Boto3).
exemplo packages/123456789012-SAMPLE_CODE-1.0/requirements.txt
boto3==1.24.* opencv-python==4.6.*
O comando pip install
no Dockerfile instala essas bibliotecas no diretório dist-packages
Python abaixo de /usr/local/lib
, para que elas possam ser importadas pelo código da sua aplicação.
Armazenamento local
O AWS Panorama reserva o diretório /opt/aws/panorama/storage
para armazenamento de aplicações. Sua aplicação pode criar e modificar arquivos nesse caminho. Os arquivos criados no diretório de armazenamento persistem nas reinicializações. Outros locais de arquivos temporários são apagados na inicialização.
Criação de ativos de imagem
Quando você cria uma imagem para seu pacote de aplicações com a CLI da aplicação do AWS Panorama, a CLI executa docker
build
no diretório do pacote. Isso cria uma imagem da aplicação que contém o código da aplicação. Em seguida, a CLI cria um contêiner, exporta seu sistema de arquivos, o compacta e o armazena na pasta 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
O bloco JSON na saída é uma definição de ativo que a CLI adiciona à configuração do pacote (package.json
) e registra no serviço AWS Panorama. A CLI também copia o arquivo descritor, que especifica o caminho para o script da aplicação (o ponto de entrada da aplicação).
exemplo packages/123456789012-SAMPLE_CODE-1.0/descriptor.json
{ "runtimeDescriptor": { "envelopeVersion": "2021-01-01", "entry": { "path": "python3", "name": "/panorama/application.py" } } }
Na pasta de ativos, o descritor e a imagem da aplicação são nomeados de acordo com sua soma de verificação SHA-256. Esse nome é usado como um identificador exclusivo para o ativo quando ele é armazenado no Amazon S3.