

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.

# Konfigurieren Sie die Protokollierung für HTTP APIs in API Gateway
<a name="http-api-logging"></a>

Sie können die Protokollierung aktivieren, um Protokolle in Logs zu CloudWatch schreiben. Sie können [Protokollierungsvariablen](http-api-logging-variables.md) verwenden, um den Inhalt Ihrer Protokolle anzupassen.

Um Ihre Sicherheitslage zu verbessern, empfehlen wir Ihnen, für alle Phasen Ihrer HTTP-API CloudWatch Protokolle in Logs zu schreiben. Dies kann erforderlich sein, um verschiedene Compliance-Rahmenwerke einzuhalten. Weitere Informationen finden Sie unter [Amazon-API-Gateway-Steuerelemente](https://docs.aws.amazon.com/securityhub/latest/userguide/apigateway-controls.html) im *Benutzerhandbuch für AWS Security Hub *.

Um die Protokollierung für eine HTTP-API einzuschalten, müssen Sie Folgendes tun.

1. Stellen Sie sicher, dass Ihr -Benutzer über die erforderlichen Berechtigungen zum Einschalten der Protokollierung verfügt.

1. Erstellen Sie eine CloudWatch Protokollgruppe für Logs.

1. Geben Sie den ARN der CloudWatch Logs-Protokollgruppe für eine Phase Ihrer API an.

## Berechtigungen zum Einschalten der Protokollierung
<a name="http-api-logging.permissions"></a>

Um die Protokollierung für eine API einzuschalten, muss der -Benutzer über die folgenden Berechtigungen verfügen.

**Example**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:GetLogEvents",
                "logs:FilterLogEvents"
            ],
            "Resource": "arn:aws:logs:{{us-east-2}}:{{123456789012}}:log-group:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:PutResourcePolicy",
                "logs:UpdateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:CreateLogGroup",
                "logs:DescribeResourcePolicies",
                "logs:GetLogDelivery",
                "logs:ListLogDeliveries"
            ],
            "Resource": "*"
        }
    ]
}
```

## Erstellen Sie eine Protokollgruppe und aktivieren Sie die Protokollierung für HTTP APIs
<a name="http-api-enable-logging"></a>

Sie können eine Protokollgruppe erstellen und die Zugriffsprotokollierung mit dem AWS-Managementkonsole oder dem aktivieren AWS CLI.

------
#### [ AWS-Managementkonsole ]

1.  Erstellen Sie eine -Protokollgruppe. 

   Informationen zum Erstellen einer Protokollgruppe mithilfe der Konsole finden Sie unter [Erstellen einer Protokollgruppe im Amazon CloudWatch Logs-Benutzerhandbuch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html).

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie eine HTTP-API.

1. Wählen Sie unter der Registerkarte **Monitor** (Überwachen) im Hauptnavigationsbereich die Option **Logging** (Protokollierung) aus.

1. Wählen Sie eine Phase aus, um die Protokollierung zu aktivieren, und wählen Sie **Select** (Auswählen) aus. 

1. Wählen Sie **Edit** (Bearbeiten) aus, um die Zugriffsprotokollierung zu aktivieren. 

1. Aktivieren Sie die **Zugriffsprotokollierung**, geben Sie ein CloudWatch Protokoll ein und wählen Sie ein Protokollformat aus.

1. Wählen Sie **Speichern**.

------
#### [ AWS CLI ]

Mit dem folgenden [create-log-group](https://docs.aws.amazon.com/cli/latest/reference/logs/create-log-group.html)Befehl wird eine Protokollgruppe erstellt:

```
aws logs create-log-group --log-group-name {{my-log-group}}
```

Zum Einschalten der Protokollierung benötigen Sie den Amazon-Ressourcennamen (ARN) für Ihre Protokollgruppe. Das ARN-Format ist arn:aws:logs: ::log-group:. {{region}} {{account-id}} {{log-group-name}}

Der folgende [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-stage.html)-Befehl aktiviert die Protokollierung für die `$default`-Stufe einer HTTP-API.

```
aws apigatewayv2 update-stage --api-id {{abcdef}} \
    --stage-name '{{$default}}' \
    --access-log-settings '{"DestinationArn": "arn:aws:logs:{{region}}:{{account-id}}:log-group:{{log-group-name}}", "Format": "$context.identity.sourceIp - - [$context.requestTime] \"$context.httpMethod $context.routeKey $context.protocol\" $context.status $context.responseLength $context.requestId"}'
```

------

## Beispielprotokollformate
<a name="http-api-enable-logging.examples"></a>

Beispiele für einige gängige Zugriffsprotokollformate sind in der API Gateway-Konsole verfügbar und im Folgenden aufgeführt.
+ `CLF` ([Common Log Format](https://httpd.apache.org/docs/current/logs.html#common)):

  ```
  $context.identity.sourceIp - - [$context.requestTime] "$context.httpMethod $context.routeKey $context.protocol" $context.status $context.responseLength $context.requestId $context.extendedRequestId
  ```
+  `JSON`: 

  ```
  { "requestId":"$context.requestId", "ip": "$context.identity.sourceIp", "requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod","routeKey":"$context.routeKey", "status":"$context.status","protocol":"$context.protocol", "responseLength":"$context.responseLength", "extendedRequestId": "$context.extendedRequestId" }
  ```
+ `XML`: 

  ```
  <request id="$context.requestId"> <ip>$context.identity.sourceIp</ip> <requestTime>$context.requestTime</requestTime> <httpMethod>$context.httpMethod</httpMethod> <routeKey>$context.routeKey</routeKey> <status>$context.status</status> <protocol>$context.protocol</protocol> <responseLength>$context.responseLength</responseLength> <extendedRequestId>$context.extendedRequestId</extendedRequestId> </request>
  ```
+ `CSV` (durch Komma getrennte Werte):

  ```
  $context.identity.sourceIp,$context.requestTime,$context.httpMethod,$context.routeKey,$context.protocol,$context.status,$context.responseLength,$context.requestId,$context.extendedRequestId
  ```