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/panorama
est 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é depackages/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 seuleRUN
opération peut exécuter plusieurs commandes en séquence en les utilisant&&
entre les commandes. Cet exemple met à jour le gestionnaire depip
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.txt
est 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.