CloudFront propose deux méthodes entièrement gérées pour protéger vos origines :
Si les solutions gérées CloudFront ne répondent pas aux exigences de votre cas d’utilisation, voici quelques-unes des approches alternatives disponibles :
Les journaux d’accès standard CloudFront peuvent être transmis à Amazon S3, Amazon CloudWatch et Amazon Data Firehose. Vous pouvez choisir le format du journal de sortie (texte brut, w3c, JSON, csv et parquet). Vous pouvez sélectionner les champs que vous souhaitez enregistrer et l’ordre dans lequel ces champs doivent être inclus dans les journaux. Pour les journaux envoyés à S3, vous pouvez également activer le partitionnement des journaux envoyés à S3, c’est-à-dire configurer les journaux pour qu’ils soient automatiquement partitionnés toutes les heures ou tous les jours. Vous pouvez également fournir des journaux d’accès standard à vos compartiments S3 dans les Régions AWS optionnelles. Consultez la section relative aux journaux d’accès standard du guide du développeur de CloudFront pour en savoir plus.
CloudFront ne facture pas l’activation des journaux standard, mais vous devrez payer des frais pour la livraison, le stockage et l’accès aux journaux en fonction de la destination de livraison des journaux. Consultez la section « Fonctionnalités supplémentaires » de la page de tarification de CloudFront pour en savoir plus.
Vous pouvez choisir une destination en fonction de votre cas d'utilisation. Si disposez de cas d'utilisation avec des contraintes de temps et que vous devez accéder rapidement aux données du journal en quelques secondes, choisissez les journaux en temps réel. Si vous devez réduire le coût de votre pipeline de journaux en temps réel, vous pouvez choisir de filtrer les données de journal en activant les journaux uniquement pour des comportements de cache spécifiques ou en choisissant un taux d'échantillonnage inférieur. Le pipeline de journaux en temps réel est conçu pour diffuser rapidement les données. Par conséquent, les enregistrements du journal peuvent être perdus s'il existe des retards de données. D'autre part, si vous avez besoin d'une solution de traitement de journaux économique sans nécessiter de données en temps réel, l'option de journal standard actuelle est idéale pour vous. Les journaux standard dans S3 sont des journaux complets, et sont généralement disponibles en quelques minutes. Ces journaux peuvent être activés pour l'ensemble de la distribution et non pour des comportements de cache spécifiques. Par conséquent, si vous avez besoin de journaux pour des investigations, des audits et des analyses ad hoc, vous pouvez choisir de n'activer que les journaux standard dans S3. Vous pouvez choisir d’utiliser une combinaison des deux journaux. Utilisez une liste filtrée de journaux en temps réel pour la visibilité opérationnelle, puis les journaux standard pour l'audit.
Les journaux standard CloudFront sont envoyés à votre compartiment S3. Vous pouvez également utiliser l’intégration de solutions tierces telles que DataDog et Sumologic pour créer des tableaux de bord à partir de ces journaux.
Les journaux en temps réel sont envoyés à Kinesis Data Stream. Depuis les Kinesis Data Streams, les journaux peuvent être publiés dans Amazon Kinesis Data Firehose. Amazon Kinesis Data Firehose permet d’envoyer aisément des données à Amazon S3, Amazon Redshift, Amazon Elasticsearch Service et à des fournisseurs de services comme Datadog, New Relic et Splunk. Kinesis Firehose prend en charge également la distribution des données vers un point de terminaison HTTP générique.
Pour estimer le nombre de partitions dont vous avez besoin, procédez comme suit :
Supposons que votre distribution reçoive 10 000 demandes par seconde et que la taille de vos enregistrements de journal en temps réel est généralement de 1 Ko. Cela signifie que votre configuration de journal en temps réel pourrait générer 10 000 000 d'octets (10 000 multiplié par 1 000), soit 9,53 Mo, par seconde. Dans ce scénario, vous n'avez besoin que de 10 partitions Kinesis. Vous devez envisager de créer au moins 12 partitions pour avoir une marge.