Création d'une image d'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.

Création d'une image d'application

L'appliance AWS Panorama exécute les applications sous forme de systèmes de fichiers conteneurs exportés à partir d'une image que vous créez. Vous spécifiez les dépendances et les ressources de votre application dans un Dockerfile qui utilise l'image de base de l'application AWS Panorama comme point de départ.

Pour créer une image d'application, vous utilisez Docker et l'interface de ligne de commande AWS Panorama Application. L'exemple suivant, tiré de l'exemple d'application de ce guide, illustre ces cas d'utilisation.

Exemple /Paquets/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

Les instructions Dockerfile suivantes sont utilisées.

  • FROM— Charge l'image de base de l'application (public.ecr.aws/panorama/panorama-application).

  • WORKDIR— Définit le répertoire de travail sur l'image /panoramaest utilisé pour le code de l'application et les fichiers associés. Ce paramètre persiste uniquement pendant la génération et n'affecte pas le répertoire de travail de votre application lors de l'exécution (/).

  • COPY— Copie les fichiers d'un chemin local vers un chemin de l'image. COPY . .copie les fichiers du répertoire actuel (le répertoire du package) vers le répertoire de travail de l'image. Par exemple, le code de l'application est copié de packages/123456789012-SAMPLE_CODE-1.0/application.py vers/panorama/application.py.

  • RUN— Exécute des commandes shell sur l'image pendant la génération. Une seule RUN opération peut exécuter plusieurs commandes en séquence en les utilisant && entre les commandes. Cet exemple met à jour le gestionnaire de pip packages, puis installe les bibliothèques répertoriées dansrequirements.txt.

Vous pouvez utiliser d'autres instructions, telles que ADD etARG, qui s'avèrent utiles au moment de la génération. Les instructions qui ajoutent des informations d'exécution au conteneur, par exempleENV, ne fonctionnent pas avec AWS Panorama. AWS Panorama n'exécute pas de conteneur à partir de l'image. Il utilise uniquement l'image pour exporter un système de fichiers, qui est transféré vers l'appliance.

Spécification des dépendances

requirements.txtest un fichier d'exigences Python qui spécifie les bibliothèques utilisées par l'application. L'exemple d'application utilise Open CV etAWS SDK for Python (Boto3).

Exemple /Paquets/123456789012-sample_code-1.0/requirements.txt
boto3==1.24.* opencv-python==4.6.*

La pip install commande du Dockerfile installe ces bibliothèques dans le dist-packages répertoire Python ci-dessous/usr/local/lib, afin qu'elles puissent être importées par le code de votre application.

Stockage local

AWS Panorama réserve le /opt/aws/panorama/storage répertoire pour le stockage des applications. Votre application peut créer et modifier des fichiers via ce chemin. Les fichiers créés dans le répertoire de stockage persistent après les redémarrages. Les autres emplacements de fichiers temporaires sont effacés au démarrage.

Création de ressources d'image

Lorsque vous créez une image pour votre package d'application à l'aide de l'interface de ligne de commande AWS Panorama Application, cette dernière s'exécute docker build dans le répertoire du package. Cela permet de créer une image d'application qui contient le code de votre application. La CLI crée ensuite un conteneur, exporte son système de fichiers, le compresse et le stocke dans le assets dossier.

$ 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

Le bloc JSON dans la sortie est une définition d'actif que la CLI ajoute à la configuration du package (package.json) et enregistre auprès du service AWS Panorama. La CLI copie également le fichier descripteur, qui spécifie le chemin d'accès au script de l'application (le point d'entrée de l'application).

Exemple /Paquets/123456789012-sample_code-1.0/descriptor.json
{ "runtimeDescriptor": { "envelopeVersion": "2021-01-01", "entry": { "path": "python3", "name": "/panorama/application.py" } } }

Dans le dossier des ressources, le descripteur et l'image de l'application sont nommés d'après leur somme de contrôle SHA-256. Ce nom est utilisé comme identifiant unique pour l'actif lorsqu'il est stocké dans Amazon S3.