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

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

  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 :

{
  "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é