

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
<a name="ServerLogs"></a>

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?
<a name="server-access-logging-overview"></a>

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](enable-server-access-logging.md).

1. **Geben Sie den Namen des Ziel-Buckets an** (auch als *Target-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. 

1. **(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](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix) 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](deleting-log-files-lifecycle.md).

1. **(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 vom Bucket-Besitzer erzwungene Einstellung für S3 Object Ownership verwendet, um Zugriffskontrolllisten (ACLs) zu deaktivieren, können Sie keine Berechtigungen für Zielzuschüsse (auch als *Zielzuschüsse* bezeichnet) gewähren, die ACLs Sie können jedoch Ihre Bucket-Richtlinie für den Ziel-Bucket aktualisieren, um anderen Benutzern Zugriff zu gewähren. Weitere Informationen erhalten Sie unter [Identitäts- und Zugriffsverwaltung für Amazon S3](security-iam.md) und [Berechtigungen für Protokollbereitstellung](enable-server-access-logging.md#grant-log-delivery-permissions-general). 

1. **(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): 
   + **Non-date-based Partitionierung** — Dies ist das ursprüngliche Schlüsselformat für Log-Objekte. 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/amzn-s3-demo-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) oder Amazon S3 S3-REST-API konfigurieren AWS SDKs, verwenden Sie diese Option, `TargetObjectKeyFormat` um das Schlüsselformat für das Protokollobjekt anzugeben. 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
<a name="server-log-keyname-format"></a>

Amazon S3 verwendet die folgenden Objektschlüsselformate für die Protokollobjekte, die in den Ziel-Bucket hochgeladen werden:
+ **Non-date-based Partitionierung** — Dies ist das ursprüngliche Schlüsselformat für Protokollobjekte. 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?
<a name="how-logs-delivered"></a>

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](enable-server-access-logging.md#grant-log-delivery-permissions-general). 

**Anmerkung**  
S3 unterstützt nicht die Übermittlung von CloudTrail Protokollen oder Serverzugriffsprotokollen an den Anforderer oder den Bucket-Besitzer für VPC-Endpunktanfragen, wenn die VPC-Endpunktrichtlinie sie ablehnt, oder für Anfragen, die fehlschlagen, bevor die VPC-Richtlinie ausgewertet wurde.

**Vom Bucket-Eigentümer erzwungene Einstellung für S3 Object Ownership**  
Wenn der Ziel-Bucket die erzwungene Einstellung für Object Ownership verwendet, ACLs sind sie deaktiviert und wirken sich nicht mehr auf die 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](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs).

## Best-Effort-Serverprotokollbereitstellung
<a name="LogDeliveryBestEffort"></a>

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 Fakturierung und Kostenmanagement -Konsole.

## Statusänderungen in der Bucket-Protokollierung werden mit der Zeit wirksam
<a name="BucketLoggingStatusChanges"></a>

Ä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:

**Topics**
+ [Wie aktiviere ich die Protokollzustellung?](#server-access-logging-overview)
+ [Protokollobjekt-Schlüsselformat](#server-log-keyname-format)
+ [Wie werden Protokolle ausgeliefert?](#how-logs-delivered)
+ [Best-Effort-Serverprotokollbereitstellung](#LogDeliveryBestEffort)
+ [Statusänderungen in der Bucket-Protokollierung werden mit der Zeit wirksam](#BucketLoggingStatusChanges)
+ [Aktivieren Sie die Amazon-S3-Server-Zugriffsprotokollierung](enable-server-access-logging.md)
+ [Amazon-S3-Server-Zugriffsprotokollformat](LogFormat.md)
+ [Löschen von Amazon-S3-Protokolldateien](deleting-log-files-lifecycle.md)
+ [Verwenden von Amazon-S3-Serverzugriffsprotokollen zur Identifizierung von Anforderungen](using-s3-access-logs-to-identify-requests.md)
+ [Behebung von Fehlern bei der Server-Zugriffsprotokollierung](troubleshooting-server-access-logging.md)

# Aktivieren Sie die Amazon-S3-Server-Zugriffsprotokollierung
<a name="enable-server-access-logging"></a>

Die Server-Zugriffsprotokollierung bietet detaillierte Aufzeichnungen über die Anfragen, die an einen Amazon-S3-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.

Standardmäßig erfasst Amazon S3 keine Server-Zugriffsprotokolle. Wenn Sie die Protokollierung aktivieren, stellt Amazon S3 Zugriffsprotokolle für einen Quell-Bucket in einem von Ihnen ausgewählten Ziel-Bucket (*Ziel-Bucket*) bereit. Der Ziel-Bucket muss sich im selben AWS-Region und AWS-Konto wie der Quell-Bucket befinden. 

Ein Zugriffsprotokollsatz enthält Details über die Anforderungen, die an einen Bucket gestellt werden. Dabei kann es sich um den Anforderungstyp, die in der Anfrage angegebenen Ressourcen sowie Uhrzeit und Datum der Anfrageverarbeitung handeln. Weitere Informationen zu den Grundlagen der Protokollierung finden Sie unter [Protokollieren von Anfragen mit Server-Zugriffsprotokollierung](ServerLogs.md). 

**Wichtig**  
Für die Aktivierung der Server-Zugriffsprotokollierung 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 allerdings die normalen Gebühren an. (Sie können die Protokolldateien jederzeit löschen.) Wir berechnen keine Datenübertragungskosten für die Bereitstellung von Protokolldateien. Für den Zugriff auf die Protokolldateien fallen jedoch die regulären Kosten für Datenübertragungen an.
Für Ihren Ziel-Bucket sollte keine Serverzugriffsprotokollierung 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. Die Zustellung von Protokollen an den Quell-Bucket führt jedoch zu einer unendlichen Schleife von Protokollen und wird nicht empfohlen. Zur einfacheren Protokollverwaltung empfehlen wir, Zugriffsprotokolle in einem anderen Bucket zu speichern. Weitere Informationen finden Sie unter [Wie aktiviere ich die Protokollzustellung?](ServerLogs.md#server-access-logging-overview).
S3-Buckets, für die S3 Object Lock aktiviert ist, können nicht als Ziel-Buckets für Serverzugriffsprotokolle verwendet werden. Ihr Ziel-Bucket darf nicht für eine Standardaufbewahrungsdauer konfiguriert sein.
Für den Ziel-Bucket darf die Option „Zahlung durch den Anforderer“ nicht aktiviert sein.

Sie können die Serverzugriffsprotokollierung mithilfe der Amazon S3 S3-Konsole, der Amazon S3 S3-API, der AWS Command Line Interface (AWS CLI) oder aktivieren oder deaktivieren AWS SDKs. 

## Berechtigungen für Protokollbereitstellung
<a name="grant-log-delivery-permissions-general"></a>

Amazon S3 verwendet ein spezielles Protokollbereitstellungskonto zum Schreiben der Server-Zugriffsprotokolle. Für diese Protokolle gelten die normalen Zugriffskontrollbeschränkungen. Zur Bereitstellung von Zugriffsprotokollen müssen Sie dem Protokollierungsservice-Prinzipal (`logging.s3.amazonaws.com`) Zugriff auf den Ziel-Bucket gewähren.

Um Amazon S3 Berechtigungen für die Protokollzustellung zu gewähren, können Sie entweder eine Bucket-Richtlinie oder Bucket-Zugriffskontrolllisten (ACLs) verwenden, abhängig von den Einstellungen für den Besitz von S3-Objekten in Ihrem Ziel-Bucket. Wir empfehlen jedoch, stattdessen eine Bucket-Richtlinie zu verwenden ACLs. 

**Vom Bucket-Eigentümer erzwungene Einstellung für S3 Object Ownership**  
Wenn der Ziel-Bucket die erzwungene Einstellung für Object Ownership verwendet, ACLs sind sie deaktiviert und wirken sich nicht mehr auf die Berechtigungen aus. In diesem Fall müssen Sie die Bucket-Richtlinie für den Ziel-Bucket aktualisieren, um Zugriff auf den Protokollierungsservice-Prinzipal zu gewähren. Sie können Ihre Bucket-ACL nicht aktualisieren, um Zugriff auf die S3-Protokollbereitstellungsgruppe zu gewähren. Sie können auch keine Zielgewährungen (*Zielgewährungen*) in Ihre [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)-Konfiguration einfügen. 

Informationen zur Migration eines vorhandenen Buckets ACLs für die Zugriffs-Log-Übermittlung zu einer Bucket-Richtlinie finden Sie unter. [Gewähren von Zugriff auf die S3-Protokollbereitstellungsgruppe für die Protokollierung des Serverzugriffs](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs) Informationen zu Object Ownership finden Sie unter [Kontrolle des Besitzes von Objekten und Deaktivierung ACLs für Ihren Bucket](about-object-ownership.md). Wenn Sie neue Buckets erstellen, ACLs sind diese standardmäßig deaktiviert.

**Gewähren von Zugriff über eine Bucket-Richtlinie**  
Um über die Bucket-Richtlinie Zugriff auf den Ziel-Bucket zu gewähren, aktualisieren Sie die Bucket-Richtlinie so, dass sie die `s3:PutObject`-Berechtigung für den Protokollierungsservice-Prinzipal zulässt. Wenn Sie die Serverzugriffsprotokollierung über die Amazon-S3-Konsole aktivieren, aktualisiert die Konsole die Bucket-Richtlinie für den Ziel-Bucket automatisch, um dem Protokollierungsservice-Prinzipal diese Berechtigung zu gewähren. Wenn Sie die Serverzugriffsprotokollierung programmgesteuert aktivieren, müssen Sie die Bucket-Richtlinie für den Ziel-Bucket manuell aktualisieren, um Zugriff auf den Protokollierungsservice-Prinzipal zu gewähren. 

Ein Beispiel für eine Bucket-Richtlinie, die Zugriff auf den Protokollierungsservice-Prinzipal gewährt, finden Sie unter [Erteilen von Berechtigungen für den Prinzipal des Protokollierungsservices mithilfe einer Bucket-Richtlinie](#grant-log-delivery-permissions-bucket-policy).

**Zugriff mithilfe eines Buckets gewähren ACLs**  
Sie können auch Bucket verwenden, ACLs um Zugriff auf die Zugriffs-Log-Zustellung zu gewähren. Sie fügen der Bucket-ACL einen Erteilungseintrag hinzu, der `WRITE`-und `READ_ACP`-Berechtigungen für die S3-Protokollbereitstellungs-Gruppe gewährt. Es wird jedoch nicht empfohlen, mithilfe von Bucket ACLs Zugriff auf die S3-Protokollbereitstellungsgruppe zu gewähren. Weitere Informationen finden Sie unter [Kontrolle des Besitzes von Objekten und Deaktivierung ACLs für Ihren Bucket](about-object-ownership.md). Hinweise zur Migration eines vorhandenen Buckets ACLs für die Zugriffs-Log-Zustellung zu einer Bucket-Richtlinie finden Sie unter[Gewähren von Zugriff auf die S3-Protokollbereitstellungsgruppe für die Protokollierung des Serverzugriffs](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs). Ein Beispiel für eine ACL, die Zugriff auf den Protokollierungsservice-Prinzipal gewährt, finden Sie unter [Erteilen von Berechtigungen für die Protokollbereitstellungsgruppe mithilfe einer Bucket-ACL](#grant-log-delivery-permissions-acl).

### Erteilen von Berechtigungen für den Prinzipal des Protokollierungsservices mithilfe einer Bucket-Richtlinie
<a name="grant-log-delivery-permissions-bucket-policy"></a>

Diese Bucket-Beispielrichtlinie gewährt dem Protokollierungsservice-Prinzipal (`logging.s3.amazonaws.com`) die `s3:PutObject`-Berechtigung. Wenn Sie diese Bucket-Richtlinie verwenden möchten, ersetzen Sie `user input placeholders` durch Ihre eigenen Informationen. In der folgenden Richtlinie `amzn-s3-demo-destination-bucket` handelt es sich um den Ziel-Bucket, in den Serverzugriffsprotokolle übermittelt werden, und `amzn-s3-demo-source-bucket` um den Quell-Bucket. `EXAMPLE-LOGGING-PREFIX`ist das optionale Zielpräfix (auch als *Zielpräfix* bezeichnet), das Sie für Ihre Protokollobjekte verwenden möchten. `SOURCE-ACCOUNT-ID`ist der AWS-Konto , dem der Quell-Bucket gehört. 

**Anmerkung**  
Wenn Ihre Bucket-Richtlinie `Deny`-Anweisungen enthält, stellen Sie sicher, dass diese Anweisungen Amazon S3 nicht daran hindern, Zugriffsprotokolle bereitzustellen.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3ServerAccessLogsPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "logging.s3.amazonaws.com"
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/EXAMPLE-LOGGING-PREFIX*",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "SOURCE-ACCOUNT-ID"
                }
            }
        }
    ]
}
```

------

### Erteilen von Berechtigungen für die Protokollbereitstellungsgruppe mithilfe einer Bucket-ACL
<a name="grant-log-delivery-permissions-acl"></a>

**Anmerkung**  
Aus Sicherheitsgründen deaktiviert Amazon S3 die Zugriffskontrolllisten (ACLs) standardmäßig in allen neuen Buckets. Weitere Informationen zu ACL-Berechtigungen in der Amazon-S3-Konsole finden Sie unter [Konfiguration ACLs](managing-acls.md). 

Auch wenn wir diesen Ansatz nicht empfehlen, können Sie der Protokollbereitstellungsgruppe über eine Bucket-ACL Berechtigungen gewähren. Wenn der Ziel-Bucket jedoch die vom Bucket-Besitzer erzwungene Einstellung für Object Ownership verwendet, können Sie Bucket oder Objekt nicht festlegen. ACLs Sie können auch keine Zielgewährungen (*Zielgewährungen*) in Ihre [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)-Konfiguration einfügen. Stattdessen müssen Sie eine Bucket-Richtlinie verwenden, um dem Prinzipal des Protokollierungsservices (`logging.s3.amazonaws.com`) Zugriff zu gewähren. Weitere Informationen finden Sie unter [Berechtigungen für Protokollbereitstellung](#grant-log-delivery-permissions-general).

In der Bucket-ACL wird die Protokollbereitstellungsgruppe durch die folgende URL dargestellt:

```
1. http://acs.amazonaws.com/groups/s3/LogDelivery
```

Um `WRITE`- und `READ_ACP`- (ACL-Read)-Berechtigungen zu gewähren, fügen Sie der Ziel-Bucket-ACL die folgenden Gewährungen hinzu:

```
 1. <Grant>
 2.     <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:type="Group">
 3.         <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> 
 4.     </Grantee>
 5.     <Permission>WRITE</Permission>
 6. </Grant>
 7. <Grant>
 8.     <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:type="Group">
 9.         <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> 
10.     </Grantee>
11.     <Permission>READ_ACP</Permission>
12. </Grant>
```

Beispiele zum Hinzufügen von programmgesteuerten ACL-Berechtigungen finden Sie unter [Konfiguration ACLs](managing-acls.md).

**Wichtig**  
Wenn Sie die Amazon S3 S3-Serverzugriffsprotokollierung mithilfe AWS CloudFormation eines Buckets aktivieren und Zugriff auf die S3-Protokollzustellungsgruppe gewähren möchten, müssen Sie Ihrer CloudFormation Vorlage auch "`AccessControl": "LogDeliveryWrite"`hinzufügen. ACLs Dies ist wichtig, da Sie diese Berechtigungen nur gewähren können, indem Sie eine ACL für den Bucket erstellen, aber Sie können keine benutzerdefinierte ACL ACLs für Buckets in CloudFormation erstellen. Sie können nur in Dosen ACLs mit CloudFormation verwenden.

## Vorgehensweise zum Aktivieren der Server-Zugriffsprotokollierung
<a name="enable-server-logging"></a>

Gehen Sie wie folgt vor, um die Serverzugriffsprotokollierung mithilfe der Amazon S3 S3-Konsole AWS SDKs, der Amazon S3-REST-API und AWS CLI zu aktivieren.

### Verwenden der S3-Konsole
<a name="server-access-logging"></a>

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon S3 S3-Konsole unter [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Wählen Sie im linken Navigationsbereich **Allzweck-Buckets** aus.

1. Wählen Sie in der Bucket-Liste den Namen des Buckets aus, für den Sie die Protokollierung des Serverzugriffs aktivieren möchten.

1. Wählen Sie **Properties (Eigenschaften)**.

1. Wählen Sie im Abschnitt **Server access logging (Server-Zugriffsprotokollierung)** die Option **Edit (Bearbeiten)** aus.

1. Wählen Sie unter **Serverzugriffsprotokollierung)** die Option **Aktivieren** aus. 

1. Geben Sie unter **Ziel-Bucket** einen Bucket und ein optionales Präfix an. Wenn Sie ein Präfix angeben, sollten Sie nach dem Präfix einen Schrägstrich (`/`) einfügen, damit Sie Ihre Protokolle leichter finden können. 
**Anmerkung**  
Wenn Sie ein Präfix mit einem Schrägstrich (`/`) angeben, können Sie die Protokollobjekte leichter 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 folgt:  

   ```
   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
   ```

1. Führen Sie unter **Protokollobjekt-Schlüsselformat** eine der folgenden Aktionen aus:
   + Um die non-date-based Partitionierung auszuwählen, wählen Sie **[DestinationPrefix] [YYYY] - [MM] - [DD] - [hh] - [mm] - [ss] - []**. UniqueString
   + Um die datumsbasierte Partitionierung auszuwählen, wählen Sie **[DestinationPrefixSourceAccountId] []/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY] - [MM] - [DD] - [hh] - [mm] - [ss] - [UniqueString]** und wählen Sie dann **S3 event time** oder **Log file delivery time**.

1. Wählen Sie **Änderungen speichern ** aus.

   Wenn Sie die Serverzugriffsprotokollierung für einen Bucket aktivieren, aktiviert die Konsole die Protokollierung für den Quell-Bucket und aktualisiert die Bucket-Richtlinie für den Ziel-Bucket, um dem Protokollierungsservice-Prinzipal (`logging.s3.amazonaws.com`) die `s3:PutObject`-Berechtigung zu gewähren. Weitere Informationen zu dieser Bucket-Richtlinie finden Sie unter [Erteilen von Berechtigungen für den Prinzipal des Protokollierungsservices mithilfe einer Bucket-Richtlinie](#grant-log-delivery-permissions-bucket-policy).

   Sie können die Protokolle im Ziel-Bucket anzeigen. Nachdem Sie die Server-Zugriffsprotokollierung aktiviert haben, kann es einige Stunden dauern, bis die Protokolle in den Ziel-Bucket geliefert werden. Weitere Informationen darüber, wie und wann Protokolle bereitgestellt werden, finden Sie unter [Wie werden Protokolle ausgeliefert?](ServerLogs.md#how-logs-delivered).

Weitere Informationen finden Sie unter [Anzeigen der Eigenschaften für einen S3-Allzweck-Bucket](view-bucket-properties.md).

### Verwenden der REST-API
<a name="enable-logging-rest"></a>

Zum Aktivieren der Protokollierung senden Sie eine [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)-Anforderung, um die Protokollierungskonfiguration zum Quell-Bucket hinzuzufügen. Die Anforderung gibt den Ziel-Bucket (*Ziel-Bucket*) und optional das Präfix an, das für alle Protokollobjektschlüssel verwendet werden soll. 

Das folgende Beispiel gibt `amzn-s3-demo-destination-bucket` als Ziel-Bucket und *`logs/`* als Präfix an. 

```
1. <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
2.   <LoggingEnabled>
3.     <TargetBucket>amzn-s3-demo-destination-bucket</TargetBucket>
4.     <TargetPrefix>logs/</TargetPrefix>
5.   </LoggingEnabled>
6. </BucketLoggingStatus>
```

Das folgende Beispiel gibt `amzn-s3-demo-destination-bucket` als Ziel-Bucket, *`logs/`* als Präfix und `EventTime` als Protokollobjekt-Schlüsselformat an. 

```
 1. <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
 2.   <LoggingEnabled>
 3.     <TargetBucket>amzn-s3-demo-destination-bucket</TargetBucket>
 4.     <TargetPrefix>logs/</TargetPrefix>
 5.     <TargetObjectKeyFormat>
 6.       <PartitionedPrefix>
 7.          <PartitionDateSource>EventTime</PartitionDateSource>
 8.       </PartitionedPrefix>
 9.   </TargetObjectKeyFormat>
10.   </LoggingEnabled>
11. </BucketLoggingStatus>
```

Die Protokollobjekte werden vom S3-Protokollübermittlungskonto geschrieben und besitzen dessen Eigentümer, und der Bucket-Eigentümer erhält vollständige Berechtigungen für die Protokollobjekte. Sie können optional Zielgewährungen verwenden (*Zielgewährungen*), um anderen Benutzern Berechtigungen zu gewähren, damit diese auf die Protokolle zugreifen können. Weitere Informationen finden Sie unter [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html). 

**Anmerkung**  
Wenn der Ziel-Bucket die Einstellung „Von Bucket-Besitzer erzwungen“ für Object Ownership verwendet, können Sie keine Zielgewährungen verwenden, um anderen Benutzern Berechtigungen zu gewähren. Um anderen Benutzern Berechtigungen zu gewähren, können Sie die Bucket-Richtlinie für den Ziel-Bucket aktualisieren. Weitere Informationen finden Sie unter [Berechtigungen für Protokollbereitstellung](#grant-log-delivery-permissions-general). 

Zum Abruf der Protokollierungskonfiguration für einen Bucket verwenden Sie die API-Operation [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlogging.html). 

Um die Protokollierungskonfiguration zu löschen, senden Sie eine `PutBucketLogging`-Anforderung mit einem leeren `BucketLoggingStatus`: 

```
1. <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
2. </BucketLoggingStatus>
```

Um die Protokollierung in einem Bucket zu aktivieren, können Sie entweder die Amazon S3 S3-API oder die AWS SDK-Wrapper-Bibliotheken verwenden.

### Mit dem AWS SDKs
<a name="enable-logging-sdk"></a>

In den folgenden Beispielen wird die Protokollierung für einen Bucket aktiviert. Sie müssen zwei Buckets erstellen, einen Quell-Bucket und einen Ziel-Bucket. In den Beispielen wird zuerst die Bucket-ACL für den Ziel-Bucket aktualisiert. Anschließend werden der Protokollbereitstellungsgruppe die notwendigen Berechtigungen für das Schreiben von Protokollen zum Ziel-Bucket gewährt, bevor die Protokollierung für den Quell-Bucket aktiviert wird. 

Diese Beispiele funktionieren nicht für Ziel-Buckets, die die Einstellung „Von Bucket-Besitzer erzwungen“ für Object Ownership verwenden.

Wenn der Ziel-Bucket (Ziel-Bucket) die vom Bucket-Besitzer erzwungene Einstellung für Objekteigentum verwendet, können Sie weder Bucket noch Objekt ACLs festlegen. Sie können auch keine Zielzuschüsse (Zielzuschüsse) in Ihre [PutBucketLogging](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)Konfiguration aufnehmen. Sie müssen eine Bucket-Richtlinie verwenden, um dem Protokollierungsserviceprinzipal (`logging.s3.amazonaws.com`) Zugriff zu gewähren. Weitere Informationen finden Sie unter [Berechtigungen für Protokollbereitstellung](#grant-log-delivery-permissions-general).

------
#### [ .NET ]

**SDK für .NET**  
 Es gibt noch mehr dazu GitHub. Hier finden Sie das vollständige Beispiel und erfahren, wie Sie das [AWS -Code-Beispiel-](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/S3#code-examples) einrichten und ausführen. 

```
    using System;
    using System.IO;
    using System.Threading.Tasks;
    using Amazon.S3;
    using Amazon.S3.Model;
    using Microsoft.Extensions.Configuration;

    /// <summary>
    /// This example shows how to enable logging on an Amazon Simple Storage
    /// Service (Amazon S3) bucket. You need to have two Amazon S3 buckets for
    /// this example. The first is the bucket for which you wish to enable
    /// logging, and the second is the location where you want to store the
    /// logs.
    /// </summary>
    public class ServerAccessLogging
    {
        private static IConfiguration _configuration = null!;

        public static async Task Main()
        {
            LoadConfig();

            string bucketName = _configuration["BucketName"];
            string logBucketName = _configuration["LogBucketName"];
            string logObjectKeyPrefix = _configuration["LogObjectKeyPrefix"];
            string accountId = _configuration["AccountId"];

            // If the AWS Region defined for your default user is different
            // from the Region where your Amazon S3 bucket is located,
            // pass the Region name to the Amazon S3 client object's constructor.
            // For example: RegionEndpoint.USWest2 or RegionEndpoint.USEast2.
            IAmazonS3 client = new AmazonS3Client();

            try
            {
                // Update bucket policy for target bucket to allow delivery of logs to it.
                await SetBucketPolicyToAllowLogDelivery(
                    client,
                    bucketName,
                    logBucketName,
                    logObjectKeyPrefix,
                    accountId);

                // Enable logging on the source bucket.
                await EnableLoggingAsync(
                    client,
                    bucketName,
                    logBucketName,
                    logObjectKeyPrefix);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine($"Error: {e.Message}");
            }
        }

        /// <summary>
        /// This method grants appropriate permissions for logging to the
        /// Amazon S3 bucket where the logs will be stored.
        /// </summary>
        /// <param name="client">The initialized Amazon S3 client which will be used
        /// to apply the bucket policy.</param>
        /// <param name="sourceBucketName">The name of the source bucket.</param>
        /// <param name="logBucketName">The name of the bucket where logging
        /// information will be stored.</param>
        /// <param name="logPrefix">The logging prefix where the logs should be delivered.</param>
        /// <param name="accountId">The account id of the account where the source bucket exists.</param>
        /// <returns>Async task.</returns>
        public static async Task SetBucketPolicyToAllowLogDelivery(
            IAmazonS3 client,
            string sourceBucketName,
            string logBucketName,
            string logPrefix,
            string accountId)
        {
            var resourceArn = @"""arn:aws:s3:::" + logBucketName + "/" + logPrefix + @"*""";

            var newPolicy = @"{
                                ""Statement"":[{
                                ""Sid"": ""S3ServerAccessLogsPolicy"",
                                ""Effect"": ""Allow"",
                                ""Principal"": { ""Service"": ""logging.s3.amazonaws.com"" },
                                ""Action"": [""s3:PutObject""],
                                ""Resource"": [" + resourceArn + @"],
                                ""Condition"": {
                                ""ArnLike"": { ""aws:SourceArn"": ""arn:aws:s3:::" + sourceBucketName + @""" },
                                ""StringEquals"": { ""aws:SourceAccount"": """ + accountId + @""" }
                                        }
                                    }]
                                }";
            Console.WriteLine($"The policy to apply to bucket {logBucketName} to enable logging:");
            Console.WriteLine(newPolicy);

            PutBucketPolicyRequest putRequest = new PutBucketPolicyRequest
            {
                BucketName = logBucketName,
                Policy = newPolicy,
            };
            await client.PutBucketPolicyAsync(putRequest);
            Console.WriteLine("Policy applied.");
        }

        /// <summary>
        /// This method enables logging for an Amazon S3 bucket. Logs will be stored
        /// in the bucket you selected for logging. Selected prefix
        /// will be prepended to each log object.
        /// </summary>
        /// <param name="client">The initialized Amazon S3 client which will be used
        /// to configure and apply logging to the selected Amazon S3 bucket.</param>
        /// <param name="bucketName">The name of the Amazon S3 bucket for which you
        /// wish to enable logging.</param>
        /// <param name="logBucketName">The name of the Amazon S3 bucket where logging
        /// information will be stored.</param>
        /// <param name="logObjectKeyPrefix">The prefix to prepend to each
        /// object key.</param>
        /// <returns>Async task.</returns>
        public static async Task EnableLoggingAsync(
            IAmazonS3 client,
            string bucketName,
            string logBucketName,
            string logObjectKeyPrefix)
        {
            Console.WriteLine($"Enabling logging for bucket {bucketName}.");
            var loggingConfig = new S3BucketLoggingConfig
            {
                TargetBucketName = logBucketName,
                TargetPrefix = logObjectKeyPrefix,
            };

            var putBucketLoggingRequest = new PutBucketLoggingRequest
            {
                BucketName = bucketName,
                LoggingConfig = loggingConfig,
            };
            await client.PutBucketLoggingAsync(putBucketLoggingRequest);
            Console.WriteLine($"Logging enabled.");
        }

        /// <summary>
        /// Loads configuration from settings files.
        /// </summary>
        public static void LoadConfig()
        {
            _configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("settings.json") // Load settings from .json file.
                .AddJsonFile("settings.local.json", true) // Optionally, load local settings.
                .Build();
        }
    }
```
+  Einzelheiten zur API finden Sie [PutBucketLogging](https://docs.aws.amazon.com/goto/DotNetSDKV3/s3-2006-03-01/PutBucketLogging)in der *AWS SDK für .NET API-Referenz*. 

------
#### [ Java ]

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.BucketLoggingStatus;
import software.amazon.awssdk.services.s3.model.LoggingEnabled;
import software.amazon.awssdk.services.s3.model.PartitionedPrefix;
import software.amazon.awssdk.services.s3.model.PutBucketLoggingRequest;
import software.amazon.awssdk.services.s3.model.TargetObjectKeyFormat;

// Class to set a bucket policy on a target S3 bucket and enable server access logging on a source S3 bucket.
public class ServerAccessLogging {
    private static S3Client s3Client;

    public static void main(String[] args) {
        String sourceBucketName = "SOURCE-BUCKET";
        String targetBucketName = "TARGET-BUCKET";
        String sourceAccountId = "123456789012";
        String targetPrefix = "logs/";

        // Create S3 Client.
        s3Client = S3Client.builder().
                region(Region.US_EAST_2)
                .build();

        // Set a bucket policy on the target S3 bucket to enable server access logging by granting the
        // logging.s3.amazonaws.com principal permission to use the PutObject operation.
        ServerAccessLogging serverAccessLogging = new ServerAccessLogging();
        serverAccessLogging.setTargetBucketPolicy(sourceAccountId, sourceBucketName, targetBucketName);

        // Enable server access logging on the source S3 bucket.
        serverAccessLogging.enableServerAccessLogging(sourceBucketName, targetBucketName,
                targetPrefix);

    }

    // Function to set a bucket policy on the target S3 bucket to enable server access logging by granting the
    // logging.s3.amazonaws.com principal permission to use the PutObject operation.
    public void setTargetBucketPolicy(String sourceAccountId, String sourceBucketName, String targetBucketName) {
        String policy = "{\n" +
                "    \"Version\": \"2012-10-17\",\n" +
                "    \"Statement\": [\n" +
                "        {\n" +
                "            \"Sid\": \"S3ServerAccessLogsPolicy\",\n" +
                "            \"Effect\": \"Allow\",\n" +
                "            \"Principal\": {\"Service\": \"logging.s3.amazonaws.com\"},\n" +
                "            \"Action\": [\n" +
                "                \"s3:PutObject\"\n" +
                "            ],\n" +
                "            \"Resource\": \"arn:aws:s3:::" + targetBucketName + "/*\",\n" +
                "            \"Condition\": {\n" +
                "                \"ArnLike\": {\n" +
                "                    \"aws:SourceArn\": \"arn:aws:s3:::" + sourceBucketName + "\"\n" +
                "                },\n" +
                "                \"StringEquals\": {\n" +
                "                    \"aws:SourceAccount\": \"" + sourceAccountId + "\"\n" +
                "                }\n" +
                "            }\n" +
                "        }\n" +
                "    ]\n" +
                "}";
        s3Client.putBucketPolicy(b -> b.bucket(targetBucketName).policy(policy));
    }

    // Function to enable server access logging on the source S3 bucket.
    public void enableServerAccessLogging(String sourceBucketName, String targetBucketName,
            String targetPrefix) {
        TargetObjectKeyFormat targetObjectKeyFormat = TargetObjectKeyFormat.builder()
                .partitionedPrefix(PartitionedPrefix.builder().partitionDateSource("EventTime").build())
                .build();
        LoggingEnabled loggingEnabled = LoggingEnabled.builder()
                .targetBucket(targetBucketName)
                .targetPrefix(targetPrefix)
                .targetObjectKeyFormat(targetObjectKeyFormat)
                .build();
        BucketLoggingStatus bucketLoggingStatus = BucketLoggingStatus.builder()
                .loggingEnabled(loggingEnabled)
                .build();
        s3Client.putBucketLogging(PutBucketLoggingRequest.builder()
                .bucket(sourceBucketName)
                .bucketLoggingStatus(bucketLoggingStatus)
                .build());
    }

}
```

------

### Unter Verwendung des AWS CLI
<a name="enabling-s3-access-logs-for-requests"></a>

Wir empfehlen, dass Sie in jedem, in dem Sie S3-Buckets haben AWS-Region , einen eigenen Logging-Bucket erstellen. Anschließend können Sie Ihre Amazon-S3-Zugriffsprotokolle in diesem S3-Bucket bereitstellen lassen. Weitere Informationen und Beispiele finden Sie unter [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-logging.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-logging.html) in der *AWS CLI -Referenz*.

Wenn der Ziel-Bucket (Ziel-Bucket) die erzwungene Einstellung Bucket Ownership für Object Ownership verwendet, können Sie weder Bucket noch Objekt festlegen. ACLs Sie können auch keine Zielzuschüsse (Zielzuschüsse) in Ihre [PutBucketLogging](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)Konfiguration aufnehmen. Sie müssen eine Bucket-Richtlinie verwenden, um dem Protokollierungsserviceprinzipal (`logging.s3.amazonaws.com`) Zugriff zu gewähren. Weitere Informationen finden Sie unter [Berechtigungen für Protokollbereitstellung](#grant-log-delivery-permissions-general).

**Example – Aktivieren von Zugriffsprotokollen für fünf Buckets in zwei Regionen**  
In diesem Beispiel werden die folgenden fünf Buckets verwendet:   
+ `amzn-s3-demo-source-bucket-us-east-1`
+ `amzn-s3-demo-source-bucket1-us-east-1`
+ `amzn-s3-demo-source-bucket2-us-east-1`
+ `amzn-s3-demo-bucket1-us-west-2`
+ `amzn-s3-demo-bucket2-us-west-2`
**Anmerkung**  
Der letzte Schritt im folgenden Verfahren enthält Bash-Beispielskripts, mit denen Sie Ihre Protokollierungs-Buckets erstellen und die Serverzugriffsprotokollierung für diese Buckets aktivieren können. Um diese Skripts verwenden zu können, müssen Sie die Dateien `policy.json` und `logging.json` erstellen wie im folgenden Verfahren beschrieben.

1. Erstellen Sie in den Regionen USA West (Oregon) und USA Ost (Nord-Virginia) zwei Ziel-Buckets für die Protokollierung mit den folgenden Namen:
   + `amzn-s3-demo-destination-bucket-logs-us-east-1`
   + `amzn-s3-demo-destination-bucket1-logs-us-west-2`

1. Später im Verfahren aktivieren Sie die Serverzugriffsprotokollierung wie folgt:
   + `amzn-s3-demo-source-bucket-us-east-1` protokolliert zum S3-Bucket `amzn-s3-demo-destination-bucket-logs-us-east-1` mit dem Präfix `amzn-s3-demo-source-bucket-us-east-1`
   + `amzn-s3-demo-source-bucket1-us-east-1` protokolliert zum S3-Bucket `amzn-s3-demo-destination-bucket-logs-us-east-1` mit dem Präfix `amzn-s3-demo-source-bucket1-us-east-1`
   + `amzn-s3-demo-source-bucket2-us-east-1` protokolliert zum S3-Bucket `amzn-s3-demo-destination-bucket-logs-us-east-1` mit dem Präfix `amzn-s3-demo-source-bucket2-us-east-1`
   + `amzn-s3-demo-bucket1-us-west-2` protokolliert zum S3-Bucket `amzn-s3-demo-destination-bucket1-logs-us-west-2` mit dem Präfix `amzn-s3-demo-bucket1-us-west-2`
   + `amzn-s3-demo-bucket2-us-west-2` protokolliert zum S3-Bucket `amzn-s3-demo-destination-bucket1-logs-us-west-2` mit dem Präfix `amzn-s3-demo-bucket2-us-west-2`

1. Gewähren Sie für jeden Ziel-Bucket über eine Bucket-ACL *oder* eine Bucket-Richtlinie Berechtigungen für die Serverzugriffsprotokoll-Bereitstellung:
   + **Aktualisieren Sie die Bucket-Richtlinie** (Empfohlen) – Verwenden Sie den folgenden `put-bucket-policy`-Befehl, um dem Prinzipal des Protokollierungsservices Berechtigungen zu erteilen. Ersetzen Sie `amzn-s3-demo-destination-bucket-logs` durch den Namen Ihres Ziel-Buckets.

     ```
     1. aws s3api put-bucket-policy --bucket amzn-s3-demo-destination-bucket-logs --policy file://policy.json
     ```

     `Policy.json` ist ein JSON-Dokument im aktuellen Ordner, das die folgende Bucket-Richtlinie enthält. Wenn Sie diese Bucket-Richtlinie verwenden möchten, ersetzen Sie `user input placeholders` durch Ihre eigenen Informationen. In der folgenden Richtlinie ist *`amzn-s3-demo-destination-bucket-logs`* der Ziel-Bucket, in dem Serverzugriffsprotokolle bereitgestellt werden. `amzn-s3-demo-source-bucket` ist der Quell-Bucket. `SOURCE-ACCOUNT-ID` ist das AWS-Konto , das den Quell-Bucket besitzt.

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "S3ServerAccessLogsPolicy",
                 "Effect": "Allow",
                 "Principal": {
                     "Service": "logging.s3.amazonaws.com"
                 },
                 "Action": [
                     "s3:PutObject"
                 ],
                 "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket-logs/*",
                 "Condition": {
                     "ArnLike": {
                         "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
                     },
                     "StringEquals": {
                         "aws:SourceAccount": "SOURCE-ACCOUNT-ID"
                     }
                 }
             }
         ]
     }
     ```

------
   + **Aktualisieren der Bucket-ACL** – Zum Erteilen von Berechtigungen für die S3-Protokollbereitstellungsgruppe verwenden Sie den folgenden `put-bucket-acl`-Befehl. Ersetzen Sie *`amzn-s3-demo-destination-bucket-logs`* durch den Namen Ihres Ziel-Buckets.

     ```
     1. aws s3api put-bucket-acl --bucket amzn-s3-demo-destination-bucket-logs  --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery 
     ```

1. Erstellen Sie dann eine `logging.json`-Datei, die Ihre Protokollierungskonfiguration enthält (basierend auf einem der drei folgenden Beispiele). Nach der Erstellung der `logging.json`-Datei können Sie mit dem folgenden `put-bucket-logging`-Befehl die Protokollierungskonfiguration anwenden. Ersetzen Sie *`amzn-s3-demo-destination-bucket-logs`* durch den Namen Ihres Ziel-Buckets.

   ```
   1. aws s3api put-bucket-logging --bucket amzn-s3-demo-destination-bucket-logs --bucket-logging-status file://logging.json 
   ```
**Anmerkung**  
Anstatt mit diesem diesen `put-bucket-logging`-Befehl die Protokollierungskonfiguration auf jeden einzelnen Ziel-Bucket anzuwenden, können Sie eines der im nächsten Schritt bereitgestellten Bash-Skripts verwenden. Um diese Skripts verwenden zu können, müssen Sie die Dateien `policy.json` und `logging.json` erstellen wie in diesem Verfahren beschrieben.

   Die `logging.json`-Datei ist ein JSON-Dokument im aktuellen Ordner, das die Protokollierungskonfiguration enthält. Wenn ein Ziel-Bucket die Einstellung „Von Bucket-Besitzer erzwungen“ für Object Ownership verwendet, kann Ihre Protokollierungskonfiguration keine Zielgewährungen enthalten. Weitere Informationen finden Sie unter [Berechtigungen für Protokollbereitstellung](#grant-log-delivery-permissions-general).  
**Example – `logging.json` ohne Zielgewährungen**  

   Die folgende `logging.json`-Beispieldatei enthält keine Zielgewährungen. Daher können Sie diese Konfiguration auf einen Ziel-Bucket anwenden, der die Einstellung „Von Bucket-Besitzer erzwungen“ für Objekt Ownership verwendet.

   ```
     {
         "LoggingEnabled": {
             "TargetBucket": "amzn-s3-demo-destination-bucket-logs",
             "TargetPrefix": "amzn-s3-demo-destination-bucket/"
          }
      }
   ```  
**Example – `logging.json` mit Zielgewährungen**  

   Die folgende `logging.json`-Beispieldatei enthält Zielgewährungen.

   Wenn der Ziel-Bucket die Einstellung „Von Bucket-Besitzer erzwungen“ für Object Ownership verwendet, können Sie keine Zielgewährungen in Ihre [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)-Konfiguration einfügen. Weitere Informationen finden Sie unter [Berechtigungen für Protokollbereitstellung](#grant-log-delivery-permissions-general).

   ```
     {
         "LoggingEnabled": {
             "TargetBucket": "amzn-s3-demo-destination-bucket-logs",
             "TargetPrefix": "amzn-s3-demo-destination-bucket/",
             "TargetGrants": [
                  {
                     "Grantee": {
                         "Type": "CanonicalUser",
                         "ID": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"
                      },
                     "Permission": "FULL_CONTROL"
                  }
              ]
          }
      }
   ```

**Werte des Zuschussempfängers**  
Sie können die Person (Berechtigter), der Sie Zugriffsrechte zuweisen, auf folgende Weise angeben (mit Hilfe von Anfrageelementen):
   + Anhand des Personalausweises der Person:

     ```
     {
       "Grantee": {
         "Type": "CanonicalUser",
         "ID": "ID"
       }
     }
     ```
   + Durch URI:

     ```
     {
       "Grantee": {
         "Type": "Group",
         "URI": "http://acs.amazonaws.com/groups/global/AuthenticatedUsers"
       }
     }
     ```  
**Example – `logging.json` mit auf S3-Ereigniszeit festgelegtem Protokollobjekt-Schlüsselformat**  

   In der folgenden `logging.json`-Datei wird das Protokollobjekt-Schlüsselformat in S3-Ereigniszeit geändert. Weitere Informationen zum Einrichten des Protokollobjekt-Schlüsselformats finden Sie unter [Wie aktiviere ich die Protokollzustellung?](ServerLogs.md#server-access-logging-overview).

   ```
     { 
       "LoggingEnabled": {
           "TargetBucket": "amzn-s3-demo-destination-bucket-logs",
           "TargetPrefix": "amzn-s3-demo-destination-bucket/",
           "TargetObjectKeyFormat": { 
               "PartitionedPrefix": { 
                   "PartitionDateSource": "EventTime" 
               }
            }
       }
   }
   ```

1. Sie können eines der folgenden Bash-Skripts verwenden, um allen Buckets in Ihrem Konto Zugriffsprotokollierung hinzuzufügen. Ersetzen Sie *`amzn-s3-demo-destination-bucket-logs`* durch den Namen Ihres Ziel-Buckets (Ziel-Buckets) und `us-west-2` durch den Namen der Region, in der sich Ihre Buckets befinden.
**Anmerkung**  
Dieses Skript funktioniert nur, wenn sich alle Buckets in derselben Region befinden. Sind die Buckets auf mehrere Regionen verteilt, müssen Sie das Skript anpassen.   
**Example - Gewähren Sie Zugriff mit Bucket-Richtlinien und fügen Sie die Protokollierung für die Buckets in Ihrem Konto hinzu**  

   ```
     loggingBucket='amzn-s3-demo-destination-bucket-logs'
     region='us-west-2'
     
     
     # Create the logging bucket.
     aws s3 mb s3://$loggingBucket --region $region
     
     aws s3api put-bucket-policy --bucket $loggingBucket --policy file://policy.json
     
     # List the buckets in this account.
     buckets="$(aws s3 ls | awk '{print $3}')"
     
     # Put a bucket logging configuration on each bucket.
     for bucket in $buckets
         do 
           # This if statement excludes the logging bucket.
           if [ "$bucket" == "$loggingBucket" ] ; then
               continue;
           fi
           printf '{
             "LoggingEnabled": {
               "TargetBucket": "%s",
               "TargetPrefix": "%s/"
           }
         }' "$loggingBucket" "$bucket"  > logging.json
         aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json
         echo "$bucket done"
     done
     
     rm logging.json
     
     echo "Complete"
   ```  
**Example — Gewähren Sie Zugriff mit einem Bucket ACLs und fügen Sie die Protokollierung für die Buckets in Ihrem Konto hinzu**  

   ```
     loggingBucket='amzn-s3-demo-destination-bucket-logs'
     region='us-west-2'
     
     
     # Create the logging bucket.
     aws s3 mb s3://$loggingBucket --region $region
     
     aws s3api put-bucket-acl --bucket $loggingBucket --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery
     
     # List the buckets in this account.
     buckets="$(aws s3 ls | awk '{print $3}')"
     
     # Put a bucket logging configuration on each bucket.
     for bucket in $buckets
         do 
           # This if statement excludes the logging bucket.
           if [ "$bucket" == "$loggingBucket" ] ; then
               continue;
           fi
           printf '{
             "LoggingEnabled": {
               "TargetBucket": "%s",
               "TargetPrefix": "%s/"
           }
         }' "$loggingBucket" "$bucket"  > logging.json
         aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json
         echo "$bucket done"
     done
     
     rm logging.json
     
     echo "Complete"
   ```

## Überprüfen der Einrichtung Ihrer Serverzugriffsprotokolle
<a name="verify-access-logs"></a>

Führen Sie nach dem Aktivieren der Serverzugriffsprotokollierung die folgenden Schritte aus: 
+ Greifen Sie auf den Ziel-Bucket zu und überprüfen Sie, ob die Protokolldateien bereitgestellt werden. Nachdem die Zugriffsprotokolle eingerichtet wurden, fängt Amazon S3 sofort an, Anforderungen zu erfassen und zu protokollieren. Es kann jedoch einige Stunden dauern, bis die Protokolle an den Ziel-Bucket geliefert werden. Weitere Informationen erhalten Sie unter [Statusänderungen in der Bucket-Protokollierung werden mit der Zeit wirksam](ServerLogs.md#BucketLoggingStatusChanges) und [Best-Effort-Serverprotokollbereitstellung](ServerLogs.md#LogDeliveryBestEffort).

  Sie können die Protokollzustellung auch automatisch überprüfen, indem Sie Amazon S3 S3-Anforderungsmetriken verwenden und CloudWatch Amazon-Alarme für diese Metriken einrichten. Weitere Informationen finden Sie unter [Metriken mit Amazon überwachen CloudWatch](cloudwatch-monitoring.md).
+ Vergewissern Sie sich, dass Sie den Inhalt der Protokolldateien öffnen und lesen können.

Informationen zur Fehlerbehebung bei der Serverzugriffsprotokollierung finden Sie unter [Behebung von Fehlern bei der Server-Zugriffsprotokollierung](troubleshooting-server-access-logging.md).

# Amazon-S3-Server-Zugriffsprotokollformat
<a name="LogFormat"></a>

Die Server-Zugriffsprotokollierung bietet detaillierte Aufzeichnungen über die Anfragen, die an einen Amazon-S3-Bucket gestellt wurden. Sie können Serverzugriffsprotokolle für folgende Zwecke verwenden: 
+ Durchführung von Sicherheits- und Zugriffsprüfungen
+ Kennenlernen Ihres Kundenstamms
+ Nachvollziehen Ihrer Amazon-S3-Rechnung

Dieser Abschnitt beschreibt das Format und andere Details zu Amazon-S3-Serverzugriffprotokolldateien.

Die Server-Zugriffsprotokolldateien bestehen aus einer Reihe von durch Zeilenschaltungen voneinander getrennten Protokolldatensätzen. Jeder Protokolldatensatz stellt eine Anforderung dar und besteht aus durch Leerzeichen voneinander getrennter Felder.

Nachfolgend wird ein Beispielprotokoll mit sechs Protokolldatensätzen gezeigt.

**Anmerkung**  
Jedes Feld kann auf `-` gesetzt werden, um darauf hinzuweisen, dass die Daten unbekannt oder nicht verfügbar waren, oder dass das Feld für diese Anforderung nicht relevant war. 

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 3E57427F3EXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 7 - "-" "S3Console/0.4" - s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 arn:aws:s3:us-west-1:123456789012:accesspoint/example-AP Yes us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 891CE47D2EXAMPLE REST.GET.LOGGING_STATUS - "GET /amzn-s3-demo-bucket1?logging HTTP/1.1" 200 - 242 - 11 - "-" "S3Console/0.4" - 9vKBE6vMhrNiWHZmb2L0mXOcqPGzQOI5XLnCtZNPxev+Hf+7tpT6sxDwDty4LHBUOZJG96N1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be A1206F460EXAMPLE REST.GET.BUCKETPOLICY - "GET /amzn-s3-demo-bucket1?policy HTTP/1.1" 404 NoSuchBucketPolicy 297 - 38 - "-" "S3Console/0.4" - BNaBsXZQQDbssi6xMBdBU2sLt+Yf5kZDmeBUP35sFoKa3sLLeMC78iwEIWxs99CRUrbS4n11234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:00 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 7B4A0FABBEXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 33 - "-" "S3Console/0.4" - Ke1bUcazaN1jWuUlPJaxF64cQVpUEhoZKEG/hmy/gijN/I1DeWqDfFvnpybfEseEME/u7ME1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:57 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DD6CC733AEXAMPLE REST.PUT.OBJECT s3-dg.pdf "PUT /amzn-s3-demo-bucket1/s3-dg.pdf HTTP/1.1" 200 - - 4406583 41754 28 "-" "S3Console/0.4" - 10S62Zv81kBW7BB6SX4XJ48o6kpcl6LPwEoizZQQxJd5qDSCTLX0TgS37kYUBKQW3+bPdrg1234= SigV4 ECDHE-RSA-AES128-SHA AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes us-east-1
```

Es folgt ein Beispielprotokoll für den Vorgang **Prüfsumme berechnen**:

```
7cd47ef2be amzn-s3-demo-bucket [06/Feb/2019:00:00:38 +0000] - 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be e5042925-b524-4b3b-a869-f3881e78ff3a S3.COMPUTE.OBJECT.CHECKSUM example-object - - - - 1048576 - - - - - bPf7qjG4XwYdPgDQTl72GW/uotRhdPz2UryEyAFLDSRmKrakUkJCYLtAw6fdANcrsUYc1M/kIulXM1u5vZQT5g== - - - - - - - -
```

**Topics**
+ [Protokolldatensatzfelder](#log-record-fields)
+ [Zusätzliche Protokollierung für KopierVorgänge](#AdditionalLoggingforCopyOperations)
+ [Benutzerdefinierte Zugriffsprotokollinformationen](#LogFormatCustom)
+ [Aspekte zur Programmierung des erweiterbaren Serverzugriff-Protokollformats](#LogFormatExtensible)

## Protokolldatensatzfelder
<a name="log-record-fields"></a>

In der folgenden Liste werden die wichtigsten Protokolldatensatzfelder beschrieben.

**Bucket-Eigentümer**  
Die kanonische Benutzer-ID des Eigentümer des Quell-Buckets. Die kanonische Benutzer-ID ist eine andere Form der AWS-Konto ID. Weitere Informationen zur kanonischen Benutzer-ID finden Sie unter [AWS-Konto -Kennungen](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) in der *Allgemeine AWS-Referenz*. Informationen darüber, wie Sie die kanonische Benutzer-ID für Ihr Konto finden, erhalten Sie unter [Die kanonische Benutzer-ID für Ihr AWS-Konto](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId) finden.  
**Beispieleintrag**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```

**Bucket**  
Der Name des Buckets, für den die Anforderung verarbeitet wurde. Wenn das System eine fehlerhaft aufgebaute Anforderung erhält und den Bucket nicht bestimmen kann, erscheint die Anforderung nicht in einem Server-Zugriffsprotokoll.  
**Beispieleintrag**  

```
amzn-s3-demo-bucket1
```

**Zeit**  
Die Uhrzeit, zu der die Anforderung empfangen wurde. Diese Datums- und Uhrzeitangaben entsprechen der Zeitzone UTC (Coordinated Universal Time). Das Format unter Verwendung der `strftime()`-Terminologie, nämlich: `[%d/%b/%Y:%H:%M:%S %z]`  
**Beispieleintrag**  

```
[06/Feb/2019:00:00:38 +0000]
```

**Remote-IP**  
Die offensichtliche IP-Adresse des Anforderers. Auf dem Weg vorhandene Proxy-Server und Firewalls könnten die tatsächliche IP-Adresse des Computers verbergen, der die Anforderung gestellt hat.  
**Beispieleintrag**  

```
192.0.2.3
```

**Auftraggeber**  
Die kanonische Benutzer-ID des Auftraggebers, oder `-` für nicht authentifizierte Anforderungen. Wenn der Anforderer ein IAM-Benutzer war, gibt dieses Feld den IAM-Benutzernamen des Anforderers zusammen mit dem Namen zurück AWS-Konto , zu dem der IAM-Benutzer gehört. Diese ID ist dieselbe, die für den Zugriff zu Kontrollzwecken verwendet wird.  
**Beispieleintrag**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```
Wenn der Anforderer eine angenommene Rolle verwendet, gibt dieses Feld die angenommene IAM-Rolle zurück.  
**Beispieleintrag**  

```
arn:aws:sts::123456789012:assumed-role/roleName/test-role
```

**Anforderungs-ID**  
Eine von Amazon S3 generierte Zeichenfolge, die jede Anforderung eindeutig identifiziert. Bei Auftragsanforderungen zur **Berechnung der Prüfsumme** wird im Feld **Anforderungs-ID** die zugehörige Job-ID angezeigt. Weitere Informationen finden Sie unter [Berechnen von Prüfsummen](batch-ops-compute-checksums.md).  
**Beispieleintrag**  

```
3E57427F33A59F07
```

**Operation**  
Die hier aufgeführte Operation ist deklariert al `SOAP.operation`, `REST.HTTP_method.resource_type`, `WEBSITE.HTTP_method.resource_type` oder `BATCH.DELETE.OBJECT`, oder `S3.action.resource_type` für [S3-Lebenszyklus und Protokollieren](lifecycle-and-other-bucket-config.md#lifecycle-general-considerations-logging). Bei [https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-compute-checksums.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-compute-checksums.html)-Auftragsanforderungen wird der Vorgang als `S3.COMPUTE.OBJECT.CHECKSUM` aufgeführt.  
**Beispieleintrag**  

```
REST.PUT.OBJECT
S3.COMPUTE.OBJECT.CHECKSUM
```

**Key (Schlüssel)**  
Der Schlüsselteil (Objektname) der Anfrage.  
**Beispieleintrag**  

```
/photos/2019/08/puppy.jpg
```

**Request-URI**  
Der `Request-URI`-Teil der HTTP-Anforderungsmeldung. Dieses Feld kann Anführungszeichen ohne Escape-Zeichen aus der Benutzereingabe enthalten.  
**Beispieleintrag**  

```
"GET /amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-foo=bar HTTP/1.1"
```

**HTTP-Status**  
Der numerische HTTP-Statuscode der Antwort.  
**Beispieleintrag**  

```
200
```

**Fehlercode**  
Die Amazon [S3-Fehlerantworten](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html) oder `-`, wenn kein Fehler aufgetreten ist  
**Beispieleintrag**  

```
NoSuchBucket
```

**Gesendete Bytes**  
Die Anzahl der in der Antwort gesendeten Byte, ausgenommen HTTP-Protokoll-Overhead, oder `-`, falls null.  
**Beispieleintrag**  

```
2662992
```

**Objektgröße**  
Die Gesamtgröße des betreffenden Objekts.  
**Beispieleintrag**  

```
3462992
```

**Gesamtzeit**  
Die Anzahl der Millisekunden (ms), die die Anforderung aus Perspektive des Servers unterwegs war. Dieser Wert wird ab der Zeit gemessen, zu der Ihre Anforderung empfangen wurde, bis zu der Zeit, zu der das letzte Byte der Antwort gesendet wurde. Messungen aus der Perspektive des Clients dauern möglicherweise länger aufgrund der Netzwerklatenz.  
**Beispieleintrag**  

```
70
```

**Umschlagzeit**  
Die Anzahl der Millisekunden, die Amazon S3 gebraucht hat, Ihre Anfrage zu verarbeiten. Dieser Wert wird ab der Zeit gemessen, zu der das letzte Byte Ihrer Anforderung empfangen wurde, bis zu der Zeit, zu der das erste Byte der Antwort gesendet wurde.  
**Beispieleintrag**  

```
10
```

**Referer**  
Der Wert des HTTP-`Referer`-Headers, falls vorhanden. HTTP-Benutzeragenten (z. B. Browser) setzen diesen Header normalerweise auf die URL der verlinkenden oder einbettenden Seite, wenn eine Anforderung erfolgt. Dieses Feld kann Anführungszeichen ohne Escape-Zeichen aus der Benutzereingabe enthalten.  
**Beispieleintrag**  

```
"http://www.example.com/webservices"
```

**User-Agent**  
Der Wert des HTTP-`User-Agent`-Headers Dieses Feld kann Anführungszeichen ohne Escape-Zeichen aus der Benutzereingabe enthalten.  
**Beispieleintrag**  

```
"curl/7.15.1"
```

**Versions-ID**  
Die Versions-ID der Anforderung oder `-`, wenn die Operation keinen `versionId`-Parameter entgegennimmt.  
**Beispieleintrag**  

```
3HL4kqtJvjVBH40Nrjfkd
```

**Host-ID**  
Die erweiterte Anforderungs-ID für `x-amz-id-2` oder Amazon S3   
**Beispieleintrag**  

```
s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
```

**Signatur-Version**  
Die Signaturversion, `SigV2` oder `SigV4`, die für die Authentifizierung der Anforderung verwendet wurde, bzw. ein `-` für nicht authentifizierte Anforderungen.  
**Beispieleintrag**  

```
SigV2
```

**Cipher Suite**  
Die Transport Layer Security (TLS) Chiffre, die für eine HTTPS-Anfrage oder eine `-` für HTTP ausgehandelt wurde.  
**Beispieleintrag**  

```
ECDHE-RSA-AES128-GCM-SHA256
```

**Authentifizierungstyp**  
Die Art der verwendeten Anforderungsauthentifizierung: `AuthHeader` für Authentifizierungs-Header, `QueryString` für die Anforderungszeichenfolge (vorsignierte URL) oder ein `-` für nicht authentifizierte Anforderungen.  
**Beispieleintrag**  

```
AuthHeader
```

**Host Header**  
Der für die Verbindung mit Amazon S3 verwendete Endpunkt.  
**Beispieleintrag**  

```
s3.us-west-2.amazonaws.com
```
Einige frühere Regionen unterstützen Legacy-Endpunkte. Möglicherweise finden Sie diese Endpunkte in Ihren Serverzugriffsprotokollen oder AWS CloudTrail -protokollen. Weitere Informationen finden Sie unter [Legacy-Endpunkte](VirtualHosting.md#s3-legacy-endpoints). Eine vollständige Liste der Amazon-S3-Regionen und -Endpunkte finden Sie unter [Endpunkte und Kontingente von Amazon S3](https://docs.aws.amazon.com/general/latest/gr/s3.html) in der *Allgemeine Amazon Web Services-Referenz*.

**TLS-Version**  
Die vom Client ausgehandelte Transport Layer Security(TLS)-Version. Einer der folgenden Werte: `TLSv1.1`, `TLSv1.2`, `TLSv1.3` oder `-`, wenn TLS nicht verwendet wurde.  
**Beispieleintrag**  

```
TLSv1.2
```

**Zugriffspunkt-ARN**  
Der Amazon-Ressourcenname (ARN) des Zugriffspunkts der Anforderung. Wenn der Zugriffspunkt-ARN fehlerhaft ist oder nicht verwendet wird, enthält das Feld ein `-`. Weitere Hinweise zu Zugangspunkten finden Sie unter [Verwenden von Amazon-S3-Zugangspunkten für Allzweck-Buckets](using-access-points.md). Weitere Informationen zu ARNs finden Sie unter [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) im *AWS Referenzhandbuch*.  
**Beispieleintrag**  

```
arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
```

**aclRequired**  
Eine Zeichenfolge, die angibt, ob für die Anforderung eine Zugriffssteuerungsliste (ACL) für die Autorisierung erforderlich war. Wenn für die Anforderung eine ACL zur Autorisierung erforderlich war, lautet die Zeichenfolge `Yes`. Wenn keine erforderlich ACLs waren, lautet die Zeichenfolge`-`. Weitere Informationen zu finden ACLs Sie unter[Zugriffskontrolllisten (ACL) – Übersicht](acl-overview.md). Weitere Informationen zur Verwendung des `aclRequired` Felds zum Deaktivieren ACLs finden Sie unter[Kontrolle des Besitzes von Objekten und Deaktivierung ACLs für Ihren Bucket](about-object-ownership.md).   
**Beispieleintrag**  

```
Yes
```

**Quellregion**  
Die AWS Region, aus der die Anfrage stammt. In diesem Feld wird ein Bindestrich (`-`) angezeigt, wenn die Ursprungsregion nicht bestimmt werden kann (z. B. PrivateLink Verbindungen, Direct Connect-Verbindungen, Bring Your Own IP-Adressen (BYOIP) oder AWS Nicht-IP-Adressen) oder wenn das Protokoll durch Vorgänge generiert wird, die auf vom Kunden festgelegten Richtlinien oder Aktionen wie Lebenszyklus und Prüfsumme basieren.  
**Beispieleintrag**  

```
us-east-1
```

## Zusätzliche Protokollierung für KopierVorgänge
<a name="AdditionalLoggingforCopyOperations"></a>

Eine Kopieroperation umfasst ein `GET` und ein `PUT`. Aus diesem Grund zeichnen wir für eine Kopieroperation zwei Datensätze auf. Der vorherige Abschnitt beschreibt die Felder für den `PUT`-Teil der Operation. Die folgende Liste beschreibt die Felder in dem Datensatz, die sich auf den `GET`-Teil der Kopieroperation beziehen.

**Bucket-Eigentümer**  
Die kanonische Benutzer-ID des Buckets, der das kopierte Objekt speichert. Die kanonische Benutzer-ID ist eine andere Form der ID. AWS-Konto Weitere Informationen zur kanonischen Benutzer-ID finden Sie unter [AWS-Konto -Kennungen](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) in der *Allgemeine AWS-Referenz*. Informationen darüber, wie Sie die kanonische Benutzer-ID für Ihr Konto finden, erhalten Sie unter [Die kanonische Benutzer-ID für Ihr AWS-Konto](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId) finden.  
**Beispieleintrag**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```

**Bucket**  
Der Name des Buckets, der das kopierte Objekt speichert.  
**Beispieleintrag**  

```
amzn-s3-demo-bucket1
```

**Zeit**  
Die Uhrzeit, zu der die Anforderung empfangen wurde. Diese Datums- und Uhrzeitangaben entsprechen der Zeitzone UTC (Coordinated Universal Time). Das Format unter Verwendung der `strftime()`-Terminologie, nämlich: `[%d/%B/%Y:%H:%M:%S %z]`  
**Beispieleintrag**  

```
[06/Feb/2019:00:00:38 +0000]
```

**Remote-IP**  
Die offensichtliche IP-Adresse des Anforderers. Auf dem Weg vorhandene Proxy-Server und Firewalls könnten die tatsächliche IP-Adresse des Computers verbergen, der die Anforderung gestellt hat.  
**Beispieleintrag**  

```
192.0.2.3
```

**Auftraggeber**  
Die kanonische Benutzer-ID des Auftraggebers, oder `-` für nicht authentifizierte Anforderungen. Wenn der Anforderer ein IAM-Benutzer war, gibt dieses Feld den IAM-Benutzernamen des Anfragenden zusammen mit dem Namen zurück Root-Benutzer des AWS-Kontos , zu dem der IAM-Benutzer gehört. Diese ID ist dieselbe, die für den Zugriff zu Kontrollzwecken verwendet wird.  
**Beispieleintrag**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```
Wenn der Anforderer eine angenommene Rolle verwendet, gibt dieses Feld die angenommene IAM-Rolle zurück.  
**Beispieleintrag**  

```
arn:aws:sts::123456789012:assumed-role/roleName/test-role
```

**Anforderungs-ID**  
Eine von Amazon S3 generierte Zeichenfolge, die jede Anforderung eindeutig identifiziert. Bei Auftragsanforderungen zur **Berechnung der Prüfsumme** wird im Feld **Anforderungs-ID** die zugehörige Job-ID angezeigt. Weitere Informationen finden Sie unter [Berechnen von Prüfsummen](batch-ops-compute-checksums.md).  
**Beispieleintrag**  

```
3E57427F33A59F07
```

**Operation**  
Die hier aufgeführte Operation ist deklariert al `SOAP.operation`, `REST.HTTP_method.resource_type`, `WEBSITE.HTTP_method.resource_type` oder `BATCH.DELETE.OBJECT`.  
**Beispieleintrag**  

```
REST.COPY.OBJECT_GET
```

**Key (Schlüssel)**  
Der Schlüssel (Objektname) des kopierten Objekts oder `-`, wenn die Operation keinen Schlüsselparameter entgegennimmt.   
**Beispieleintrag**  

```
/photos/2019/08/puppy.jpg
```

**Request-URI**  
Der `Request-URI`-Teil der HTTP-Anforderungsmeldung. Dieses Feld kann Anführungszeichen ohne Escape-Zeichen aus der Benutzereingabe enthalten.  
**Beispieleintrag**  

```
"GET /amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-foo=bar"
```

**HTTP-Status**  
Der numerische HTTP-Statuscode des `GET`-Teils der Kopieroperation.  
**Beispieleintrag**  

```
200
```

**Fehlercode**  
Die Amazon-S3-[Fehlerantworten](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html) des `GET`-Teils der Kopieroperation oder `-`, wenn kein Fehler aufgetreten ist.  
**Beispieleintrag**  

```
NoSuchBucket
```

**Gesendete Bytes**  
Die Anzahl der in der Antwort gesendeten Byte, ausgenommen HTTP-Protokoll-Overhead, oder `-`, falls null.  
**Beispieleintrag**  

```
2662992
```

**Objektgröße**  
Die Gesamtgröße des betreffenden Objekts.  
**Beispieleintrag**  

```
3462992
```

**Gesamtzeit**  
Die Anzahl der Millisekunden (ms), die die Anforderung aus Perspektive des Servers unterwegs war. Dieser Wert wird ab der Zeit gemessen, zu der Ihre Anforderung empfangen wurde, bis zu der Zeit, zu der das letzte Byte der Antwort gesendet wurde. Messungen aus der Perspektive des Clients dauern möglicherweise länger aufgrund der Netzwerklatenz.  
**Beispieleintrag**  

```
70
```

**Umschlagzeit**  
Die Anzahl der Millisekunden, die Amazon S3 gebraucht hat, Ihre Anfrage zu verarbeiten. Dieser Wert wird ab der Zeit gemessen, zu der das letzte Byte Ihrer Anforderung empfangen wurde, bis zu der Zeit, zu der das erste Byte der Antwort gesendet wurde.  
**Beispieleintrag**  

```
10
```

**Referer**  
Der Wert des HTTP-`Referer`-Headers, falls vorhanden. HTTP-Benutzeragenten (z. B. Browser) setzen diesen Header normalerweise auf die URL der verlinkenden oder einbettenden Seite, wenn eine Anforderung erfolgt. Dieses Feld kann Anführungszeichen ohne Escape-Zeichen aus der Benutzereingabe enthalten.  
**Beispieleintrag**  

```
"http://www.example.com/webservices"
```

**User-Agent**  
Der Wert des HTTP-`User-Agent`-Headers Dieses Feld kann Anführungszeichen ohne Escape-Zeichen aus der Benutzereingabe enthalten.  
**Beispieleintrag**  

```
"curl/7.15.1"
```

**Versions-ID**  
Die Version-ID des kopierten Objekts oder `-`, wenn der `x-amz-copy-source`-Header keinen `versionId`-Parameter als Teil der Kopierquelle angegeben hat.  
**Beispieleintrag**  

```
3HL4kqtJvjVBH40Nrjfkd
```

**Host-ID**  
Die erweiterte Anforderungs-ID für `x-amz-id-2` oder Amazon S3  
**Beispieleintrag**  

```
s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
```

**Signatur-Version**  
Die Signaturversion, `SigV2` oder `SigV4`, die für die Authentifizierung der Anforderung verwendet wurde, bzw. ein `-` für nicht authentifizierte Anforderungen.  
**Beispieleintrag**  

```
SigV4
```

**Cipher Suite**  
Der Transport Layer Security (TLS) Cipher, der für eine HTTPS-Anfrage ausgehandelt wurde, oder ein `-` für HTTP.  
**Beispieleintrag**  

```
ECDHE-RSA-AES128-GCM-SHA256
```

**Authentifizierungstyp**  
Die Art der verwendeten Anforderungsauthentifizierung: `AuthHeader` für Authentifizierungs-Header, `QueryString` für Abfragezeichenfolgen (vorsigniert URLs) oder a `-` für nicht authentifizierte Anfragen.  
**Beispieleintrag**  

```
AuthHeader
```

**Host-Header**  
Der für die Verbindung mit Amazon S3 verwendete Endpunkt.  
**Beispieleintrag**  

```
s3.us-west-2.amazonaws.com
```
Einige frühere Regionen unterstützen Legacy-Endpunkte. Möglicherweise finden Sie diese Endpunkte in Ihren Serverzugriffsprotokollen oder -protokollen. AWS CloudTrail Weitere Informationen finden Sie unter [Legacy-Endpunkte](VirtualHosting.md#s3-legacy-endpoints). Eine vollständige Liste der Amazon-S3-Regionen und -Endpunkte finden Sie unter [Endpunkte und Kontingente von Amazon S3](https://docs.aws.amazon.com/general/latest/gr/s3.html) in der *Allgemeine Amazon Web Services-Referenz*.

**TLS-Version**  
Die vom Client ausgehandelte Transport Layer Security(TLS)-Version. Einer der folgenden Werte: `TLSv1.1`, `TLSv1.2`, `TLSv1.3` oder `-`, wenn TLS nicht verwendet wurde.  
**Beispieleintrag**  

```
TLSv1.2
```

**Zugriffspunkt-ARN**  
Der Amazon-Ressourcenname (ARN) des Zugriffspunkts der Anforderung. Wenn der Zugriffspunkt-ARN fehlerhaft ist oder nicht verwendet wird, enthält das Feld ein `-`. Weitere Hinweise zu Zugangspunkten finden Sie unter [Verwenden von Amazon-S3-Zugangspunkten für Allzweck-Buckets](using-access-points.md). Weitere Informationen zu ARNs finden Sie unter [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) im *AWS Referenzhandbuch*.  
**Beispieleintrag**  

```
arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
```

**aclRequired**  
Eine Zeichenfolge, die angibt, ob für die Anforderung eine Zugriffssteuerungsliste (ACL) für die Autorisierung erforderlich war. Wenn für die Anforderung eine ACL zur Autorisierung erforderlich war, lautet die Zeichenfolge `Yes`. Wenn keine erforderlich ACLs waren, lautet die Zeichenfolge`-`. Weitere Informationen zu finden ACLs Sie unter[Zugriffskontrolllisten (ACL) – Übersicht](acl-overview.md). Weitere Informationen zur Verwendung des `aclRequired` Felds zum Deaktivieren ACLs finden Sie unter[Kontrolle des Besitzes von Objekten und Deaktivierung ACLs für Ihren Bucket](about-object-ownership.md).   
**Beispieleintrag**  

```
Yes
```

**Quellregion**  
Die AWS Region, aus der die Anfrage stammt. In diesem Feld wird ein Bindestrich (`-`) angezeigt, wenn die Ursprungsregion nicht bestimmt werden kann (z. B. PrivateLink Verbindungen, Direct Connect-Verbindungen, Bring Your Own IP-Adressen (BYOIP) oder AWS Nicht-IP-Adressen) oder wenn das Protokoll durch Vorgänge generiert wird, die auf vom Kunden festgelegten Richtlinien oder Aktionen wie Lebenszyklus und Prüfsumme basieren.  
**Beispieleintrag**  

```
us-east-1
```

## Benutzerdefinierte Zugriffsprotokollinformationen
<a name="LogFormatCustom"></a>

Sie können benutzerdefinierte Informationen angeben, die im Zugriffsprotokolldatensatz für eine Anforderung gespeichert werden. Fügen Sie der URL für die Anforderung dazu einen benutzerdefinierten Abfragefolgenkettenparameter hinzu. Amazon S3 ignoriert Abfrage-Zeichenfolgenparameter, die mit `x-` beginnen, aber nimmt diese in den Zugriffsprotokoll-Datensatz für die Anforderung auf, als Teil des `Request-URI`-Felds des Protokolldatensatzes. 

Beispielsweise verhält sich die Anfrage `GET` für `"s3.amazonaws.com/amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-user=johndoe"` genauso wie die Anfrage für `"s3.amazonaws.com/amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg"`, abgesehen davon, dass die Zeichenfolge `"x-user=johndoe"` in das Feld `Request-URI` des entsprechenden Protokolldatensatzes eingefügt wird. Diese Funktionalität steht nur auf der REST-Schnittstelle zur Verfügung.

## Aspekte zur Programmierung des erweiterbaren Serverzugriff-Protokollformats
<a name="LogFormatExtensible"></a>

Gelegentlich erweitern wir das Zugriffsprotokoll-Datensatzformat, indem wir am Ende jeder Zeile neue Felder hinzufügen. Daher sollten Sie sicherstellen, dass jeder Code, der Server-Zugriffsprotokolle analysiert, so geschrieben ist, dass er angefügte Felder verarbeiten kann, die er möglicherweise nicht versteht. 

# Löschen von Amazon-S3-Protokolldateien
<a name="deleting-log-files-lifecycle"></a>

Ein Amazon-S3-Bucket mit aktivierter Server-Zugriffsprotokollierung kann im Laufe der Zeit viele Server-Protokollobjekte ansammeln. Möglicherweise benötigt Ihre Anwendung diese Zugriffsprotokolle für einen bestimmten Zeitraum nachdem sie erstellt wurden und danach möchten Sie sie ggf. löschen. Sie können die Amazon-S3-Lebenszykluskonfiguration zum Erstellen von Regeln verwenden, sodass Amazon S3 diese Objekte am Ende ihres Lebenszyklus automatisch zum Löschen bereitstellt. 

Sie können mithilfe eines gemeinsamen Präfixes für eine Teilmenge der Objekte in Ihrem S3-Bucket eine Lebenszykluskonfiguration definieren. Wenn Sie in Ihrer Konfiguration für die Server-Zugriffsprotokollierung ein Präfix angegeben haben, können Sie eine Lebenszyklus-Konfigurationsregel festlegen, um Protokollobjekte mit diesem Präfix zu löschen. 

Angenommen, Ihre Protokollobjekte verwenden das Präfix `logs/`. Sie können dann über eine Lebenszyklus-Konfigurationsregel alle Objekte mit dem Präfix `logs/` im Bucket nach einem bestimmten Zeitraum löschen. 

Weitere Informationen zur Lebenszyklus-Konfiguration finden Sie unter [Verwalten des Lebenszyklus von Objekten](object-lifecycle-mgmt.md).

Allgemeine Informationen zu Server-Zugriffsprotokollen finden Sie unter [Protokollieren von Anfragen mit Server-Zugriffsprotokollierung](ServerLogs.md).

# Verwenden von Amazon-S3-Serverzugriffsprotokollen zur Identifizierung von Anforderungen
<a name="using-s3-access-logs-to-identify-requests"></a>

Sie können mittels Amazon-S3-Serverzugriffsprotokollen Amazon-S3-Anforderungen identifizieren. 

**Anmerkung**  
Um Amazon S3 S3-Anfragen zu identifizieren, empfehlen wir, AWS CloudTrail Datenereignisse anstelle von Amazon S3 S3-Serverzugriffsprotokollen zu verwenden. CloudTrail Datenereignisse sind einfacher einzurichten und enthalten mehr Informationen. Weitere Informationen finden Sie unter [Identifizieren von Amazon S3 S3-Anfragen mithilfe von CloudTrail](cloudtrail-request-identification.md).
Je nachdem, wie viele Zugriffsanfragen Sie erhalten, erfordert die Analyse Ihrer Protokolle möglicherweise mehr Ressourcen oder Zeit als die Verwendung von CloudTrail Datenereignissen.

**Topics**
+ [Abfragen von Zugriffsprotokollen für Anforderungen über Amazon Athena](#querying-s3-access-logs-for-requests)
+ [Identifizieren von Signature-Version-2-Anforderungen mittels Amazon-S3-Zugriffsprotokollen](#using-s3-access-logs-to-identify-sigv2-requests)
+ [Identifizieren von Objektzugriffsanforderungen mittels Amazon-S3-Zugriffsprotokollen](#using-s3-access-logs-to-identify-objects-access)

## Abfragen von Zugriffsprotokollen für Anforderungen über Amazon Athena
<a name="querying-s3-access-logs-for-requests"></a>

Sie können Amazon-S3-Anforderungen mit Amazon-S3-Zugriffsprotokollen mithilfe von Amazon Athena identifizieren. 

Amazon S3 speichert Server-Zugriffsprotokolle als Objekte in einem S3-Bucket. Es ist oft einfacher, ein Tool zu verwenden, mit dem die Protokolle in Amazon S3 analysiert werden können. Athena unterstützt die Analyse von S3-Objekten und kann zur Abfrage von Amazon-S3-Zugriffsprotokollen verwendet werden.

**Example**  
Das folgende Beispiel zeigt, wie Sie Amazon-S3-Server-Zugriffsprotokolle in Amazon Athena abfragen können. Ersetzen Sie die `user input placeholders` in den folgenden Beispielen durch eigene Daten.  
Zur Angabe eines Amazon-S3-Speicherorts in einer Athena-Abfrage müssen Sie einen S3-URI für den Ziel-Bucket bereitstellen, in dem Ihre Protokolle bereitgestellt werden. Dieser URI muss den Bucket-Namen und das Präfix im folgenden Format enthalten: `s3://amzn-s3-demo-bucket1-logs/prefix/` 

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Führen Sie im Abfrage-Editor einen Befehl wie den folgenden aus. Ersetzen Sie `s3_access_logs_db` durch den Namen, den Sie Ihrer Datenbank geben möchten. 

   ```
   CREATE DATABASE s3_access_logs_db
   ```
**Anmerkung**  
Es hat sich bewährt, die Datenbank in derselben Datenbank AWS-Region wie Ihren S3-Bucket zu erstellen. 

1. Führen Sie im Abfrage-Editor einen Befehl wie den folgenden aus, um in der in Schritt 2 erstellten Datenbank ein Tabellenschema zu erstellen. Ersetzen Sie `s3_access_logs_db.mybucket_logs` durch den Namen, den Sie Ihrer Tabelle geben möchten. Die Datentypwerte `STRING` und `BIGINT` sind die Zugriffsprotokolleigenschaften. Sie können diese Eigenschaften in Athena abfragen. Geben Sie für `LOCATION` wie oben erwähnt den Pfad von S3-Bucket und Präfix ein.

------
#### [ Date-based partitioning ]

   ```
   CREATE EXTERNAL TABLE s3_access_logs_db.mybucket_logs( 
    `bucketowner` STRING, 
    `bucket_name` STRING, 
    `requestdatetime` STRING, 
    `remoteip` STRING, 
    `requester` STRING, 
    `requestid` STRING, 
    `operation` STRING, 
    `key` STRING, 
    `request_uri` STRING, 
    `httpstatus` STRING, 
    `errorcode` STRING, 
    `bytessent` BIGINT, 
    `objectsize` BIGINT, 
    `totaltime` STRING, 
    `turnaroundtime` STRING, 
    `referrer` STRING, 
    `useragent` STRING, 
    `versionid` STRING, 
    `hostid` STRING, 
    `sigv` STRING, 
    `ciphersuite` STRING, 
    `authtype` STRING, 
    `endpoint` STRING, 
    `tlsversion` STRING,
    `accesspointarn` STRING,
    `aclrequired` STRING,
    `sourceregion` STRING)
    PARTITIONED BY (
      `timestamp` string)
   ROW FORMAT SERDE 
    'org.apache.hadoop.hive.serde2.RegexSerDe' 
   WITH SERDEPROPERTIES ( 
    'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') 
   STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
   OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
    's3://bucket-name/prefix-name/account-id/region/source-bucket-name/'
    TBLPROPERTIES (
     'projection.enabled'='true', 
     'projection.timestamp.format'='yyyy/MM/dd', 
     'projection.timestamp.interval'='1', 
     'projection.timestamp.interval.unit'='DAYS', 
     'projection.timestamp.range'='2024/01/01,NOW', 
     'projection.timestamp.type'='date', 
     'storage.location.template'='s3://bucket-name/prefix-name/account-id/region/source-bucket-name/${timestamp}')
   ```

------
#### [ Non-date-based partitioning ]

   ```
   CREATE EXTERNAL TABLE `s3_access_logs_db.mybucket_logs`(
     `bucketowner` STRING, 
     `bucket_name` STRING, 
     `requestdatetime` STRING, 
     `remoteip` STRING, 
     `requester` STRING, 
     `requestid` STRING, 
     `operation` STRING, 
     `key` STRING, 
     `request_uri` STRING, 
     `httpstatus` STRING, 
     `errorcode` STRING, 
     `bytessent` BIGINT, 
     `objectsize` BIGINT, 
     `totaltime` STRING, 
     `turnaroundtime` STRING, 
     `referrer` STRING, 
     `useragent` STRING, 
     `versionid` STRING, 
     `hostid` STRING, 
     `sigv` STRING, 
     `ciphersuite` STRING, 
     `authtype` STRING, 
     `endpoint` STRING, 
     `tlsversion` STRING,
     `accesspointarn` STRING,
     `aclrequired` STRING,
     `sourceregion` STRING)
   ROW FORMAT SERDE 
     'org.apache.hadoop.hive.serde2.RegexSerDe' 
   WITH SERDEPROPERTIES ( 
     'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') 
   STORED AS INPUTFORMAT 
     'org.apache.hadoop.mapred.TextInputFormat' 
   OUTPUTFORMAT 
     'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
     's3://amzn-s3-demo-bucket1-logs/prefix/'
   ```

------

1. Wählen Sie im Navigationsbereich unter **Database (Datenbank)** die Datenbank aus.

1. Wählen Sie unter **Tables (Tabellen)**neben dem Namen der Tabelle **Preview table (Tabellenvorschau)** aus.

   Im Fensterbereich **Results (Ergebnisse)** sollten Daten aus den Server-Zugriffsprotokollen angezeigt werden, also `bucketowner`, `bucket`, `requestdatetime` usw. Dies bedeutet, dass die Athena-Tabelle erfolgreich erstellt wurde. Sie können jetzt die Amazon-S3-Server-Zugriffsprotokolle abfragen.

**Example – Anzeigen, wer ein Objekt um welche Uhrzeit (Zeitstempel, IP-Adresse und IAM-Benutzer) gelöscht hat**  

```
SELECT requestdatetime, remoteip, requester, key 
FROM s3_access_logs_db.mybucket_logs 
WHERE key = 'images/picture.jpg' AND operation like '%DELETE%';
```

**Example – Anzeigen aller Vorgänge, die von einem IAM-Benutzer ausgeführt wurden**  

```
SELECT * 
FROM s3_access_logs_db.mybucket_logs 
WHERE requester='arn:aws:iam::123456789123:user/user_name';
```

**Example – Anzeigen aller Vorgänge, die in einem bestimmten Zeitraum für ein Objekt ausgeführt wurden**  

```
SELECT *
FROM s3_access_logs_db.mybucket_logs
WHERE Key='prefix/images/picture.jpg' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2017-02-18:07:00:00','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2017-02-18:08:00:00','yyyy-MM-dd:HH:mm:ss');
```

**Example – Anzeigen der Menge der in einem festgelegten Zeitraum an eine bestimmten IP-Adresse übertragenen Daten**  

```
SELECT coalesce(SUM(bytessent), 0) AS bytessenttotal
FROM s3_access_logs_db.mybucket_logs
WHERE remoteip='192.0.2.1'
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2022-06-01','yyyy-MM-dd')
AND parse_datetime('2022-07-01','yyyy-MM-dd');
```

**Example — Suchen Sie IDs nach Anfragen für HTTP 5xx-Fehler in einem bestimmten Zeitraum**  

```
SELECT requestdatetime, key, httpstatus, errorcode, requestid, hostid 
FROM s3_access_logs_db.mybucket_logs
WHERE httpstatus like '5%' AND timestamp
BETWEEN '2024/01/29'
AND '2024/01/30'
```

**Anmerkung**  
Zur Reduzierung der Beibehaltungsdauer Ihrer Protokolle können Sie für Ihren Serverzugriffsprotokoll-Bucket eine S3-Lebenszykluskonfiguration erstellen. Erstellen Sie Lebenszykluskonfigurationsregeln, um Protokolldateien regelmäßig zu entfernen. Dadurch wird die Menge der Daten reduziert, die Athena in einer Abfrage analysiert. Weitere Informationen finden Sie unter [Einrichten einer S3-Lebenszykluskonfiguration für einen Bucket](how-to-set-lifecycle-configuration-intro.md).

## Identifizieren von Signature-Version-2-Anforderungen mittels Amazon-S3-Zugriffsprotokollen
<a name="using-s3-access-logs-to-identify-sigv2-requests"></a>

Die Amazon-S3-Unterstützung für Signature Version 2 wird deaktiviert (veraltet). Danach akzeptiert Amazon S3 keine Anforderungen mit Signature Version 2 mehr, alle Anforderungen müssen also mit *Signature Version 4* signiert werden. Sie können Signature-Version-2-Zugriffsanforderungen mittels Amazon-S3-Zugriffsprotokollen identifizieren. 

**Anmerkung**  
Um Signature Version 2-Anfragen zu identifizieren, empfehlen wir, AWS CloudTrail Datenereignisse anstelle von Amazon S3 S3-Serverzugriffsprotokollen zu verwenden. CloudTrail Datenereignisse sind einfacher einzurichten und enthalten mehr Informationen als Serverzugriffsprotokolle. Weitere Informationen finden Sie unter [Identifizieren von Amazon S3 Signature Version 2-Anfragen mithilfe von CloudTrail](cloudtrail-request-identification.md#cloudtrail-identification-sigv2-requests).

**Example – Anzeigen aller Anforderer, die Signature Version 2-Datenverkehr senden**  

```
SELECT requester, sigv, Count(sigv) as sigcount 
FROM s3_access_logs_db.mybucket_logs
GROUP BY requester, sigv;
```

## Identifizieren von Objektzugriffsanforderungen mittels Amazon-S3-Zugriffsprotokollen
<a name="using-s3-access-logs-to-identify-objects-access"></a>

Sie können Abfragen an Amazon-S3-Server-Zugriffsprotokolle verwenden, um Amazon-S3-Objektzugriffsanforderungen für Vorgänge zu identifizieren, wie etwa `GET`, `PUT` und `DELETE`, und weitere Informationen über diese Anforderungen zu entdecken.

Das folgende Amazon-Athena-Abfragebeispiel zeigt, wie Sie alle `PUT`-Objektanforderungen für Amazon S3 aus einem Serverzugriffsprotokoll abrufen können. 

**Example – Anzeigen aller Anforderer, die `PUT`-Objektanforderungen in einem bestimmten Zeitraum senden**  

```
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE operation='REST.PUT.OBJECT' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42',yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

Das folgende Amazon Athena-Abfragebeispiel zeigt, wie alle `GET`-Objektanfragen für Amazon S3 aus dem Server-Zugriffsprotokoll abgerufen werden. 

**Example – Anzeigen aller Anforderer, die `GET`-Objektanforderungen in einem bestimmten Zeitraum senden**  

```
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE operation='REST.GET.OBJECT' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

Das folgende Amazon Athena-Abfragebeispiel zeigt, wie alle anonymen Anforderungen aus dem Server-Zugriffsprotokoll in Ihre S3-Buckets gelangen. 

**Example – Anzeigen aller anonymen Anforderer, die in einem bestimmten Zeitraum Anforderungen an einen Bucket richten**  

```
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE requester IS NULL 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

Die folgende Amazon-Athena-Abfrage zeigt, wie alle Anforderungen für Ihre S3-Buckets identifiziert werden, für die eine Zugriffssteuerungsliste (ACL) zur Autorisierung erforderlich war. Sie können diese Informationen verwenden, um diese ACL-Berechtigungen in die entsprechenden Bucket-Richtlinien zu migrieren und zu deaktivieren ACLs. Nachdem Sie diese Bucket-Richtlinien erstellt haben, können Sie sie ACLs für diese Buckets deaktivieren. Weitere Informationen zur Deaktivierung ACLs finden Sie unter. [Voraussetzungen für die Deaktivierung ACLs](object-ownership-migrating-acls-prerequisites.md) 

**Example – Identifizieren Sie alle Anforderungen, für die eine ACL zur Autorisierung erforderlich war**  

```
SELECT bucket_name, requester, key, operation, aclrequired, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE aclrequired = 'Yes' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2022-05-10:00:00:00','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2022-08-10:00:00:00','yyyy-MM-dd:HH:mm:ss')
```

**Anmerkung**  
Sie können den Datumsbereich nach Belieben an Ihre Anforderungen anpassen.
Diese Abfragebeispiele können auch für die Sicherheitsüberwachung nützlich sein. Sie können die Ergebnisse auf `PutObject`- oder `GetObject`-Aufrufe von unerwarteten oder nicht autorisierten IP-Adressen oder Anforderern und zum Identifizieren anonymer Anforderungen an Ihre Buckets prüfen.
Diese Abfrage ruft nur Informationen von der Zeit ab, zu der die Protokollierung aktiviert wurde. 
Wenn Sie AWS CloudTrail Protokolle verwenden, finden Sie weitere Informationen unter[Identifizieren des Zugriffs auf S3-Objekte mithilfe von CloudTrail](cloudtrail-request-identification.md#cloudtrail-identification-object-access). 

# Behebung von Fehlern bei der Server-Zugriffsprotokollierung
<a name="troubleshooting-server-access-logging"></a>

Die folgenden Themen können Ihnen bei der Behebung von Problemen helfen, die beim Einrichten der Protokollierung mit Amazon S3 auftreten können.

**Topics**
+ [Häufige Fehlermeldungen beim Einrichten der Protokollierung](#common-errors)
+ [Behebung von Bereitstellungsfehlern](#delivery-failures)

## Häufige Fehlermeldungen beim Einrichten der Protokollierung
<a name="common-errors"></a>

Die folgenden häufigen Fehlermeldungen können auftreten, wenn Sie die Protokollierung über AWS Command Line Interface (AWS CLI) und aktivieren AWS SDKs: 

Fehler: S3-standortübergreifende Protokollierung nicht zulässig

Wenn sich der *Ziel-Bucket* in einer anderen Region als der Quell-Bucket befindet, tritt der Fehler S3-standortübergreifende Protokollierung nicht zulässig auf. Um diesen Fehler zu beheben, stellen Sie sicher, dass sich der Ziel-Bucket, der für den Empfang der Zugriffs-Logs konfiguriert ist, im selben AWS-Region und AWS-Konto wie der Quell-Bucket befindet.

Fehler: Die Eigentümer des zu protokollierenden Buckets und des Ziel-Buckets müssen identisch sein

Wenn Sie die Server-Zugriffsprotokollierung aktivieren, tritt dieser Fehler auf, wenn der angegebene Ziel-Bucket zu einem anderen Konto gehört. Um diesen Fehler zu beheben, stellen Sie sicher, dass sich der Ziel-Bucket im selben AWS-Konto wie der Quell-Bucket befindet.

**Anmerkung**  
Wir empfehlen, einen anderen Ziel-Bucket als den Quell-Bucket auszuwählen. Wenn Quell-Bucket und Ziel-Bucket identisch sind, werden für die Protokolle, die in den Bucket geschrieben werden, zusätzliche Protokolle erstellt, wodurch die Speicherkosten steigen können. Diese zusätzlichen Protokolle zu den Protokollen können es zudem schwierig machen, die gesuchten Protokolle zu finden. Zur einfacheren Protokollverwaltung empfehlen wir, Zugriffsprotokolle in einem anderen Bucket zu speichern. Weitere Informationen finden Sie unter [Wie aktiviere ich die Protokollzustellung?](ServerLogs.md#server-access-logging-overview).

Fehler: Der Ziel-Bucket für die Protokollierung ist nicht vorhanden

Der Ziel-Bucket muss vorhanden sein, bevor die Konfiguration festgelegt wird. Dieser Fehler weist darauf hin, dass der Ziel-Bucket nicht vorhanden ist oder nicht gefunden werden kann. Vergewissern Sie sich, dass der Bucket-Name richtig geschrieben ist, und wiederholen Sie den Vorgang.

Fehler: Ziel-Erteilungen sind für Buckets mit „Bucket-Eigentümer erzwungen“ nicht zulässig

Dieser Fehler weist darauf hin, dass der Ziel-Bucket die Einstellung „Vom Bucket-Eigentümer erzwungen“ für die S3-Objekt-Eigentümerschaft verwendet. Die Einstellung „Vom Bucket-Eigentümer erzwungen“ unterstützt keine Ziel-Erteilungen. Weitere Informationen finden Sie unter [Berechtigungen für Protokollbereitstellung](enable-server-access-logging.md#grant-log-delivery-permissions-general).

## Behebung von Bereitstellungsfehlern
<a name="delivery-failures"></a>

Halten Sie sich an die folgenden bewährten Methoden, um Probleme mit der Server-Zugriffsprotokollierung zu vermeiden:
+ **Die S3-Protokollbereitstellungsgruppe hat Schreibzugriff auf den Ziel-Bucket** – Die S3-Protokollbereitstellungsgruppe liefert Serverzugriffsprotokolle an den Ziel-Bucket. Es kann eine Bucket-Richtlinie oder eine Bucket-Zugriffssteuerungsliste (ACL) verwendet werden, um Schreibzugriff auf den Ziel-Bucket zu gewähren. Wir empfehlen jedoch, eine Bucket-Richtlinie anstelle einer ACL zu verwenden. Weitere Informationen zum Gewähren von Schreibzugriff für Ihren Ziel-Bucket finden Sie unter [Berechtigungen für Protokollbereitstellung](enable-server-access-logging.md#grant-log-delivery-permissions-general).
**Anmerkung**  
Wenn der Ziel-Bucket die Einstellung „Vom Bucket-Eigentümer erzwungen“ für die Objekt-Eigentümerschaft verwendet, beachten Sie Folgendes:   
ACLs sind deaktiviert und wirken sich nicht mehr auf die Berechtigungen aus. Somit können Sie Ihre Bucket-ACL nicht aktualisieren, um Zugriff auf die S3-Protokollbereitstellungsgruppe zu gewähren. Sie müssen vielmehr die Bucket-Richtlinie für den Ziel-Bucket aktualisieren, um Zugriff auf den Prinzipal des Protokollierungsservices zu gewähren. 
Sie können keine Ziel-Erteilungen in Ihre `PutBucketLogging`-Konfiguration einschließen. 
+ **Die Bucket-Richtlinie für den Ziel-Bucket lässt den Zugriff auf die Protokolle zu** – Überprüfen Sie die Bucket-Richtlinie des Ziel-Buckets. Suchen Sie in der Bucket-Richtlinie nach allen Anweisungen, die `"Effect": "Deny"` enthalten. Stellen Sie anschließend sicher, dass die `Deny`-Anweisung das Schreiben von Zugriffsprotokollen in den Bucket nicht verhindert.
+ **S3 Object Lock ist auf dem Ziel-Bucket nicht aktiviert** – Prüfen Sie, ob Object Lock für den Ziel-Bucket aktiviert ist. Die Objektsperre blockiert die Bereitstellung von Server-Zugriffsprotokollen. Sie müssen einen Ziel-Bucket auswählen, für den Object Lock nicht aktiviert ist.
+ **Von Amazon S3 verwaltete Schlüssel (SSE-S3) sind ausgewählt, wenn die Standardverschlüsselung auf dem Ziel-Bucket aktiviert ist** – Sie können die Bucket-Standardverschlüsselung nur für den Ziel-Bucket verwenden, wenn Sie die serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3) verwenden. Die serverseitige Standardverschlüsselung mit AWS Key Management Service (AWS KMS) -Schlüsseln (SSE-KMS) wird für Ziel-Buckets zur Serverzugriffsprotokollierung nicht unterstützt. Weitere Informationen zum Aktivieren der Standardverschlüsselung finden Sie unter [Konfigurieren der Standardverschlüsselung](default-bucket-encryption.md).
+ **Für den Ziel-Bucket ist „Zahlung durch den Anforderer“ nicht aktiviert** – Die Verwendung eines Buckets mit „Zahlung durch den Anforderer“ als Ziel-Bucket für die Server-Zugriffsprotokollierung wird nicht unterstützt. Um die Bereitstellung von Serverzugriffsprotokollen zu ermöglichen, deaktivieren Sie die Option „Zahlung durch den Anforderer“ im Ziel-Bucket.
+ **Überprüfen Sie Ihre AWS Organizations Service Control Policies (SCPs) und Resource Control Policies (RCPs)** — Überprüfen Sie bei der Nutzung die Service Control Policies und Resource Control Policies AWS Organizations, um sicherzustellen, dass der Amazon S3 S3-Zugriff erlaubt ist. Diese Richtlinien geben die maximalen Berechtigungen für Prinzipale und Ressourcen in den betroffenen Konten an. Suchen Sie in den Richtlinien nach Anweisungen, die `"Effect": "Deny"` enthalten, und stellen Sie sicher, dass `Deny`-Anweisungen das Schreiben von Zugriffsprotokollen in den Bucket nicht verhindern. Weitere Informationen finden Sie unter [Autorisierungsrichtlinien in AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_authorization_policies.html) im *AWS Organizations -Benutzerhandbuch*.
+ **Eine gewisse Zeit warten, bis die letzten Änderungen an der Protokollierungskonfiguration wirksam werden** – Die erstmalige Aktivierung der Server-Zugriffsprotokollierung oder die Änderung des Ziel-Buckets für Protokolle wird erst nach einer gewissen Zeit vollständig wirksam. Es kann über eine Stunde dauern, bis alle Anforderungen ordnungsgemäß protokolliert und übermittelt wurden. 

  Um nach Protokollzustellungsfehlern zu suchen, aktivieren Sie Anforderungsmetriken in Amazon CloudWatch. Wenn die Protokolle nicht innerhalb weniger Stunden bereitgestellt werden, suchen Sie nach der Metrik `4xxErrors`, die auf Protokollbereitstellungsfehler hinweisen kann. Weitere Informationen zur Aktivierung von Anforderungsmetriken finden Sie unter [Erstellen einer CloudWatch Metrikkonfiguration für alle Objekte in Ihrem Bucket](configure-request-metrics-bucket.md).