Amazon Simple Storage Service
Entwicklerhandbuch (API-Version 2006-03-01)

Amazon S3 Server-Zugriffsprotokollierung

Die Server-Zugriffsprotokollierung bietet detaillierte Aufzeichnungen über die Anforderungen, die an einen Bucket gestellt wurden. Server-Zugriffsprotokolle sind für viele Anwendungen nützlich. Beispielsweise können Zugriffsprotokoll-Informationen bei Sicherheits- und Zugriffsprüfungen nützlich sein. Außerdem erfahren Sie damit mehr über Ihren Kundenstamm und verstehen Ihre Amazon S3-Rechnung.

Anmerkung

Server-Zugriffsprotokolle protokollieren keine Informationen zu Fehlern wegen Umleitungen in falsche Regionen, die nach dem 20. März 2019 gestartet wurden. Fehler wegen Umleitungen in falsche Regionen treten auf, wenn eine Anforderung für ein Objekt/einen Bucket an einen anderen Endpunkt als den Endpunkt der Region gerichtet wird, in der sich der Bucket befindet.

So aktivieren Sie die Server-Zugriffsprotokollierung

Um Zugriffsanforderungen für Ihren Bucket nachzuverfolgen, können Sie die Server-Zugriffsprotokollierung aktivieren. Jeder Zugriffsprotokolldatensatz enthält Details über eine Zugriffsanforderung, z. B. Auftraggeber, Bucket-Name, Anforderungszeit, Anforderungsaktion, Antwortstatus und Fehlercode, falls relevant.

Anmerkung

Für die Aktivierung der Serverzugriffsprotokollierung auf einem Amazon S3-Bucket fallen keine zusätzlichen Kosten an. Für die Speicherung der Protokolldateien, die das System an Sie überträgt, fallen die normalen Gebühren für die Speicherung an. (Sie können die Protokolldateien jederzeit löschen.) Es werden keine Datenübertragungskosten für die Übermittlung von Protokolldateien berechnet, aber der Zugriff auf die übermittelten Protokolldateien wird ebenso wie jede andere Datenübertragung berechnet.

Die Protokollierung ist standardmäßig deaktiviert. Wenn die Protokollierung aktiviert ist, werden die Protokolle in einem Bucket in derselben AWS-Region wie der des Quellbereichs gespeichert.

Gehen Sie folgendermaßen vor, um die Zugriffsprotokollierung zu aktivieren:

  • Aktivieren Sie die Protokollierung, indem Sie die Protokollierungskonfiguration zu dem Bucket hinzufügen, für den Amazon S3 Zugriffsprotokolle bereitstellen soll. Wir bezeichnen diesen Bucket als Quell-Bucket.

  • Gewähren Sie der Amazon S3-Protokollbereitstellungsgruppe Schreibberechtigung für den Bucket, in dem die Zugriffsprotokolle gespeichert werden sollen. Wir bezeichnen diesen Bucket als Ziel-Bucket.

Anmerkung

  • Amazon S3 unterstützt nur das Gewähren von Rechten zur Bereitstellung von Zugriffsprotokollen über eine Bucket-ACL, nicht über eine Bucket-Richtlinie.

  • Das Hinzufügen von deny-Bedingungen zu einer Bucket-Richtlinie hindert Amazon S3 möglicherweise an der Bereitstellung von Zugriffsprotokollen.

  • Die Standardbucketverschlüsselung am Zielbucket darf nur verwendet werden, wenn AES256 (SSE-S3) ausgewählt ist. Die SSE-KMS-Verschlüsselung wird nicht unterstützt.

  • Die Amazon S3-Objektsperre darf nicht auf dem Protokollzielbucket aktiviert werden.

Um die Protokollbereitstellung zu aktivieren, geben Sie die folgenden Informationen für die Protokollierungskonfiguration an:

  • Den Namen des Ziel-Buckets, in dem Amazon S3 die Zugriffsprotokolle als Objekte speichern soll. Sie können Protokolle in jeden Bucket speichern lassen, der sich in der gleichen Region wie der Quell-Bucket befindet, einschließlich des Quell-Buckets selbst.

    Wir empfehlen, die Zugriffsprotokolle in einem anderen Bucket zu speichern, damit Sie die Protokolle leicht verwalten können. Wenn Sie Zugriffsprotokolle im Quell-Bucket speichern, empfehlen wir Ihnen, ein Präfix für alle Protokollobjektschlüssel anzugeben, damit die Objektnamen mit einer gemeinsamen Zeichenfolge beginnen und die Protokollobjekte leichter zu identifizieren sind.

    Wenn der Quell- und Ziel-Bucket derselbe sind, werden zusätzliche Protokolle für die Protokolle erstellt, die in den Bucket geschrieben werden. Dieses Verhalten ist möglicherweise nicht ideal für Ihren Anwendungsfall, da es zu einer geringfügigen Erhöhung Ihrer Speicherabrechnung führen könnte. Zusätzlich können die zusätzlichen Protokolle über Protokolle das Auffinden des gesuchten Protokolls erschweren.

    Anmerkung

    Sowohl der Quell- als auch der Ziel-Bucket müssen demselben AWS-Konto gehören, und die Buckets müssen beide in derselben Region liegen.

  • (Optional) Ein Präfix, das Amazon S3 allen Protokollobjektschlüsseln zuweist. Das Präfix macht es Ihnen einfacher, die Protokollobjekte zu finden.

    Wenn Sie beispielsweise den Präfixwert logs/ angeben, beginnt jedes von Amazon S3 erstellte Protokollobjekt mit dem Präfix logs/ im Schlüssel wie im folgenden Beispiel gezeigt:

    logs/2013-11-01-21-32-16-E568B2907131C0C0

    Das Schlüsselpräfix kann hilfreich sein, wenn Sie die Protokolle löschen. Beispielsweise können Sie eine Lebenszyklus-Konfigurationsregel für Amazon S3 festlegen, nach der Objekte mit einem bestimmten Schlüsselpräfix gelöscht werden. Weitere Informationen finden Sie unter Löschen von Amazon S3-Protokolldateien.

  • (Optional) Berechtigungen, um anderen Benutzern Zugriff auf die generierten Protokolle zu gewähren. Standardmäßig hat der Bucket-Eigentümer stets vollen Zugriff auf die Protokollobjekte. Optional können Sie auch anderen Benutzern Zugriff gewähren.

Weitere Informationen zum Aktivieren der Server-Zugriffsprotokollierung finden Sie unter Aktivieren der Protokollierung mithilfe der Konsole und Aktivieren der programmgesteuerten Protokollierung.

Protokollobjekt-Schlüsselformat

Amazon S3 verwendet das folgende Objektschlüsselformat für die Protokollobjekte, die in den Ziel-Bucket hochgeladen werden:

TargetPrefixYYYY-mm-DD-HH-MM-SS-UniqueString

Im Schlüssel sind YYYY, mm, DD, HH, MM und SS die Ziffern von Jahr, Monat, Tag, Stunde, Minute bzw. Sekunden des Zeitpunkts, an dem die Protokolldatei übermittelt wurde. Diese Datums- und Uhrzeitangaben entsprechen der Zeitzone UTC (Coordinated Universal Time).

Eine Protokolldatei, die zu einem bestimmten Zeitpunkt bereitgestellt wurde, kann Datensätze enthalten, die an einem beliebigen Zeitpunkt davor geschrieben wurden. Es lässt sich nicht feststellen, ob alle Protokoll-Datensätze für ein bestimmtes Zeitintervall bereitgestellt wurden oder nicht.

Die UniqueString-Komponente des Schlüssels verhindert, dass Dateien überschrieben werden. Sie hat keine Bedeutung und wird normalerweise von Protokollverarbeitungssoftware ignoriert.

Wie werden Protokolle bereitgestellt?

Amazon S3 sammelt periodisch Zugriffsprotokoll-Datensätze, fasst die Datensätze in Protokolldateien zusammen und lädt anschließend die Protokolldateien als Protokollobjekte in Ihren Ziel-Bucket hoch. Wenn Sie die Protokollierung bei mehreren Quell-Buckets aktivieren, die denselben Ziel-Bucket haben, werden die Zugriffsprotokolle für alle diese Quell-Buckets in diesen Ziel-Bucket geladen. Jedes Protokollobjekt gibt jedoch Zugriffsprotokoll-Datensätze für einen bestimmten Quell-Bucket aus.

Amazon S3 verwendet ein spezielles Protokollbereitstellungskonto zum Schreiben der Zugriffsprotokolle, das als „Protokollbereitstellungsgruppe“ bezeichnet wird. Für diese Protokolle gelten die normalen Zugriffskontrollbeschränkungen. Sie müssen der Protokollbereitstellungsgruppe eine Schreibberechtigung für den Ziel-Bucket erteilen, indem Sie einen Rechteerteilungseintrag in die Zugriffskontrollliste (ACL) des Buckets einfügen. Wenn Sie die Amazon S3-Konsole zum Aktivieren der Protokollierung für einen Bucket verwenden, aktiviert die Konsole sowohl die Protokollierung für den Quell-Bucket als auch die Aktualisierung der ACL im Ziel-Bucket, um eine Schreibberechtigung für die Protokollbereitstellungsgruppe zu erteilen.

Best-Effort-Protokollbereitstellung der Server

Server-Zugriffsprotokoll-Datensätze werden auf Best-Effort-Basis bereitgestellt. Die meisten Anforderungen nach einem Bucket, der für die Protokollierung richtig konfiguriert ist, führen zu einem ausgelieferten Protokollsatz. Die meisten Protokollsätze werden innerhalb weniger Stunden nach der Aufnahme geliefert, können aber häufiger geliefert werden.

Die Vollständigkeit und Aktualität der Serverprotokollierung wird nicht garantiert. Der Protokolldatensatz für eine bestimmte Anforderung wird möglicherweise viel später bereitgestellt, als die Anforderung tatsächlich verarbeitet wurde; es kann auch sein, dass er gar nicht bereitgestellt wird. Der Zweck der Serverprotokolle besteht darin, Ihnen einen Überblick über die Art des Datenverkehrs zu und von Ihrem Bucket zu vermitteln. Es passiert selten, das Protokolldatensätze verloren gehen, aber die Server-Protokollierung ist nicht als vollständige Auflistung aller Anforderungen vorgesehen.

Aufgrund der Best-Effort-Natur der Serverprotokollierungsfunktion können die im AWS-Portal verfügbaren Nutzungsberichte (Abrechnungs- und Kostenverwaltungsberichte auf der AWS Management Console) eine oder mehrere ZugriffsAnforderungen enthalten, die nicht in einem bereitgestellten Serverprotokoll angezeigt werden.

Statusänderungen in der Bucket-Protokollierung werden mit der Zeit wirksam

Änderungen am Protokollierungsstatus eines Buckets benötigen einige Zeit, bis sie sich auf die Bereitstellung von Protokolldateien auswirken. Wenn Sie beispielsweise die Protokollierung für einen Bucket aktivieren, werden möglicherweise einige Anforderungen, die in der darauffolgenden Stunde gemacht werden, protokolliert, andere hingegen nicht. Wenn Sie den Ziel-Bucket für die Protokollierung von Bucket A zu Bucket B ändern, werden in der nächsten Stunde einige Protokolle möglicherweise zu Bucket A übermittelt, während andere zu dem neuen Ziel-Bucket B übermittelt werden. In jedem Fall werden die neuen Einstellungen letztendlich ohne weiteres Eingreifen Ihrerseits wirksam.