Protokollieren von Anfragen mit Server-Zugriffsprotokollierung - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Protokollieren von Anfragen mit 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. Diese Informationen können Ihnen auch helfen, mehr über Ihre Kundenbasis zu erfahren und Ihre Amazon-S3-Rechnung zu verstehen.

Anmerkung

Serverzugriffsprotokolle 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 oder einen Bucket außerhalb der Region gesendet wird, in der sich der Bucket befindet.

Wie aktiviere ich die Protokollzustellung?

Um die Protokollbereitstellung zu aktivieren, führen Sie die folgenden grundlegenden Schritte aus. Details hierzu finden Sie unter Aktivieren Sie die Amazon-S3-Server-Zugriffsprotokollierung.

  1. Geben Sie den Namen des Ziel-Buckets an an (auch als Ziel-Bucket bezeichnet). In diesem Bucket soll Amazon S3 die Zugriffsprotokolle als Objekte speichern. Quell- und Ziel-Bucket müssen sich in derselben AWS-Region befinden und demselben Konto gehören. Der Ziel-Bucket darf keine S3-Object-Lock-Standardkonfiguration für die Aufbewahrungsdauer besitzen. Für den Ziel-Bucket darf außerdem die Option „Zahlung durch den Anforderer“ nicht aktiviert sein.

    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. Zur einfacheren Protokollverwaltung empfehlen wir jedoch, Zugriffsprotokolle in einem anderen Bucket zu speichern.

    Wenn Quell- und Ziel-Bucket identisch sind, werden zusätzliche Protokolle für die Protokolle erstellt, die zum Bucket geschrieben werden. Hierdurch entsteht eine Endlosprotokollschleife. Diese Vorgehensweise wird nicht empfohlen, da sie zu einer geringfügigen Erhöhung der Speicherkosten führen könnte. Weiterhin könnten die zusätzlichen Protokolle über Protokolle das Auffinden des gesuchten Protokolls erschweren.

    Wenn Sie Zugriffsprotokolle im Quell-Bucket speichern möchten, sollten Sie ein Zielpräfix (Zielpräfix) für alle Protokollobjektschlüssel angeben. Wenn Sie ein Präfix angeben, beginnen alle Protokollobjektnamen mit einer gemeinsamen Zeichenfolge. So können Sie die Protokollobjekte leichter identifizieren.

  2. (Optional) Weisen Sie allen Amazon-S3-Protokollobjektschlüsseln ein Zielpräfix zu. Das Zielpräfix (Zielpräfix) macht es einfacher für Sie, 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, z. B.:

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

    Wenn Sie den Präfixwert logs angeben, sieht das Protokollobjekt wie folgt aus:

    logs2013-11-01-21-32-16-E568B2907131C0C0

    Präfixe sind auch nützlich, um zwischen Quell-Buckets zu unterscheiden, wenn mehrere Buckets zum selben Ziel-Bucket protokolliert werden.

    Dieses Präfix ist auch beim Löschen der Protokolle nützlich. Beispielsweise können Sie eine Lebenszyklus-Konfigurationsregel für Amazon S3 festlegen, um Objekte mit einem bestimmten Präfix zu löschen. Weitere Informationen finden Sie unter Löschen von Amazon-S3-Protokolldateien.

  3. (Optional) Legen Sie Berechtigungen fest, um anderen Benutzern Zugriff auf die generierten Protokolle zu gewähren. Standardmäßig hat nur der Bucket-Eigentümer stets vollen Zugriff auf die Protokollobjekte. Wenn Ihr Ziel-Bucket die Einstellung „Von Bucket-Besitzer erzwungen“ für S3 Object Ownership festlegt, um Zugriffssteuerungslisten (ACLs) zu deaktivieren, können Sie keine Berechtigungen in Zielgewährungen (Zielgewährungen) gewähren, die ACLs verwenden. Sie können jedoch Ihre Bucket-Richtlinie für den Ziel-Bucket aktualisieren, um anderen Benutzern Zugriff zu gewähren. Weitere Informationen finden Sie unter Identity and Access Management in Amazon S3 und Berechtigungen für Protokollbereitstellung.

  4. (Optional) Legen Sie ein Protokollobjekt-Schlüsselformat für die Protokolldateien fest. Es gibt zwei Optionen für das Protokollobjekt-Schlüsselformat (auch als Zielobjekt-Schlüsselformat bezeichnet):

    • N-on-date-based Partitionierung – Dies ist das ursprüngliche Protokollobjekt-Schlüsselformat. Wenn Sie dieses Format wählen, sieht das Protokolldatei-Schlüsselformat wie folgt aus:

      [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]

      Wenn Sie beispielsweise logs/ als Präfix angeben, werden Ihre Protokollobjekte wie folgt benannt:

      logs/2013-11-01-21-32-16-E568B2907131C0C0
    • Partitionierung mit Datum – Wenn Sie die Partitionierung mit Datum wählen, können Sie die Ereignis- oder Bereitstellungszeit für die Protokolldatei als die Datumsquelle wählen, die im Protokollformat verwendet wird. Dieses Format vereinfacht das Abfragen der Protokolle.

      Wenn Sie die Partitionierung mit Datum wählen, sieht das Protokolldatei-Schlüsselformat wie folgt aus:

      [DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]

      Wenn Sie beispielsweise logs/ als Zielpräfix angeben, werden Ihre Protokollobjekte wie folgt benannt:

      logs/123456789012/us-west-2/DOC-EXAMPLE-SOURCE-BUCKET/2023/03/01/2023-03-01-21-32-16-E568B2907131C0C0

      Bei der Bereitstellung nach Bereitstellungszeit entspricht die Zeit in den Namen der Protokolldateien der Bereitstellungszeit für die Protokolldateien.

      Bei der Bereitstellung nach Ereigniszeit entsprechen die Angaben für Jahr, Monat und Tag dem Tag, an dem das Ereignis eingetreten ist. Stunde, Minuten und Sekunden sind im Schlüssel auf 00 festgelegt. Die in diesen Protokolldateien bereitgestellten Protokolle beziehen sich nur auf einen bestimmten Tag.

    Wenn Sie Ihre Protokolle über die AWS Command Line Interface (AWS CLI), AWS SDKs oder die Amazon-S3-REST-API konfigurieren, verwenden Sie , TargetObjectKeyFormat um das Protokollobjekt-Schlüsselformat anzugeben. Amazon S3 Um die non-date-based Partitionierung anzugeben, verwenden Sie SimplePrefix. Um eine Partitionierung mit Datum anzugeben, verwenden Sie PartitionedPrefix. Bei Verwendung von PartitionedPrefix verwenden Sie PartitionDateSource, um EventTime oder DeliveryTime anzugeben.

    Für SimplePrefix sieht das Protokolldatei-Schlüsselformat wie folgt aus:

    [TargetPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]

    Für PartitionedPrefix mit Ereignis- oder Bereitstellungszeit sieht das Protokolldatei-Schlüsselformat wie folgt aus:

    [TargetPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]

Protokollobjekt-Schlüsselformat

Amazon S3 verwendet die folgenden Objektschlüsselformate für die Protokollobjekte, die in den Ziel-Bucket hochgeladen werden:

  • N-on-date-based Partitionierung – Dies ist das ursprüngliche Protokollobjekt-Schlüsselformat. Wenn Sie dieses Format wählen, sieht das Protokolldatei-Schlüsselformat wie folgt aus:

    [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
  • Partitionierung mit Datum – Wenn Sie die Partitionierung mit Datum wählen, können Sie die Ereignis- oder Bereitstellungszeit für die Protokolldatei als die Datumsquelle wählen, die im Protokollformat verwendet wird. Dieses Format vereinfacht das Abfragen der Protokolle.

    Wenn Sie die Partitionierung mit Datum wählen, sieht das Protokolldatei-Schlüsselformat wie folgt aus:

    [DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]

Im Protokollobjektschlüssel sind YYYY, MM, DD, hh, mm und ss jeweils die Stellen für Jahr, Monat, Tag, Stunde, Minute und Sekunden. Datum und Uhrzeit 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 ausgeliefert?

Amazon S3 sammelt regelmäßig Zugriffsprotokoll-Datensätze, konsolidiert die Datensätze in Protokolldateien und lädt anschließend die Protokolldateien als Protokollobjekte zu Ihrem Ziel-Bucket hoch. Wenn Sie die Protokollierung für mehrere Quell-Buckets mit demselben Ziel-Bucket aktivieren, besitzt der Ziel-Bucket Zugriffsprotokolle für alle diese Quell-Buckets. Jedes Protokollobjekt gibt jedoch Zugriffsprotokoll-Datensätze für einen bestimmten Quell-Bucket aus.

Amazon S3 verwendet ein spezielles Protokollbereitstellungskonto zum Schreiben der Server-Zugriffsprotokolle. Für diese Protokolle gelten die normalen Zugriffskontrollbeschränkungen. Wir empfehlen Ihnen, die Bucket-Richtlinie für den Ziel-Bucket zu aktualisieren, um Zugriff auf den Protokollservice-Prinzipal (logging.s3.amazonaws.com) zur Zugriffsprotokollbereitstellung zu gewähren. Sie können über Ihre Bucket-Zugriffssteuerungsliste (ACL) der S3-Protokollbereitstellungsgruppe auch Zugriff für die Zugriffsprotokollbereitstellung gewähren. Die Gewährung des Zugriffs für die S3-Protokollbereitstellungsgruppe über Ihre Bucket-ACL wird jedoch nicht empfohlen.

Wenn Sie die Serverzugriffsprotokollierung über die Ziel-Bucket-Richtlinie aktivieren und Zugriff für die Zugriffsprotokollbereitstellung gewähren, müssen Sie die Richtlinie aktualisieren, um s3:PutObject-Zugriff für den Protokollierungsservice-Prinzipal zuzulassen. Wenn Sie die Serverzugriffsprotokollierung über die Amazon-S3-Konsole aktivieren, aktualisiert die Konsole die Ziel-Bucket-Richtlinie automatisch, um dem Protokollierungsservice-Prinzipal diese Berechtigungen zu gewähren. Weitere Informationen zum Erteilen von Berechtigungen für die Zustellung von Serverzugriffsprotokollen finden Sie unter Berechtigungen für Protokollbereitstellung.

Anmerkung

Bei Virtual-Private-Cloud (VPC)-Endpunktanforderungen werden dem Anforderer oder Bucket-Besitzer keine Serverzugriffsprotokolle bereitgestellt, wenn die VPC-Endpunktrichtlinie solche Anforderungen nicht zulässt.

Vom Bucket-Eigentümer erzwungene Einstellung für S3 Object Ownership

Wenn der Ziel-Bucket die Einstellung „Von Bucket-Besitzer erzwungen“ für Object Ownership verwendet, sind ACLs deaktiviert und wirken sich nicht mehr auf Berechtigungen aus. Sie müssen die Bucket-Richtlinie aktualisieren, damit der Ziel-Bucket Zugriff auf den Protokollierungsservice-Prinzipal gewähren kann. Informationen zu Object Ownership finden Sie unter Gewähren von Zugriff auf die S3-Protokollbereitstellungsgruppe für die Protokollierung des Serverzugriffs.

Best-Effort-Serverprotokollbereitstellung

Serverzugriffsprotokoll-Datensätze werden auf Best-Effort-Grundlage 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. Es ist möglich, dass Sie sogar ein Duplikat eines Protokolldatensatzes sehen. Der Zweck der Serverprotokolle besteht darin, Ihnen einen Überblick über die Art des Datenverkehrs zu und von Ihrem Bucket zu vermitteln. Auch wenn Protokolldatensätze selten verloren gehen oder dupliziert werden, sollten Sie wissen, dass die Serverprotokollierung nicht der vollständigen Erfassung aller Anforderungen dient.

Aufgrund der Best-Effort-Grundlage der Serverprotokollierung enthalten Ihre Nutzungsberichte möglicherweise eine oder mehrere Zugriffsanforderungen, die nicht in einem bereitgestellten Serverprotokoll angezeigt werden. Sie finden diese Nutzungsberichte unter Kosten- und Nutzungsberichte in der AWS Billing and Cost Management -Konsole.

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 die Protokollierung für einen Bucket aktivieren, werden in der folgenden Stunde möglicherweise einige Anforderungen protokolliert und andere nicht. Angenommen, Sie ändern den Ziel-Bucket für die Protokollierung von Bucket A in Bucket B. In der nächsten Stunde werden möglicherweise einige Protokolle in Bucket A bereitgestellt, während andere Protokolle im neuen Ziel-Bucket B bereitgestellt werden. In jedem Fall werden die neuen Einstellungen letztendlich ohne weiteres Eingreifen Ihrerseits wirksam.

Weitere Informationen zu Protokollierungs- und Protokolldateien finden Sie in den folgenden Abschnitten: