| .. | ||
| create-poppler-layer.sh | ||
| deploy.sh | ||
| index.js | ||
| index.js.cloudinary.bak | ||
| package-lock.json | ||
| package.json | ||
| poppler-layer.zip | ||
| README.md | ||
| s3-notification.json | ||
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é