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.
Avec cet exemple d'application, vous mettez à profit ce que vous avez appris dans les exemples précédents et installez une application plus complexe. Cette application se compose d'une fonction Lambda appelée par une source d'événement de téléchargement d'objet Amazon S3. Cet exercice explique comment accéder aux AWS ressources et effectuer des appels de AWS service via une fonction Lambda.
Cet exemple d'application sans serveur traite les événements de création d'objets dans Amazon S3. Pour chaque image téléchargée vers un compartiment, Amazon S3 détecte l'événement créé par l'objet et appelle une fonction Lambda. La fonction Lambda appelle Amazon Rekognition pour détecter le texte qui se trouve dans l'image. Elle stocke ensuite les résultats renvoyés par Amazon Rekognition dans une table DynamoDB.
Note
Avec cet exemple d'application, vous effectuez des étapes dans un ordre légèrement différent de celui des exemples précédents. La raison en est que cet exemple nécessite que AWS des ressources soient créées et que les autorisations IAM soient configurées avant de pouvoir tester la fonction Lambda localement. Nous allons en tirer parti AWS CloudFormation pour créer les ressources et configurer les autorisations pour vous. Sinon, vous devrez le faire manuellement avant de pouvoir tester la fonction Lambda localement.
Étant donné que cet exemple est plus compliqué, assurez-vous d'être familiarisé avec l'installation des exemples d'applications précédents avant d'exécuter celui-ci.
Avant de commencer
Assurez-vous que vous avez terminé la configuration requise dans Installez le AWS SAM CLI.
Étape 1 : initialiser l'application
Dans cette section, vous allez télécharger l'exemple d'application, qui se compose d'un AWS SAM modèle et d'un code d'application.
Pour initialiser l'application
-
Exécutez la commande suivante sur un AWS SAM CLI invite de commande.
sam init \ --location https://github.com/aws-samples/cookiecutter-aws-sam-s3-rekognition-dynamodb-python \ --no-input
-
Vérifiez le contenu du répertoire créé par la commande (
aws_sam_ocr/
) :-
template.yaml
— Définit trois AWS ressources dont l'application Amazon S3 a besoin : une fonction Lambda, un compartiment Amazon S3 et une table DynamoDB. Le modèle définit également les mappages et les autorisations entre ces ressources. -
Répertoire
src/
– Contient le code d'application Amazon S3. -
SampleEvent.json
– L'exemple de source d'événement, qui est utilisé pour les tests locaux.
-
Étape 2 : empaqueter l'application
Avant de pouvoir tester cette application localement, vous devez utiliser le AWS SAM CLI pour créer un package de déploiement que vous utiliserez pour déployer l'application AWS dans le cloud. Ce déploiement crée les AWS ressources et les autorisations nécessaires pour tester l'application localement.
Pour créer un package de déploiement Lambda
-
Créez un compartiment S3 à l'emplacement où vous souhaitez enregistrer le code empaqueté. Si vous souhaitez utiliser un compartiment S3 existant, ignorez cette étape.
aws s3 mb s3://
bucketname
-
Créez le package de déploiement en exécutant la commande CLI
package
suivante.sam package \ --template-file template.yaml \ --output-template-file packaged.yaml \ --s3-bucket
bucketname
Vous spécifiez le nouveau fichier de modèle,
packaged.yaml
, lorsque vous déployez l'application dans l'étape suivante.
Étape 3 : déployer l'application
Maintenant que vous avez créé le package de déploiement, vous l'utilisez pour déployer l'application AWS dans le cloud. Vous testez ensuite l'application en l'invoquant dans le AWS Cloud.
Pour déployer l'application sans serveur dans le cloud AWS
-
Dans le AWS SAM CLI, utilisez la
deploy
commande pour déployer toutes les ressources que vous avez définies dans le modèle.sam deploy \ --template-file packaged.yaml \ --stack-name aws-sam-ocr \ --capabilities CAPABILITY_IAM \ --region
us-east-1
Dans la commande, le
--capabilities
paramètre permet AWS CloudFormation de créer un rôle IAM.AWS CloudFormation crée les AWS ressources définies dans le modèle. Vous pouvez accéder aux noms de ces ressources dans la AWS CloudFormation console.
Pour tester l'application sans serveur dans le cloud AWS
-
Téléchargez une image dans le compartiment Amazon S3 que vous avez créé pour cet exemple d'application.
-
Ouvrez la console DynamoDB et recherchez la table qui a été créée. Voir la table pour les résultats renvoyés par Amazon Rekognition.
-
Vérifiez que la table DynamoDB contient de nouveaux enregistrements contenant du texte trouvé par Amazon Rekognition dans l'image téléchargée.
Étape 4 : tester l'application localement
Avant de pouvoir tester l'application localement, vous devez d'abord récupérer les noms des AWS ressources créées par AWS CloudFormation.
-
Récupérez le nom de la clé et le nom du compartiment Amazon S3 auprès de AWS CloudFormation. Modifiez le fichier
SampleEvent.json
en remplaçant les valeurs de la clé d'objet, du nom du compartiment et de l'ARN du compartiment. -
Récupérez le nom de la table DynamoDB. Ce nom est utilisé pour la commande
sam local invoke
suivante.
Utilisez le AWS SAM CLI pour générer un exemple d'événement Amazon S3 et appeler la fonction Lambda :
TABLE_NAME=
Table name obtained from AWS CloudFormation console
sam local invoke --event SampleEvent.json
La portion TABLE_NAME=
définit le nom de la table DynamoDB. Le paramètre --event
spécifie le fichier contenant le message d'événement test à transmettre à la fonction Lambda.
Vous pouvez maintenant vérifier que les enregistrements DynamoDB attendus ont été créés, en fonction des résultats renvoyés par Amazon Rekognition.
Étapes suivantes
Le AWS SAM GitHub référentiel contient des exemples d'applications supplémentaires que vous pouvez télécharger et tester. Pour accéder à ce référentiel, consultez Exemples d'applications AWS SAM