Choisir un service Kinesis pour l'ingestion en continu.
→Traitement contrôlé par le consommateur en moins d'une seconde → Kinesis Data Streams. Livraison entièrement gérée vers S3/Redshift/OpenSearch avec conversion de format optionnelle → Kinesis Data Firehose.
Pourquoi: KDS conserve les enregistrements (24h–365j) et prend en charge plusieurs consommateurs. Firehose n'a pas de relecture ; il échange la relecture contre une livraison sans opérations.
Référence↗
Le flux atteint des erreurs ProvisionedThroughputExceeded pendant les pics.
→Redimensionner les shards (Reshard). Chaque shard prend en charge 1 Mo/s ou 1 000 enregistrements/s en ingestion, 2 Mo/s en sortie. Utiliser des clés de partition uniformes ; activer l'Enhanced Fan-Out pour >2 Mo/s par consommateur.
Pourquoi: Les clés de partition "chaudes" concentrent le trafic sur un seul shard. Les clés aléatoires ou basées sur le hachage répartissent la charge.
Référence↗
La charge de travail de streaming est irrégulière et imprévisible ; le redimensionnement manuel des shards (resharding) est une difficulté opérationnelle.
→Kinesis Data Streams en mode capacité à la demande. S'adapte automatiquement jusqu'à 200 Mo/s par défaut ; paiement au volume de données.
Référence↗
Plusieurs consommateurs lisant le même flux atteignent la limite de lecture de 2 Mo/s/shard.
→Enhanced Fan-Out. Chaque consommateur obtient 2 Mo/s/shard dédiés via SubscribeToShard basé sur HTTP/2 en mode push.
Référence↗
Maximiser le débit d'ingestion depuis l'application côté producteur.
→Kinesis Producer Library (KPL) avec agrégation + collection. Regroupe plusieurs enregistrements utilisateur en un seul enregistrement Kinesis jusqu'à 1 Mo ; réduit le coût des opérations PUT.
Pourquoi: Un PutRecord unique est limité en débit et coûteux à 50k événements/s. KPL agrège côté client.
Référence↗
Déposer un flux de clics JSON dans S3 au format Parquet, partitionné par heure d'événement.
→Firehose avec conversion de format d'enregistrement (JSON → Parquet) utilisant une table Glue Data Catalog + partitionnement dynamique sur l'horodatage de l'événement.
Pourquoi: Parquet + partitionnement réduit considérablement le coût de scan d'Athena. Le partitionnement dynamique évite une étape ETL distincte.
Référence↗
Certains enregistrements échouent lors de la transformation ou de la livraison Firehose ; il faut les capturer pour relecture.
→Configurer une sauvegarde S3 avec `AllData` ou `FailedDataOnly`. Les enregistrements échoués sont déposés au préfixe configuré avec les métadonnées d'erreur.
Référence↗
Assurer aucune perte de données dans MSK si un AZ de broker échoue.
→Facteur de réplication ≥ 3 sur 3 AZ et `min.insync.replicas=2` avec `acks=all` du producteur. Activer le Multi-AZ via KRaft sans ZooKeeper ou un placement de broker sur 3 AZ.
Référence↗
Diffuser des données de MSK vers S3, OpenSearch ou RDS sans gérer un cluster Kafka Connect.
→MSK Connect avec un connecteur géré (Confluent S3 Sink, Debezium pour CDC). Met à l'échelle automatiquement les workers par WCU.
Référence↗
Un topic stocke la dernière version d'un enregistrement par clé ; les anciennes versions peuvent être supprimées.
→Définir `cleanup.policy=compact` pour le topic. Kafka conserve la valeur la plus récente pour chaque clé ; les enregistrements plus anciens avec la même clé sont éligibles à la compaction.
Référence↗
Transfert hebdomadaire récurrent de 10 To d'un NFS sur site vers S3 via Direct Connect.
→AWS DataSync avec agent sur site + tâche planifiée. Vérifie l'intégrité des données, prend en charge les transferts incrémentiels, en parallèle.
Pourquoi: DataSync est plus rapide que aws-cli sync et gère nativement la limitation de bande passante, les tentatives et la vérification.
Référence↗
Extraire des données des API SaaS (Salesforce, ServiceNow, Zendesk) vers S3 selon un calendrier.
→AWS AppFlow. Connecteurs gérés, OAuth pris en charge, déclenché par calendrier ou événement, écrit du Parquet vers S3.
Référence↗
Répliquer les changements en cours d'un SQL Server sur site vers Aurora MySQL avec un temps d'arrêt minimal.
→AWS DMS avec tâche de chargement complet + CDC. Utiliser Schema Conversion Tool (SCT) pour la conversion de schémas/code hétérogènes avant DMS.
Référence↗
L'instance de réplication DMS échoue — la réplication est interrompue.
→Activer le Multi-AZ sur l'instance de réplication. Standby synchrone dans une autre AZ ; basculement automatique.
Référence↗
Besoin d'analyses en quasi temps réel sur les données OLTP Aurora sans pipeline ETL.
→Intégration Aurora zero-ETL vers Redshift. Réplication continue des données Aurora vers Redshift ; les requêtes voient les nouvelles données en quelques secondes.
Pourquoi: Élimine les pipelines DMS / Glue / CDC personnalisés pour le cas d'utilisation OLTP vers entrepôt de données.
Référence↗
Déplacer 100 To d'archives historiques d'un site sur site vers S3 ; bande passante limitée.
→AWS Snowball Edge Storage Optimized. Dispositif physique expédié sur site ; copier les données ; renvoyer.
Référence↗
Le JSON source contient des tableaux imbriqués ; l'analyse relationnelle en aval nécessite des lignes aplaties.
→Transformation `Relationalize` de Glue PySpark (ou `explode()` dans DataFrame) qui aplatit les tableaux imbriqués en lignes/tables séparées.
Référence↗
Glue Crawler déduit des types ambigus (`choice<int,string>`) à partir de données CSV désordonnées.
→Appliquer la transformation `ResolveChoice` — convertir en type spécifique ou projeter en struct. Ou corriger à la source en imposant un schéma.
Référence↗
Le job Glue ETL s'exécute toutes les heures sur des données S3 croissantes ; besoin de traiter uniquement les nouveaux fichiers.
→Activer les signets de job Glue (Glue job bookmarks). Glue suit les fichiers/partitions traités et les ignore lors des réexécutions.
Pourquoi: Évite le retraitement de l'ensemble des données. Requis pour les pipelines ETL incrémentiels.
Référence↗
Le job Glue Spark échoue avec une erreur OutOfMemoryError sur le pilote lors de grandes agrégations.
→Passer aux workers G.2X ou G.4X (plus de mémoire pilote) ou activer les prédicats push-down `--enable-glue-datacatalog` pour réduire les données mélangées.
Référence↗
Exécuter un Spark Structured Streaming continu sur une source Kinesis avec une infrastructure gérée.
→Job ETL de streaming AWS Glue. Spark Structured Streaming en arrière-plan ; point de contrôle vers S3.
Référence↗
Un analyste commercial doit nettoyer et transformer des données sans écrire de code.
→AWS Glue DataBrew. Transformations visuelles basées sur des recettes (plus de 250), profilage, lignage. Sortie vers S3, Redshift, RDS.
Référence↗
Exécuter un job Glue ETL uniquement après que le Crawler ait mis à jour avec succès le Data Catalog.
→Workflow Glue avec déclencheurs conditionnels. Succès du Crawler → déclenchement du job ETL. Échec → ignorer / alerte.
Référence↗
Le Crawler déduit toutes les colonnes CSV comme `string` — nécessite des types date et nombre.
→Ajouter un classificateur Glue personnalisé (modèle Grok ou indice de colonne) avant le crawling. Alternativement, pré-écrire une ligne d'en-tête avec des types explicites.
Référence↗
Plusieurs producteurs/consommateurs sur Kafka ont besoin d'une évolution de schéma sans se perturber mutuellement.
→AWS Glue Schema Registry avec des règles de compatibilité (BACKWARD/FORWARD/FULL). Les producteurs enregistrent le schéma ; les consommateurs récupèrent + valident.
Référence↗
Choisir entre EMR et Glue pour l'ETL Spark.
→Spark personnalisé de longue durée avec un réglage approfondi, plusieurs frameworks (Hive, Presto, Flink) → EMR. ETL serverless à paiement par tâche avec intégration Glue Data Catalog → Glue. Spark irrégulier/imprévisible → EMR Serverless.
Référence↗
Jobs Spark/Hive intermittents ; souhaite zéro opération de cluster et pas de calcul inactif.
→EMR Serverless. Pools de capacité pré-initialisés pour des démarrages à faible latence ; mise à l'échelle par job ; paiement par heure vCPU.
Référence↗
Combiner des nœuds de cœur à la demande + des nœuds de tâche Spot pour un EMR optimisé en termes de coûts.
→Instance Fleets avec capacité cible par type. Flotte de cœur à la demande pour la stabilité HDFS ; flotte de tâche Spot avec des types d'instances diversifiés.
Référence↗
Standardiser sur Kubernetes ; souhaite que les jobs EMR Spark partagent le cluster avec d'autres charges de travail.
→EMR sur EKS. Spark s'exécute en tant que pods sur un cluster EKS existant ; partage d'infrastructure et de rôles IAM via IRSA.
Référence↗
Streaming avec état avec agrégations par fenêtre et sémantique "exactement une fois".
→Kinesis Data Analytics pour Apache Flink. Runtime Flink géré ; points de contrôle vers S3 ; mise à l'échelle automatique.
Référence↗
Transformation légère par enregistrement sur un flux Kinesis (<1 ms chacun).
→Lambda avec Event Source Mapping sur KDS. Ajuster `BatchSize`, `MaximumBatchingWindowInSeconds` et `ParallelizationFactor`.
Pourquoi: Lambda est moins cher que KCL/Glue Streaming pour les petites tâches par enregistrement.
Référence↗
Une étape de Step Functions échoue occasionnellement en raison d'une limitation transitoire ; réessayer puis alerter.
→Ajouter un bloc `Retry` avec `ErrorEquals: ["Lambda.ThrottlingException", "States.TaskFailed"]`, `IntervalSeconds`, `MaxAttempts`, `BackoffRate=2`. Plus `Catch` vers un état de notification.
Référence↗
Traiter 500 000 fichiers JSON en parallèle via une transformation Lambda.
→État Map distribué de Step Functions avec `MaxConcurrency` et ItemReader depuis S3. Répartition sur des milliers d'invocations Lambda parallèles.
Référence↗
DAG complexe avec des dépendances inter-services (Glue + Redshift COPY + Lambda + e-mail) et des exigences de lignage.
→Amazon MWAA (Managed Workflows for Apache Airflow). Opérateurs Airflow natifs pour les services AWS ; synchronisation de DAG pilotée par Git.
Référence↗
Besoin de revenir en arrière sur les changements de DAG si un déploiement provoque des échecs.
→Stocker les DAG dans un bucket S3 versionné + synchronisation via le versionnement S3. Ou maintenir le dépôt de DAG dans Git avec un environnement par branche + synchronisation S3 via CI.
Référence↗