Cette application utilise plusieurs services AWS pour créer un système automatisé de reconnaissance d'images. Lorsqu'une image est déposée dans un bucket S3, une fonction Lambda est déclenchée pour analyser l'image avec AWS Rekognition et stocker les résultats dans DynamoDB.
L'application utilise les services AWS suivants :
- Amazon S3 : Stockage des images
- AWS Lambda : Traitement automatisé des images
- Amazon Rekognition : Service d'analyse d'images (détection d'objets, de scènes, etc.)
- Amazon DynamoDB : Stockage des métadonnées et des résultats d'analyse
- AWS CLI installé et configuré
- AWS SAM CLI installé
- Python 3.12 ou supérieur
- Un compte AWS avec les permissions nécessaires
.
├── template.yaml # Template SAM (Infrastructure as Code)
├── src/
│ ├── app.py # Code de la fonction Lambda
│ └── requirements.txt # Dépendances Python
└── README.md
- Clonez ce dépôt :
git clone <repository-url>
cd recognition-app
- Installez les dépendances de développement :
pip install -r src/requirements.txt
- Construire l'application :
sam build
- Déployer l'application :
sam deploy --guided
Lors du déploiement guidé, vous devrez fournir les informations suivantes :
- Nom de la stack (ex: "recognition-app")
- Région AWS (utiliser eu-west-1 car Rekognition n'est pas disponible dans toutes les régions)
- Confirmation des changements d'IAM
L'application accepte les formats d'images suivants :
- JPEG/JPG
- PNG
- Après le déploiement, récupérez le nom du bucket S3 dans les outputs de la stack
- Téléchargez une image dans le bucket :
aws s3 cp votre-image.jpg s3://NOM-DU-BUCKET/
Chaque image analysée génère une entrée dans DynamoDB avec la structure suivante :
{
"imageId": "uuid-unique",
"imageUrl": "https://bucket.s3.amazonaws.com/image.jpg",
"labels": ["label1", "label2", "label3"],
"timestamp": "2024-03-18T15:49:56.015Z",
"contentType": "image/jpeg"
}
Pour consulter les résultats d'une analyse :
-
Via AWS Console :
- Accédez à DynamoDB
- Sélectionnez la table "nom-stack-images"
- Utilisez l'explorateur d'éléments
-
Via AWS CLI :
aws dynamodb scan --table-name nom-stack-images
Les logs de la fonction Lambda sont disponibles dans CloudWatch Logs :
- Accédez à CloudWatch dans la console AWS
- Naviguez vers "Log groups"
- Recherchez "/aws/lambda/nom-stack-ProcessImageFunction"
Les logs incluent :
- Début du traitement de l'image
- Type de contenu détecté
- Labels identifiés par Rekognition
- Erreurs éventuelles
L'application gère plusieurs types d'erreurs :
- Format d'image non supporté
- Erreurs de traitement Rekognition
- Problèmes d'accès aux services AWS
L'application implémente plusieurs mesures de sécurité :
- Bucket S3 configuré avec blocage d'accès public
- Permissions IAM minimales pour chaque service
- Utilisation de rôles IAM spécifiques pour la fonction Lambda
- Taille maximale des images : 5 MB
- Formats supportés : JPEG, PNG uniquement
- Région Rekognition : eu-west-1 (Irlande)
- Timeout Lambda : 30 secondes
- Mémoire Lambda : 256 MB
L'utilisation de cette application implique des coûts AWS pour :
- Stockage S3
- Invocations Lambda
- Analyses Rekognition
- Stockage DynamoDB
Consultez la tarification AWS pour plus de détails.
Pour toute question ou problème :
- Vérifiez les logs CloudWatch
- Consultez la documentation AWS
- Ouvrez une issue sur le dépôt
Thomas Catros