0

Ich möchte AWS AccessLogs für die Verarbeitung von Website-Impressionen mit einer vorhandenen Batch-orientierten ETL-Pipeline verwenden, die die letzte fertiggestellte Stunde der Impressionen erfasst und viele weitere Transformationen mit ihnen durchführt.Gibt es Benachrichtigungen in AWS CloudFront Access Logs?

Das Problem mit AccessLog ist aber, dass:

Beachten Sie jedoch, dass einige oder alle Protokolldateieinträge für eine Zeitperiode kann manchmal von bis zu 24 Stunden

So verzögert werden Ich würde nie wissen, wann alle Protokolle für eine bestimmte Stunde abgeschlossen sind. Ich kann leider keine Streaming-Lösung verwenden, ich muss die vorhandene Pipeline verwenden, die stündliche Datenchargen ergreift.

Also meine Frage ist, gibt es eine Möglichkeit, benachrichtigt zu werden, dass alle Protokolle an S3 für eine bestimmte Stunde geliefert wurde?

+0

Verweisen Sie auf Amazon S3 [Serverzugriffsprotokollierung] (http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs).html) oder Amazon CloudFront [Zugriffsprotokolle] (http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html)? –

+0

@JohnRotenstein Entschuldigung dafür, ich spreche über CloudFront AccessLogs, die in s3 gespeichert und dann von mir in einer ETL-Pipeline verarbeitet werden. – lisak

Antwort

0

Sie haben nach S3 gefragt, aber Ihr Pull-Quote stammt aus der Dokumentation für CloudFront.

Wie auch immer, es spielt keine Rolle. Dies ist nur ein Vorbehalt, sagen, dass Protokolllieferung möglicherweise manchmal verzögert werden, und dass, wenn es sich verzögert, dies ist kein Fehler - es ist ein Nebeneffekt eines massiven, verteilten Systems.

Beide Dienste arbeiten in einem unverständlich großen Umfang, so dass in kleinen Teilen des Systems regelmäßig Probleme auftreten und eventuell einige unterbrochene Protokolle oder zurückgestoßene Protokolle gefunden und zugestellt werden können. Selten können sie sogar Tage oder Wochen später ankommen.

Es gibt kein Ereignis, das anzeigt, dass alle Protokolle beendet sind, da es keinen einzigen Punkt in einem solchen System gibt, der sich dessen bewusst ist.

Aber hier ist das Essen zum Mitnehmen Konzept: die Mehrheit von Protokollen innerhalb Minuten, ankommen wird, aber dies ist nicht garantiert. Sobald Sie beginnen, den Verkehr zu betreiben und zu beobachten, wie die Protokollierung funktioniert, werden Sie sehen, worauf ich mich beziehe. Verzögerte Protokolle sind die Ausnahme, und Sie sollten in der Lage sein, ziemlich schnell zu verstehen, wie lange Sie warten müssen, bevor Sie die Protokolle für eine bestimmte Wanduhrzeit verarbeiten. Solange Sie verfolgen, was Sie verarbeitet haben, können Sie dies später gegen den Bucket überprüfen, um sicherzustellen, dass Ihr Prozess einen ausreichenden Anteil der Protokolle erfasst. Verkehr auf einige meiner S3 Eimer Routing unter Verwendung von HAProxy in EC2 in der gleichen Region wie der Eimer


Seit den Tagen vor dem Cloudfront SNI Unterstützung hatte, habe ich. Dies gab mir die Möglichkeit, benutzerdefinierte Hostnamen und SNI zu verwenden, gab mir aber auch die Echtzeitprotokollierung des gesamten Bucket-Datenverkehrs mit HAProxy, der Kopien seiner Protokolle auch für eine Echtzeitanalyse über UDP in einen Protokollkollektor streamen kann wie es in syslog schreiben. Es gibt keinen messbaren Unterschied in der Leistung mit dieser Lösung, und HAProxy läuft extrem gut auf Servern der t2-Klasse, also ist es kosteneffektiv. Sie führen natürlich mehr Kosten und mehr zu unterhalten ein, aber Sie können sogar HAProxy zwischen CloudFront und S3 bereitstellen, solange Sie keine Ursprungszugriffsidentität verwenden. Einer meiner größeren Dienste macht genau das, ein Überbleibsel aus den Tagen vor Lambda @ Edge.