espace-paie-odentas/lambda-pdf-converter/README.md
odentas 59749d481b feat: Migration Cloudinary vers Poppler pour conversion PDF→JPEG
- 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)
2025-10-28 10:22:45 +01:00

116 lines
2.8 KiB
Markdown

# 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
```bash
cd lambda-pdf-converter
npm install
```
### 2. Créer le ZIP de déploiement
```bash
zip -r lambda-pdf-converter.zip . -x "*.git*" -x "README.md"
```
### 3. Créer la Lambda dans AWS
1. Allez dans AWS Lambda Console
2. 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
3. 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 :
```json
{
"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
1. Dans la Lambda, ajouter un trigger "S3"
2. Configuration :
- **Bucket** : `odentas-sign`
- **Event type** : `PUT` (ObjectCreated:Put)
- **Prefix** : `source/`
- **Suffix** : `.pdf`
### 6. Tester
1. Uploadez un PDF de test dans `s3://odentas-sign/source/test/TEST-123456789.pdf`
2. Vérifiez les logs CloudWatch de la Lambda
3. 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 `requestId` depuis 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é