# Déploiement Lambda PDF to Images - Odentas Sign

## ✅ Déploiement Réussi

La Lambda de conversion PDF vers images a été déployée avec succès sur AWS.

### Informations de Déploiement

- **Nom de la fonction** : `odentas-pdf-to-images`
- **Région AWS** : `eu-west-3` (Paris)
- **Runtime** : Node.js 20.x
- **Mémoire** : 2048 MB
- **Timeout** : 300 secondes (5 minutes)
- **Rôle IAM** : `odentas-seal-lambda-role`

### URL de la Lambda

```
https://o4nfddsoi44rrhcrl3zlfeiury0uyasw.lambda-url.eu-west-3.on.aws/
```

Cette URL a été ajoutée automatiquement dans `.env.local` :
```env
LAMBDA_PDF_TO_IMAGES_URL=https://o4nfddsoi44rrhcrl3zlfeiury0uyasw.lambda-url.eu-west-3.on.aws/
```

### Configuration CORS

- **AllowOrigins** : `*` (tous les domaines)
- **AllowMethods** : `POST`
- **AllowHeaders** : `*`
- **Auth** : NONE (pas d'authentification requise)

Cela permet de tester en local et en production sans restrictions.

## 🚧 Prochaines Étapes

### 1. Ajouter le Layer Poppler

⚠️ **Important** : La Lambda nécessite un Layer contenant `poppler-utils` et `ImageMagick`.

Pour créer et déployer le layer :

```bash
cd lambda-pdf-to-images
./create-layer.sh  # Nécessite Docker

# Puis déployer le layer
aws lambda publish-layer-version \
  --layer-name poppler-imagemagick \
  --description "Poppler Utils et ImageMagick" \
  --zip-file fileb://poppler-layer.zip \
  --compatible-runtimes nodejs20.x \
  --compatible-architectures x86_64 \
  --region eu-west-3
```

Ou utiliser un layer public existant :
```bash
aws lambda update-function-configuration \
  --function-name odentas-pdf-to-images \
  --layers arn:aws:lambda:eu-west-3:ACCOUNT:layer:poppler-imagemagick:1 \
  --region eu-west-3
```

### 2. Tester la Lambda

Test avec curl :

```bash
curl -X POST https://o4nfddsoi44rrhcrl3zlfeiury0uyasw.lambda-url.eu-west-3.on.aws/ \
  -H "Content-Type: application/json" \
  -d '{
    "pdfUrl": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
    "scale": 1.5
  }'
```

### 3. Redémarrer l'application Next.js

```bash
# L'URL Lambda a été ajoutée dans .env.local
# Redémarrer le serveur de développement
npm run dev
```

### 4. Déployer sur Vercel

Ajouter la variable d'environnement sur Vercel :

1. Aller dans Settings > Environment Variables
2. Ajouter :
   - **Nom** : `LAMBDA_PDF_TO_IMAGES_URL`
   - **Valeur** : `https://o4nfddsoi44rrhcrl3zlfeiury0uyasw.lambda-url.eu-west-3.on.aws/`
   - **Environment** : Production, Preview, Development

3. Redéployer l'application

## 🔄 Mise à Jour de la Lambda

Pour mettre à jour le code de la Lambda :

```bash
cd lambda-pdf-to-images
npm install
zip -r lambda-pdf-to-images.zip index.js package.json node_modules/

aws lambda update-function-code \
  --function-name odentas-pdf-to-images \
  --zip-file fileb://lambda-pdf-to-images.zip \
  --region eu-west-3
```

## 📊 Monitoring

Voir les logs CloudWatch :

```bash
aws logs tail /aws/lambda/odentas-pdf-to-images --follow --region eu-west-3
```

Voir les métriques :

```bash
aws cloudwatch get-metric-statistics \
  --namespace AWS/Lambda \
  --metric-name Invocations \
  --dimensions Name=FunctionName,Value=odentas-pdf-to-images \
  --start-time 2025-10-27T00:00:00Z \
  --end-time 2025-10-27T23:59:59Z \
  --period 3600 \
  --statistics Sum \
  --region eu-west-3
```

## 🔒 Sécurité

### Recommandations de Production

1. **Ajouter une authentification** : Utiliser une API Key ou JWT
2. **Limiter les origines CORS** : Remplacer `*` par les domaines autorisés
3. **Activer AWS WAF** : Protection contre les attaques DDoS
4. **Configurer des alertes CloudWatch** : Pour les erreurs et la latence
5. **Limiter la taille des PDFs** : Actuellement 50MB max

Pour activer l'authentification :

```bash
aws lambda update-function-url-config \
  --function-name odentas-pdf-to-images \
  --auth-type AWS_IAM \
  --region eu-west-3
```

## 💰 Coûts Estimés

Avec les paramètres actuels (2048MB, 300s timeout) :

- **Prix par invocation** : ~0.0000166667 USD par seconde
- **Exemple** : Si conversion PDF prend 10 secondes → ~0.17 USD par invocation
- **1000 conversions/mois** → ~170 USD/mois

Pour réduire les coûts :
- Réduire la mémoire si possible (test avec 1024MB)
- Mettre en cache les résultats dans S3
- Utiliser CloudFront pour le CDN

## 🆘 Dépannage

### La Lambda retourne une erreur 500

Vérifier les logs :
```bash
aws logs tail /aws/lambda/odentas-pdf-to-images --follow --region eu-west-3
```

### Erreur "pdftoppm: command not found"

Le layer poppler n'est pas installé. Voir section "Ajouter le Layer Poppler".

### Timeout après 300 secondes

Le PDF est trop volumineux. Augmenter le timeout ou la mémoire :
```bash
aws lambda update-function-configuration \
  --function-name odentas-pdf-to-images \
  --timeout 600 \
  --memory-size 3008 \
  --region eu-west-3
```

## 📝 Support

- Code source : `/lambda-pdf-to-images/`
- Documentation : `/lambda-pdf-to-images/README.md`
- Équipe : Odentas Tech
