

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.

# 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-Anfragen zu identifizieren, empfehlen wir, AWS CloudTrail Datenereignisse anstelle von Amazon S3-Serverzugriffsprotokollen zu verwenden. CloudTrail Datenereignisse sind einfacher einzurichten und enthalten mehr Informationen. Weitere Informationen finden Sie unter [Identifizieren von Amazon S3-Anfragen mit 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 Signaturanfragen der Version 2](#using-s3-access-logs-to-identify-sigv2-requests)
+ [Identifizieren von Objektzugriffsanfragen](#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 auf derselben Ebene 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 – Findet Anforderungs-IDs 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'
```

## Identifizieren von Signaturanfragen der Version 2
<a name="using-s3-access-logs-to-identify-sigv2-requests"></a>

Sie können Serverzugriffsprotokolle verwenden, um Signature Version 2-Anfragen zu identifizieren. Einzelheiten zum Abfragen von Protokollen mit Amazon Athena finden Sie im Abschnitt Athena-Abfragen unter. [Übermittlung von Protokollen an einen Amazon S3-Bucket für allgemeine Zwecke](sal-gp-section.md)

## Identifizieren von Objektzugriffsanfragen
<a name="using-s3-access-logs-to-identify-objects-access"></a>

Sie können Serverzugriffsprotokolle verwenden, um Objektzugriffsmuster zu identifizieren. Einzelheiten zum Abfragen von Protokollen mit Amazon Athena finden Sie im Abschnitt Athena-Abfragen unter. [Übermittlung von Protokollen an einen Amazon S3-Bucket für allgemeine Zwecke](sal-gp-section.md)