- 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)
2.8 KiB
2.8 KiB
Lambda PDF Converter pour Odentas Sign
Description
Cette Lambda est déclenchée automatiquement par S3 quand un PDF est uploadé dans le bucket odentas-sign (prefix source/).
Elle convertit le PDF en images JPEG via Cloudinary et stocke les images dans odentas-docs pour être utilisées sur les pages de signature.
Déploiement
1. Installation des dépendances
cd lambda-pdf-converter
npm install
2. Créer le ZIP de déploiement
zip -r lambda-pdf-converter.zip . -x "*.git*" -x "README.md"
3. Créer la Lambda dans AWS
-
Allez dans AWS Lambda Console
-
Créer une nouvelle fonction :
- Nom :
odentas-sign-pdf-converter - Runtime : Node.js 20.x
- Architecture : x86_64
- Rôle d'exécution : Créer un nouveau rôle avec les permissions de base
- Nom :
-
Uploader le ZIP
lambda-pdf-converter.zip
4. Configuration de la Lambda
Variables d'environnement
CLOUDINARY_CLOUD_NAME=duecox5va
CLOUDINARY_API_KEY=265234555873541
CLOUDINARY_API_SECRET=DS5k0Zo2LxDkE5KmA3nFsT3bL1M
AWS_REGION=eu-west-3
SOURCE_BUCKET=odentas-sign
DEST_BUCKET=odentas-docs
Configuration générale
- Mémoire : 512 MB (ou plus selon la taille des PDF)
- Timeout : 5 minutes (300 secondes)
- Retry : 0 (pas de retry automatique)
Permissions IAM
Ajouter ces permissions au rôle de la Lambda :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::odentas-sign/*"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::odentas-docs/odentas-sign-images/*"
}
]
}
5. Configurer le trigger S3
- Dans la Lambda, ajouter un trigger "S3"
- Configuration :
- Bucket :
odentas-sign - Event type :
PUT(ObjectCreated:Put) - Prefix :
source/ - Suffix :
.pdf
- Bucket :
6. Tester
- Uploadez un PDF de test dans
s3://odentas-sign/source/test/TEST-123456789.pdf - Vérifiez les logs CloudWatch de la Lambda
- Vérifiez que les images sont créées dans
s3://odentas-docs/odentas-sign-images/TEST/page-*.jpg
Architecture
Upload PDF
↓
s3://odentas-sign/source/{folder}/{requestId}-{timestamp}.pdf
↓
Event S3 ObjectCreated
↓
Lambda odentas-sign-pdf-converter
↓
Cloudinary (conversion PDF → JPEG)
↓
s3://odentas-docs/odentas-sign-images/{requestId}/page-{num}.jpg
Notes
- La Lambda extrait le
requestIddepuis le nom du fichier (partie avant le premier tiret) - Format attendu :
{requestId}-{timestamp}.pdf - Exemple :
4fc9bdf9-eacc-4eed-b713-da40a095c5e7-1234567890.pdf→ requestId =4fc9bdf9 - Les images sont stockées avec metadata pour traçabilité