

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

# HTTP-API-Zugriffsprotokolle anpassen
<a name="http-api-logging-variables"></a>

Sie können die folgenden Variablen zur Anpassung der HTTP-API-Zugriffsprotokolle verwenden. Weitere Informationen zu Zugriffsprotokollen für HTTP APIs finden Sie unter[Konfigurieren Sie die Protokollierung für HTTP APIs in API Gateway](http-api-logging.md).


| Parameter | Description | 
| --- | --- | 
| \$1context.accountId |  Die AWS Konto-ID des API-Besitzers.  | 
| \$1context.apiId |  Die ID, die API Gateway Ihrer API zuweist.  | 
| \$1context.authorizer.claims.property |  Eine Eigenschaft der Ansprüche, die das JSON Web Token (JWT) zurückgibt, nachdem der Aufrufer der Methode erfolgreich authentifiziert wurde (z. B. `$context.authorizer.claims.username`). Weitere Informationen finden Sie unter [Steuern Sie den Zugriff auf HTTP APIs mit JWT-Autorisierern in API Gateway](http-api-jwt-authorizer.md).  Bei einem Aufruf von `$context.authorizer.claims` wird null (0) zurückgegeben.   | 
| \$1context.authorizer.error | Die von einem Genehmiger zurückgegebene Fehlermeldung. | 
| \$1context.authorizer.property |  Der Wert des angegebenen Schlüssel-Wert-Paares der `context`-Zuordnung, die von einer Lambda-Genehmigerfunktion des API Gateways zurückgegeben wird. Angenommen, der Genehmiger gibt folgende `context`-Zuweisung zurück:  <pre>"context" : {<br />  "key": "value",<br />  "numKey": 1,<br />  "boolKey": true<br />}</pre> Der Aufruf von `$context.authorizer.key` gibt die Zeichenfolge `"value"` zurück, der Aufruf von `$context.authorizer.numKey` gibt `1` zurück, und der Aufruf von `$context.authorizer.boolKey` gibt `true` zurück.  | 
| \$1context.awsEndpointRequestId |  Die Anforderungs-ID des AWS Endpunkts aus dem `x-amz-request-id` `x-amzn-requestId` OR-Header.  | 
| \$1context.awsEndpointRequestId2 |  Die Anforderungs-ID des AWS Endpunkts aus dem `x-amz-id-2` Header.  | 
| \$1context.customDomain.basePathMatched |  Der Pfad für ein API-Mapping, mit dem eine eingehende Anforderung übereinstimmte. Gilt, wenn ein Client einen benutzerdefinierten Domain-Namen für den Zugriff auf eine API verwendet. Wenn ein Client beispielsweise eine Anforderung an `https://api.example.com/v1/orders/1234` sendet und die Anforderung dem API-Mapping mit dem Pfad `v1/orders` übereinstimmt, lautet der Wert `v1/orders`. Weitere Informationen hierzu finden Sie unter [API-Stufen zu einem benutzerdefinierten Domainnamen für HTTP-APIs zuweisen](http-api-mappings.md).  | 
| \$1context.dataProcessed | Die Menge der verarbeiteten Daten in Bytes. | 
| \$1context.domainName |  Der zum Aufrufen der API verwendete vollständige Domänennamen. Dieser Wert sollte mit dem für den eingehenden `Host`-Header übereinstimmen.  | 
| \$1context.domainPrefix |  Das erste Label der `$context.domainName`.  | 
| \$1context.error.message |  Eine Zeichenfolge, die eine API Gateway-Fehlermeldung enthält.  | 
| \$1context.error.messageString | Die Wert von \$1context.error.message in Anführungszeichen, d. h. "\$1context.error.message". | 
| \$1context.error.responseType |  Ein Typ von `GatewayResponse`. Weitere Informationen erhalten Sie unter [Überwachen Sie die WebSocket API-Ausführung mit CloudWatch Metriken](apigateway-websocket-api-logging.md) und [Einrichten von Gateway-Antworten, um Fehlerantworten anzupassen](api-gateway-gatewayResponse-definition.md#customize-gateway-responses).  | 
| \$1context.extendedRequestId | Äquivalent mit \$1context.requestId. | 
| \$1context.httpMethod |  Die verwendete HTTP-Methode. Gültige Werte sind: `DELETE`, `GET`, `HEAD`, `OPTIONS`, `PATCH`, `POST` und `PUT`.  | 
| \$1context.identity.accountId |  Die der Anfrage zugeordnete AWS Konto-ID. Wird für Routen unterstützt, die die IAM-Autorisierung verwenden.  | 
| \$1context.identity.caller |  Die Hauptkennung des Aufrufers, der die Anforderung signiert hat. Wird für Routen unterstützt, die die IAM-Autorisierung verwenden.  | 
| \$1context.identity.cognitoAuthenticationProvider |  Eine durch Komma getrennte Liste aller Amazon-Cognito-Authentifizierungsanbieter, die vom anfordernden Aufrufer verwendet werden. Nur verfügbar, wenn die Anfrage mit Anmeldeinformationen von Amazon Cognito signiert wurde.  Zum Beispiel für eine Identität aus einem Amazon Cognito-Benutzerpool, `cognito-idp. region.amazonaws.com/user_pool_id,cognito-idp.region.amazonaws.com/user_pool_id:CognitoSignIn:token subject claim` Weitere Informationen zu verfügbaren Amazon-Cognito-Authentifizierungsanbietern finden Sie unter [Verbundidentitäten verwenden](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html) im *Amazon-Cognito-Entwicklerhandbuch*. | 
| \$1context.identity.cognitoAuthenticationType |  Der Amazon Cognito-Authentifizierungstyp des Aufrufers, der den Anfrage erstellt hat. Nur verfügbar, wenn die Anfrage mit Anmeldeinformationen von Amazon Cognito signiert wurde. Mögliche Werte sind `authenticated` für authentifizierte Identitäten und `unauthenticated` für nicht authentifizierte Identitäten. | 
| \$1context.identity.cognitoIdentityId |  Die Amazon Cognito Identitäts-ID des anfordernden Aufrufers. Nur verfügbar, wenn die Anfrage mit Anmeldeinformationen von Amazon Cognito signiert wurde.  | 
| \$1context.identity.cognitoIdentityPoolId |  Die Amazon Cognito Identitätspool-ID des anfordernden Aufrufers. Nur verfügbar, wenn die Anfrage mit Anmeldeinformationen von Amazon Cognito signiert wurde.  | 
| \$1context.identity.principalOrgId |  Die [AWS -Organisations-ID](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html). Wird für Routen unterstützt, die die IAM-Autorisierung verwenden.  | 
| \$1context.identity.clientCert.clientCertPem |  Das PEM-codierte Clientzertifikat, das der Client während der gegenseitigen TLS-Authentifizierung präsentiert hat. Vorhanden, wenn ein Client mithilfe eines benutzerdefinierten Domänennamens, für den gegenseitige TLS aktiviert ist, auf eine API zugreift.  | 
| \$1context.identity.clientCert.subjectDN |  Der Distinguished Name des Zertifikatantragsstellers, den ein Client präsentiert. Vorhanden, wenn ein Client mithilfe eines benutzerdefinierten Domänennamens, für den gegenseitige TLS aktiviert ist, auf eine API zugreift.  | 
| \$1context.identity.clientCert.issuerDN |  Der Distinguished Name des Ausstellers des Zertifikats, das ein Client präsentiert. Vorhanden, wenn ein Client mithilfe eines benutzerdefinierten Domänennamens, für den gegenseitige TLS aktiviert ist, auf eine API zugreift.  | 
| \$1context.identity.clientCert.serialNumber |  Die Seriennummer des Zertifikats. Vorhanden, wenn ein Client mithilfe eines benutzerdefinierten Domänennamens, für den gegenseitige TLS aktiviert ist, auf eine API zugreift.  | 
| \$1context.identity.clientCert.validity.notBefore |  Das Datum, vor dem das Zertifikat ungültig ist. Vorhanden, wenn ein Client mithilfe eines benutzerdefinierten Domänennamens, für den gegenseitige TLS aktiviert ist, auf eine API zugreift.  | 
| \$1context.identity.clientCert.validity.notAfter |  Das Datum, nach dem das Zertifikat ungültig ist. Vorhanden, wenn ein Client mithilfe eines benutzerdefinierten Domänennamens, für den gegenseitige TLS aktiviert ist, auf eine API zugreift.  | 
| \$1context.identity.sourceIp |  Die Quell-IP-Adresse der TCP-Verbindung, von der die Anforderung an API Gateway gesendet wird.  | 
| \$1context.identity.user |  Die Hauptkennung des Benutzers, der für den Ressourcenzugriff autorisiert wird. Wird für Routen unterstützt, die die IAM-Autorisierung verwenden.  | 
| \$1context.identity.userAgent |  Die [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent)-Kopfzeile des API-Aufrufers.  | 
| \$1context.identity.userArn |  Der ARN (Amazon Resource Name) des tatsächlichen Benutzers nach der Authentifizierung. Wird für Routen unterstützt, die die IAM-Autorisierung verwenden. Weitere Informationen finden Sie unter [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html).  | 
| \$1context.integration.error | Die von einer Integration zurückgegebene Fehlermeldung. Äquivalent mit \$1context.integrationErrorMessage. | 
| \$1context.integration.integrationStatus | Bei der Lambda-Proxyintegration wurde der Statuscode vom Lambda-Funktionscode zurückgegeben AWS Lambda, nicht vom Backend-Funktionscode. | 
| \$1context.integration.latency | Die Integrationslatenz in Millisekunden. Äquivalent mit \$1context.integrationLatency. | 
| \$1context.integration.requestId | Die AWS Anforderungs-ID des Endpunkts. Äquivalent mit \$1context.awsEndpointRequestId. | 
| \$1context.integration.status | Der von einer Integration zurückgegebene Statuscode. Bei Lambda-Proxy-Integrationen ist dies der Statuscode, der von Ihrem Lambda-Funktionscode zurückgegeben wird. | 
| \$1context.integrationErrorMessage |  Eine Zeichenfolge, die eine Integrationsfehlermeldung enthält.  | 
| \$1context.integrationLatency | Die Integrationslatenz in Millisekunden. | 
| \$1context.integrationStatus | Bei der Lambda-Proxyintegration stellt dieser Parameter den Statuscode dar, der von der Backend-Lambda-Funktion zurückgegeben wird AWS Lambda, nicht von der Backend-Funktion. | 
| \$1context.path | Der Anforderungspfad. Beispiel, /\$1stage\$1/root/child.  | 
| \$1context.protocol | Das Anforderungsprotokoll ist z. B, HTTP/1.1.  API Gateway APIs kann HTTP/2-Anfragen akzeptieren, aber API Gateway sendet Anfragen über HTTP/1.1 an Backend-Integrationen. Infolgedessen wird das Anforderungsprotokoll als HTTP/1.1 protokolliert, auch wenn ein Client eine Anfrage sendet, die HTTP/2 verwendet.   | 
| \$1context.requestId |  Die ID, die API Gateway der API-Anfrage zuweist.  | 
| \$1context.requestTime | Die Anforderungszeit im [CLF](https://httpd.apache.org/docs/current/logs.html#common)-Format (dd/MMM/yyyy:HH:mm:ss \$1-hhmm). | 
| \$1context.requestTimeEpoch | Die Anforderungszeit im [Epoch](https://en.wikipedia.org/wiki/Unix_time)-Format. | 
| \$1context.responseLatency | Die Antwortlatenz in Millisekunden. | 
| \$1context.responseLength | Die Länge der Antwortnutzlast in Byte. | 
| \$1context.routeKey |  Der Routing-Schlüssel der API-Anfrage, z. B. `/pets`.  | 
| \$1context.stage |  Die Bereitstellungsstufe der API-Anforderung (z. B. `beta` oder `prod`).  | 
| \$1context.status | Der Status der Methodenantwort. | 