- Remplacer Cloudinary (US) par solution 100% AWS eu-west-3 - Lambda odentas-sign-pdf-converter avec pdftoppm - Lambda Layer poppler-utils v5 avec dépendances complètes - Trigger S3 ObjectCreated pour conversion automatique - Support multi-pages validé (PDF 3 pages) - Stockage images dans S3 odentas-docs - PDFImageViewer pour affichage images converties - Conformité RGPD garantie (données EU uniquement)
4.9 KiB
Déploiement Lambda PDF to Images - Odentas Sign
✅ Déploiement Réussi
La Lambda de conversion PDF vers images a été déployée avec succès sur AWS.
Informations de Déploiement
- Nom de la fonction :
odentas-pdf-to-images - Région AWS :
eu-west-3(Paris) - Runtime : Node.js 20.x
- Mémoire : 2048 MB
- Timeout : 300 secondes (5 minutes)
- Rôle IAM :
odentas-seal-lambda-role
URL de la Lambda
https://o4nfddsoi44rrhcrl3zlfeiury0uyasw.lambda-url.eu-west-3.on.aws/
Cette URL a été ajoutée automatiquement dans .env.local :
LAMBDA_PDF_TO_IMAGES_URL=https://o4nfddsoi44rrhcrl3zlfeiury0uyasw.lambda-url.eu-west-3.on.aws/
Configuration CORS
- AllowOrigins :
*(tous les domaines) - AllowMethods :
POST - AllowHeaders :
* - Auth : NONE (pas d'authentification requise)
Cela permet de tester en local et en production sans restrictions.
🚧 Prochaines Étapes
1. Ajouter le Layer Poppler
⚠️ Important : La Lambda nécessite un Layer contenant poppler-utils et ImageMagick.
Pour créer et déployer le layer :
cd lambda-pdf-to-images
./create-layer.sh # Nécessite Docker
# Puis déployer le layer
aws lambda publish-layer-version \
--layer-name poppler-imagemagick \
--description "Poppler Utils et ImageMagick" \
--zip-file fileb://poppler-layer.zip \
--compatible-runtimes nodejs20.x \
--compatible-architectures x86_64 \
--region eu-west-3
Ou utiliser un layer public existant :
aws lambda update-function-configuration \
--function-name odentas-pdf-to-images \
--layers arn:aws:lambda:eu-west-3:ACCOUNT:layer:poppler-imagemagick:1 \
--region eu-west-3
2. Tester la Lambda
Test avec curl :
curl -X POST https://o4nfddsoi44rrhcrl3zlfeiury0uyasw.lambda-url.eu-west-3.on.aws/ \
-H "Content-Type: application/json" \
-d '{
"pdfUrl": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
"scale": 1.5
}'
3. Redémarrer l'application Next.js
# L'URL Lambda a été ajoutée dans .env.local
# Redémarrer le serveur de développement
npm run dev
4. Déployer sur Vercel
Ajouter la variable d'environnement sur Vercel :
-
Aller dans Settings > Environment Variables
-
Ajouter :
- Nom :
LAMBDA_PDF_TO_IMAGES_URL - Valeur :
https://o4nfddsoi44rrhcrl3zlfeiury0uyasw.lambda-url.eu-west-3.on.aws/ - Environment : Production, Preview, Development
- Nom :
-
Redéployer l'application
🔄 Mise à Jour de la Lambda
Pour mettre à jour le code de la Lambda :
cd lambda-pdf-to-images
npm install
zip -r lambda-pdf-to-images.zip index.js package.json node_modules/
aws lambda update-function-code \
--function-name odentas-pdf-to-images \
--zip-file fileb://lambda-pdf-to-images.zip \
--region eu-west-3
📊 Monitoring
Voir les logs CloudWatch :
aws logs tail /aws/lambda/odentas-pdf-to-images --follow --region eu-west-3
Voir les métriques :
aws cloudwatch get-metric-statistics \
--namespace AWS/Lambda \
--metric-name Invocations \
--dimensions Name=FunctionName,Value=odentas-pdf-to-images \
--start-time 2025-10-27T00:00:00Z \
--end-time 2025-10-27T23:59:59Z \
--period 3600 \
--statistics Sum \
--region eu-west-3
🔒 Sécurité
Recommandations de Production
- Ajouter une authentification : Utiliser une API Key ou JWT
- Limiter les origines CORS : Remplacer
*par les domaines autorisés - Activer AWS WAF : Protection contre les attaques DDoS
- Configurer des alertes CloudWatch : Pour les erreurs et la latence
- Limiter la taille des PDFs : Actuellement 50MB max
Pour activer l'authentification :
aws lambda update-function-url-config \
--function-name odentas-pdf-to-images \
--auth-type AWS_IAM \
--region eu-west-3
💰 Coûts Estimés
Avec les paramètres actuels (2048MB, 300s timeout) :
- Prix par invocation : ~0.0000166667 USD par seconde
- Exemple : Si conversion PDF prend 10 secondes → ~0.17 USD par invocation
- 1000 conversions/mois → ~170 USD/mois
Pour réduire les coûts :
- Réduire la mémoire si possible (test avec 1024MB)
- Mettre en cache les résultats dans S3
- Utiliser CloudFront pour le CDN
🆘 Dépannage
La Lambda retourne une erreur 500
Vérifier les logs :
aws logs tail /aws/lambda/odentas-pdf-to-images --follow --region eu-west-3
Erreur "pdftoppm: command not found"
Le layer poppler n'est pas installé. Voir section "Ajouter le Layer Poppler".
Timeout après 300 secondes
Le PDF est trop volumineux. Augmenter le timeout ou la mémoire :
aws lambda update-function-configuration \
--function-name odentas-pdf-to-images \
--timeout 600 \
--memory-size 3008 \
--region eu-west-3
📝 Support
- Code source :
/lambda-pdf-to-images/ - Documentation :
/lambda-pdf-to-images/README.md - Équipe : Odentas Tech