- 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)
116 lines
2.8 KiB
Markdown
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é
|