Amazon DVA-C02: Stockage, Amazon S3, CloudFront et Systèmes de fichiers (EFS, FSx) — Guide d'étude
Fait partie du AWS Developer Associate DVA-C02 — Guide d’étude. Entraînez-vous avec des réponses vérifiées dans le centre d’examens Amazon, ou passez des tests chronométrés sur ExamRoll.io.
Principes fondamentaux d’Amazon S3, contrôles de sécurité et modèles pour les développeurs
Amazon S3 est le service de stockage d’objets durable de référence. Les développeurs devraient concevoir leurs API autour de PutObject/GetObject/HeadObject et des chargements partitionnés (CreateMultipartUpload, UploadPart, CompleteMultipartUpload) pour les charges utiles volumineuses, et utiliser les assistants SDK comme generate_presigned_url(‘get_object’) ou generate_presigned_post de boto3 pour les chargements clients temporaires. Sécurisez les objets en utilisant le chiffrement côté serveur (SSE-S3, SSE-KMS via PutObject avec x-amz-server-side-encryption ou en imposant le chiffrement par défaut du compartiment avec PutBucketEncryption), exigez TLS en appliquant aws:SecureTransport dans les stratégies de compartiment, et bloquez l’accès public accidentel avec S3 Block Public Access et des refus (deny) explicites dans les stratégies de compartiment. Les pièges courants incluent les refus (deny) explicites IAM qui priment sur les autorisations de rôle, les URL présignées qui héritent des privilèges du signataire mais restent soumises aux stratégies de compartiment et aux stratégies de point de terminaison VPC, et les mauvaises configurations CORS lors du chargement direct depuis les navigateurs (configurez PutBucketCors). Utilisez les règles de cycle de vie (PutBucketLifecycleConfiguration) pour faire passer les objets vers Intelligent-Tiering, GLACIER, ou pour expirer les versions non courantes, et activez la gestion des versions (PutBucketVersioning) avant de vous fier aux règles sur les versions non courantes. Pour l’audit et la récupération, activez les journaux d’accès au serveur S3 ou les S3 Access Points, et utilisez Object Lock avec un mode de rétention pour une conservation immuable. Concevez votre architecture en tenant compte de la cohérence à terme (eventual consistency) des écrasements (PUT) sur de nouvelles clés (la lecture après écriture est garantie pour un PUT de nouveaux objets, mais les mises à jour de clés existantes peuvent présenter une cohérence à terme dans des scénarios extrêmes).
S3 avancé : Object Lambda, flux présignés, stratégies et nuances du cycle de vie
S3 Object Lambda vous permet de transformer les réponses GetObject en attachant une fonction Lambda à un S3 Object Lambda Access Point ; la fonction Lambda reçoit un GetObjectContext et doit appeler WriteGetObjectResponse (via l’API S3 Object Lambda/Control) pour retourner les octets transformés. Les cas d’usage typiques sont le redimensionnement d’images à la volée, la rédaction (occultation) de données, ou la conversion de format sans dupliquer les objets. Pour les chargements depuis un navigateur, générez des POST présignés (generate_presigned_post dans les SDK) avec une stratégie restreinte (content-length-range, préfixe de clé) pour éviter les abus. Les stratégies de compartiment et les stratégies de point de terminaison de passerelle/d’interface VPC sont puissantes pour restreindre l’accès : préférez un Allow explicite avec des conditions sur la ressource (aws:SourceVpce, aws:Referer avec prudence) et évitez les principaux (principals) ouverts avec des caractères génériques (wildcards). Les pièges du cycle de vie incluent les transitions pour les compartiments versionnés — configurez explicitement noncurrentVersionTransitions et noncurrentVersionExpiration — et la règle abort-incomplete-multipart-upload pour éviter les fuites de stockage. Lorsque vous imposez le chiffrement en transit, exigez x-amz-server-side-encryption ou utilisez PutBucketPolicy pour refuser les requêtes sans TLS. Pour une conformité immuable, activez Object Lock avant de charger les objets. Lorsque une application programmatique est requise, combinez les événements S3 (SNS, EventBridge) avec Lambda pour appliquer des balises (tags) ou effectuer une validation post-chargement.
CloudFront, stratégies de mise en cache et calcul en périphérie (Lambda@Edge vs CloudFront Functions)
CloudFront accélère la distribution mondiale de contenu et protège les origines. Pour les origines S3, préférez l’Origin Access Control (OAC) avec Sigv4 à l’ancienne Origin Access Identity pour signer les requêtes vers l’origine et refuser l’accès public direct à S3. L’optimisation du comportement du cache utilise Cache-Control/Expires, le transfert de l’en-tête Authorization, et des clés de cache basées sur les chaînes de requête/cookies ; privilégiez la mise sur liste blanche (whitelisting) des clés de cache ou une Cache Policy & Origin Request Policy pour réduire la fragmentation du cache. Pour le contenu privé, utilisez les URL signées ou les cookies signés de CloudFront (à créer via cloudfront.create_signer ou les assistants SDK). Utilisez CloudFront Functions pour des manipulations légères en moins d’une milliseconde (requête/réponse du visualiseur) et Lambda@Edge pour une logique plus lourde nécessitant des runtimes Node/Python et des déclencheurs (hooks) sur la requête ou la réponse de l’origine ; souvenez-vous que les fonctions Lambda@Edge sont déployées depuis us-east-1 et ont des implications de démarrage à froid (cold-start) ainsi qu’un délai de réplication régionale. L’invalidation a un coût et une latence — préférez le versionnement des clés d’objet (déployer de nouveaux noms de fichiers ou ajouter une version en chaîne de requête) pour éviter les invalidations. Instrumentez CloudFront avec des journaux en temps réel et des métriques CloudWatch pour la détection d’anomalies en quasi-temps réel, et déclenchez Lambda pour des réponses automatisées. Les pièges courants incluent le transfert excessif d’en-têtes/cookies qui invalident le cache (cache busting) et le fait de supposer que la propagation de l’invalidation est immédiate.
Systèmes de fichiers partagés : critères de décision pour EFS et FSx, montages et pièges à éviter
Choisissez EFS pour des systèmes de fichiers conformes à POSIX, montés simultanément via NFSv4.1 sur des clients Linux ; optez pour les variantes de FSx lorsque vous avez besoin de fonctionnalités SMB/Windows ou des hautes performances de Lustre. EFS prend en charge le chiffrement au repos via KMS, le chiffrement en transit à l’aide de l’option de montage TLS, et les points d’accès pour le mappage UID/GID par application. Montez-le à l’aide de amazon-efs-utils (
undefined
) ou du client NFS pour les charges de travail à haut débit. Sélectionnez le mode de performance generalPurpose ou maxIO et le mode de débit bursting ou provisioned en fonction des schémas de débit/IOPS. FSx for Windows s’intègre avec Active Directory et expose des partages SMB avec des ACL NTFS, des espaces de noms DFS et une sémantique Windows native — montez-le avec
undefined
ou via des clients EC2 Windows ; les pièges courants incluent la complexité de la jonction à AD et la résolution DNS. FSx for Lustre est idéal pour le calcul haute performance et peut se lier de manière transparente à S3 via des tâches de référentiel de données pour importer/exporter des jeux de données. Pièges liés au réseau : ouvrez les ports NFS/SMB dans les groupes de sécurité, utilisez des cibles de montage dans chaque AZ pour EFS, et assurez-vous que les politiques IAM ne peuvent pas être utilisées pour restreindre l’accès au niveau NFS — les permissions POSIX et les groupes de sécurité sont les points d’application. Pour les sauvegardes, préférez les snapshots automatisés (EFS Backup, snapshots FSx) et testez régulièrement les restaurations.
Problème pratique : Scénario d’utilisation
Scénario : AcmeAnalytics exploite un tableau de bord statique destiné aux clients, hébergé dans un compartiment S3 et distribué mondialement via une distribution CloudFront. L’équipe d’ingénierie doit servir des fichiers de données privés, effectuer une conversion à la volée de CSV vers JSON pour certains objets, et s’assurer que les nouvelles constructions du tableau de bord invalident les caches avec un coût minimal.
Défi : Mettre en œuvre une livraison sécurisée d’objets privés, une transformation dynamique sans dupliquer le stockage, et une stratégie à faible coût pour les mises à jour du cache.
Approche recommandée :
- Créez un compartiment S3 avec
PutBucketEncryption(SSE-KMS) et unePutBucketPolicypour refuser les connexions non-TLS et autoriser l’accès uniquement depuis le CloudFront Origin Access Control (créez un OAC et attachez-le à la distribution) ; utilisezPutBucketVersioningpour activer le versioning. - Configurez un S3 Object Lambda Access Point ; implémentez une fonction Lambda qui gère le
GetObjectContext, récupère l’original viaS3 GetObject, transforme le CSV en JSON en mémoire, et renvoie le résultat en utilisant
undefined
.
3. Configurez les comportements de cache de CloudFront : routez /private/* vers le S3 Object Lambda Access Point (en tant qu’origine), définissez une politique de cache (Cache Policy) qui met en cache en fonction de l’en-tête Accept si nécessaire, et activez des TTL minimums ; pour les ressources du tableau de bord, utilisez des noms de fichiers versionnés pour éviter les invalidations.
4. Pour les invalidations nécessaires mais peu fréquentes, appelez
undefined
depuis la CI après le déploiement ; sinon, pour les changements de routine, téléversez les ressources avec un hash de contenu dans le nom de fichier pour contourner les coûts d’invalidation.
Justification : Restreindre l’accès S3 à CloudFront via OAC et imposer SSE-KMS sécurise les données en transit et au repos. S3 Object Lambda permet une transformation à la volée sans dupliquer les objets, et l’utilisation du versioning d’objets ou de noms de fichiers avec hash de contenu évite les invalidations coûteuses tout en préservant l’efficacité du cache.
← Surveillance · Tous les domaines · Bases de données et Mise en cache (RDS →
Entraînez-vous sur ces questions → · Tests chronométrés sur ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Réussissez votre examen →