Enregistrer des captures vers S3 avec webhooks et relances | ScreenshotCenter
Configurez la livraison automatique de captures vers AWS S3 ou tout bucket compatible, avec notifications par webhook, logique de relance et modèles de chemins.
Pourquoi livrer les captures vers S3 ?
La plupart des équipes qui capturent des pages à grande échelle ont besoin de les stocker dans un bucket central — pour les archives de conformité, les pipelines ML, les portails clients ou l'intégration avec des outils en aval. Télécharger chaque image manuellement ne passe pas à l'échelle.
L'intégration S3 de ScreenshotCenter pousse les captures terminées directement dans votre bucket. Combinez-la avec les webhooks pour des notifications en temps réel, et vous obtenez un pipeline entièrement automatisé sans code de téléchargement.
Architecture
- Votre code soumet une requête de capture avec le paramètre
appspointant vers votre intégration S3. - ScreenshotCenter effectue le rendu de la page dans un vrai navigateur.
- L'image terminée est envoyée vers votre bucket S3 en utilisant le modèle de chemin que vous avez configuré.
- Un webhook se déclenche vers votre endpoint avec l'ID de la capture, le statut et le chemin S3.
Configuration de l'intégration S3
- Dans le tableau de bord ScreenshotCenter, allez dans Apps → S3 et créez une nouvelle intégration.
- Entrez le nom de votre bucket, la région, l'access key ID et le secret access key.
- Définissez un modèle de chemin avec des jetons :
screenshots/{domain}/{yyyy}/{mm}/{dd}/{id}.png - Cliquez sur Test pour vérifier les identifiants.
Exemple de requête
curl -X POST https://api.screenshotcenter.com/v1/screenshot \
-H "X-API-KEY: VOTRE_CLE_API" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.example.com",
"format": "png",
"size": "page",
"apps": {
"mon-integration-s3": "archive/{domain}/{id}.png"
}
}'
Gestion des webhooks
Configurez une URL de webhook dans votre tableau de bord. Lorsqu'une capture se termine (ou échoue), ScreenshotCenter envoie un POST avec :
{
"event": "screenshot.finished",
"screenshot_id": "abc123",
"status": "finished",
"apps": {
"mon-integration-s3": {
"status": "finished",
"path": "archive/example.com/abc123.png"
}
}
}
Vérifiez l'objet apps pour confirmer que l'upload S3 a réussi avant tout traitement en aval.
Logique de relance
- Relances S3 : ScreenshotCenter relance les uploads échoués jusqu'à 3 fois avec backoff exponentiel.
- Relances webhook : Si votre endpoint retourne un statut non 2xx, le webhook est relancé jusqu'à 5 fois.
- Idempotence : Enregistrez chaque
screenshot_idtraité avant de répondre 200 pour éviter les doublons.
Livraison par lots
Pour les workflows à fort volume, utilisez l'API de lots pour soumettre des centaines d'URL en une seule fois. Chaque capture terminée déclenche indépendamment l'upload S3 et le webhook.
Bonnes pratiques de sécurité
| Pratique | Pourquoi |
|---|---|
Utilisateur IAM dédié avec s3:PutObject uniquement | Minimiser le rayon d'action en cas de fuite |
| Bloquer les ACL publiques sur le bucket | Éviter l'exposition accidentelle |
| Activer le versioning du bucket | Récupérer les écrasements ou suppressions |
| Rotation des clés d'accès trimestrielle | Hygiène standard des identifiants |
| Règles de cycle de vie | Déplacer les anciennes captures vers Glacier |
FAQ
La livraison S3 fonctionne-t-elle avec les stockages compatibles S3 (Wasabi, MinIO, R2) ?
Oui. L'intégration S3 supporte tout endpoint compatible S3 — entrez simplement votre URL d'endpoint personnalisée dans la configuration.
Puis-je utiliser différents modèles de chemins par requête ?
Oui. Le paramètre apps dans la requête remplace le modèle par défaut. Utile pour router différents types de captures vers des structures de dossiers différentes.
Que se passe-t-il si l'upload S3 échoue ?
La capture reste disponible en téléchargement via l'API. Vérifiez /screenshot/info pour le statut de l'app et relancez depuis là.
Prêt à automatiser ? Configurez la livraison S3 en moins de cinq minutes.