

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.

# Fehlerbehebung bei Problemen mit HTTP-APIs in API Gateway
<a name="http-api-troubleshooting"></a>

Die folgenden Themen enthalten Ratschläge zur Fehlerbehebung bei Fehlern und Problemen, die bei der Verwendung von HTTP-APIs auftreten können.

**Topics**
+ [Fehlerbehebung bei Problemen mit HTTP-API-Lambda-Integrationen](http-api-troubleshooting-lambda.md)
+ [Fehlerbehebung bei Problemen mit HTTP-API JWT-Genehmigern](http-api-troubleshooting-jwt.md)

# Fehlerbehebung bei Problemen mit HTTP-API-Lambda-Integrationen
<a name="http-api-troubleshooting-lambda"></a>

Im Folgenden finden Sie Hinweise zur Fehlerbehebung bei Fehlern und Problemen, die bei der Verwendung [AWS Lambda Integrationen](http-api-develop-integrations-lambda.md) mit HTTP APIs auftreten können.

## Problem: Meine API mit einer Lambda-Integration gibt zurüc `{"message":"Internal Server Error"}`
<a name="http-api-troubleshooting-lambda-internal-server-error"></a>

Um den internen Serverfehler zu beheben, fügen Sie die `$context.integrationErrorMessage` [Protokollierungsvariable](http-api-logging-variables.md) zur Ihrem Protokollformat hinzu und sehen Sie sich die Protokolle Ihrer HTTP-API an. Um dies zu erreichen, gehen Sie wie folgt vor:

**Um eine Protokollgruppe zu erstellen, verwenden Sie AWS-Managementkonsole**

1. Öffnen Sie die CloudWatch Konsole unter [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Wählen Sie **Protokollgruppen**.

1. Wählen Sie **Protokollgruppe erstellen**.

1. Geben Sie einen Protokollgruppennamen ein und wählen Sie dann **Erstellen**.

1. Notieren Sie sich den Amazon-Ressourcennamen (ARN) für Ihre Protokollgruppe. Das ARN-Format ist arn:aws:logs: ::log-group:. *region* *account-id* *log-group-name* Sie benötigen den ARN der Protokollgruppe, um die Zugriffsprotokollierung für Ihre HTTP-API zu aktivieren.

**So fügen Sie die `$context.integrationErrorMessage`-Protokollierungsvariable hinzu**

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 Ihre HTTP-API.

1. Wählen Sie unter **Monitor (Überwachen)** die Option **Logging (Protokollierung)**.

1. Wählen Sie eine Stufe Ihrer API aus.

1. Wählen Sie **Bearbeiten** und aktivieren Sie dann die Zugriffsprotokollierung.

1. Geben Sie für **Protokollstandort**den ARN der Protokollgruppe ein, die Sie im vorherigen Schritt erstellt haben.

1. Wählen Sie für **Protokollformat** die Option **CLF** aus. API Gateway erstellt ein Beispielprotokollformat. 

1. Fügen Sie `$context.integrationErrorMessage` am Ende des Protokollformats hinzu.

1. Wählen Sie **Save (Speichern)** aus.

**So zeigen Sie die Protokolle Ihrer API an**

1. Generieren von Protokollen. Verwenden Sie einen Browser oder `curl`, um Ihre API aufzurufen.

   ```
   $curl https://api-id.execute-api.us-west-2.amazonaws.com/route
   ```

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 Ihre HTTP-API.

1. Wählen Sie unter **Monitor (Überwachen)** die Option **Logging (Protokollierung)**.

1. Wählen Sie die Stufe Ihrer API aus, für die Sie die Protokollierung aktiviert haben.

1. Wählen Sie „Logs in **anzeigen**“. CloudWatch

1. Wählen Sie den neuesten Protokoll-Stream, um die Protokolle Ihrer HTTP-API einzusehen.

1. Ihr Protokolleintrag sollte wie folgt aussehen:  
![\[CloudWatch Protokolliert den Protokolleintrag mit der Integrationsfehlermeldung von Lambda.\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/troubleshoot-http-api-logs.png)

Da wir `$context.integrationErrorMessage` dem Protokollformat hinzugefügt haben, wird in unseren Protokollen eine Fehlermeldung angezeigt, die das Problem zusammenfasst. 

Ihre Protokolle enthalten möglicherweise eine andere Fehlermeldung, die darauf hinweist, dass ein Problem mit Ihrem Lambda-Funktionscode vorliegt. Überprüfen Sie in diesem Fall Ihren Lambda-Funktionscode und vergewissern Sie sich, dass Ihre Lambda-Funktion eine Antwort im [erforderlichen Format](http-api-develop-integrations-lambda.md#http-api-develop-integrations-lambda.response) zurückgibt. Wenn Ihre Protokolle keine Fehlermeldung enthalten, fügen Sie `$context.error.message` und `$context.error.responseType` Ihrem Protokollformat hinzu, um weitere Informationen zur Fehlerbehebung zu erhalten.

In diesem Fall zeigen die Protokolle, dass API Gateway nicht über die erforderlichen Berechtigungen zum Aufrufen der Lambda-Funktion verfügte.

Wenn Sie eine Lambda-Integration in der API Gateway-Konsole erstellen, konfiguriert API Gateway automatisch die Berechtigungen zum Aufrufen der Lambda-Funktion. Wenn Sie eine Lambda-Integration mithilfe des AWS CLI CloudFormation, oder eines SDK erstellen, müssen Sie API Gateway Berechtigungen zum Aufrufen der Funktion gewähren. Die folgenden [add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html)-Befehle erteilen die Berechtigung für verschiedene HTTP-API-Routen, eine Lambda-Funktion aufzurufen.

**Example Beispiel – Für die `$default`-Stufe und die `$default`-Route einer HTTP-API**  

```
aws lambda add-permission \
    --function-name my-function \
    --statement-id apigateway-invoke-permissions \
    --action lambda:InvokeFunction \
    --principal apigateway.amazonaws.com \
    --source-arn "arn:aws:execute-api:us-west-2:123456789012:api-id/\$default/\$default"
```

**Example Beispiel – Für die `prod`-Stufe und die `test`-Route einer HTTP-API**  

```
aws lambda add-permission \
    --function-name my-function \
    --statement-id apigateway-invoke-permissions \
    --action lambda:InvokeFunction \
    --principal apigateway.amazonaws.com \
    --source-arn "arn:aws:execute-api:us-west-2:123456789012:api-id/prod/*/test"
```

[Bestätigen Sie die Funktionsrichtlinie](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) auf der Registerkarte **Permissions (Berechtigungen)** der Lambda-Konsole.

Versuchen Sie erneut, Ihre API aufzurufen. Sie sollten die Antwort Ihrer Lambda-Funktion sehen.

# Fehlerbehebung bei Problemen mit HTTP-API JWT-Genehmigern
<a name="http-api-troubleshooting-jwt"></a>

Im Folgenden finden Sie Hinweise zur Fehlerbehebung bei Fehlern und Problemen, die bei der Verwendung von JSON Web Token (JWT) -Autorisierern mit HTTP auftreten können. APIs

## Problem: Meine API gibt zurüc `401 {"message":"Unauthorized"}`
<a name="http-api-troubleshooting-jwt.unauthorized"></a>

Überprüfen Sie den `www-authenticate`-Header in der Antwort von der API.

Der folgende Befehl verwendet `curl`, um eine Anforderung an eine API mit einem JWT-Genehmiger zu senden, der `$request.header.Authorization` als Identitätsquelle verwendet.

```
$curl -v -H "Authorization: token" https://api-id.execute-api.us-west-2.amazonaws.com/route
```

Die Antwort von der API enthält einen `www-authenticate`-Header.

```
...
< HTTP/1.1 401 Unauthorized
< Date: Wed, 13 May 2020 04:07:30 GMT
< Content-Length: 26
< Connection: keep-alive
< www-authenticate: Bearer scope="" error="invalid_token" error_description="the token does not have a valid audience"
< apigw-requestid: Mc7UVioPPHcEKPA=
<
* Connection #0 to host api-id.execute-api.us-west-2.amazonaws.com left intact
{"message":"Unauthorized"}}
```

In diesem Fall zeigt der `www-authenticate`-Header an, dass das Token nicht für eine gültige Zielgruppe ausgegeben wurde. Damit API Gateway eine Anfrage autorisieren kann, muss der `aud`- oder `client_id`-Claim von JWT mit einem der Audience-Einträge übereinstimmen, die für den Genehmiger konfiguriert sind. API Gateway validiert `client_id` nur dann, wenn `aud` nicht vorhanden ist. Wenn sowohl `aud` als auch `client_id` vorhanden sind, bewertet API Gateway `aud`. 

Sie können auch ein JWT dekodieren und überprüfen, ob es mit dem Aussteller, der Zielgruppe und den Bereichen übereinstimmt, die Ihre API benötigt. Die Website [jwt.io](https://jwt.io/) kann im Browser debuggen. JWTs Die OpenID Foundation führt eine [Liste von Bibliotheken, mit JWTs denen Sie arbeiten](https://openid.net/developers/jwt-jws-jwe-jwk-and-jwa-implementations/) können. 

Weitere Informationen zu JWT-Genehmigern finden Sie unter [Steuern Sie den Zugriff auf HTTP APIs mit JWT-Autorisierern in API Gateway](http-api-jwt-authorizer.md).