

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.

# Nutzungspläne und API-Schlüssel für REST APIs in API Gateway
<a name="api-gateway-api-usage-plans"></a>

Nachdem Sie Ihre erstellt, getestet und bereitgestellt haben APIs, können Sie API Gateway Gateway-Nutzungspläne verwenden, um sie Ihren Kunden als Produktangebote zur Verfügung zu stellen. Sie können Nutzungspläne und API-Schlüssel so konfigurieren, dass Kunden auf ausgewählte Pakete zugreifen können APIs, und damit beginnen, Anfragen auf der APIs Grundlage definierter Limits und Kontingente auf diese einzuschränken. Diese können auf API- oder API-Methodenebene festgelegt werden.

## Was sind Nutzungspläne und API-Schlüssel?
<a name="api-gateway-api-usage-plans-overview"></a>

Ein *Nutzungsplan* gibt an, wer Zugriff auf eine oder mehrere bereitgestellte API-Stufen und Methoden hat. Es wird optional die Zielanforderungsrate festgelegt, um die Drosselungsrate der Anfragen zu starten. Der Plan verwendet API-Schlüssel zur Identifizierung von API-Clients und derjenigen, welche auf die zugehörigen API-Stufen jedes Schlüssels zugreifen können. 

*API-Schlüssel* sind alphanumerische Zeichenfolgenwerte, mit denen Sie Anwendungsentwicklerkunden Zugriff auf Ihre API gewähren. Sie können API-Schlüssel zusammen mit [Lambda-Autorisierern](apigateway-use-lambda-authorizer.md), [IAM-Rollen](permissions.md) oder [Amazon Cognito verwenden, um den Zugriff auf Ihre zu kontrollieren](apigateway-integrate-with-cognito.md). APIs API Gateway kann API-Schlüssel für Sie erstellen. Alternativ können Sie Schlüssel aus einer [CSV-Datei](api-key-file-format.md) importieren. Sie können einen API-Schlüssel in API Gateway erstellen oder ihn aus einer externen Quelle in API Gateway importieren. Weitere Informationen finden Sie unter [API-Schlüssel für REST APIs in API Gateway einrichten](api-gateway-setup-api-keys.md). 

Ein API-Schlüssel verfügt über einen Namen und einen Wert. (Die Begriffe „API-Schlüssel” und „API-Schlüsselwert” werden häufig synonym verwendet.) Namen dürfen nicht mehr als 1024 Zeichen enthalten. Der Wert ist eine alphanumerische Zeichenfolge mit 20 bis 128 Zeichen, beispielsweise, `apikey1234abcdefghij0123456789`.

**Wichtig**  
API-Schlüsselwerte müssen eindeutig sein. Wenn Sie versuchen, zwei API-Schlüssel mit unterschiedlichen Namen und demselben Wert zu erstellen, hält API Gateway sie für ein- und denselben API-Schlüssel.  
Ein API-Schlüssel kann mehreren Nutzungsplänen zugeordnet werden. Ein Nutzungsplan kann mehreren Stufen zugeordnet werden. Ein bestimmter API-Schlüssel kann jedoch nur einem Nutzungsplan für jede Stufe Ihres API zugeordnet werden.

Ein *-Drosselungslimits* legt den Zielpunkt fest, an dem die Anforderungsdrosselung beginnen soll. Dies kann auf API- oder API-Methodenebene festgelegt werden.

Ein *Kontingentlimit* legt die maximale Zielanzahl der Anforderungen fest, die mit einem bestimmten API-Schlüssel innerhalb eines vorgegebenen Zeitraums übermittelt werden können. Sie können einzelnen API-Methoden so konfigurieren, dass der API-Schlüssel autorisiert werden muss (abhängig von der Konfiguration des Nutzungsplans).

Die Drosselungs- und Kontingentlimits gelten für Anforderungen einzelner API-Schlüssel, die über alle API-Stufen eines Nutzungsplans aggregiert werden.

**Anmerkung**  
Die -Drosselungsrate und die Kontingente der Nutzungspläne sind keine harten Grenzen und werden Best-Effort-Basis angewendet. In einigen Fällen können Kunden die von Ihnen festgelegten Kontingente überschreiten. Verlassen Sie sich nicht auf Nutzungsplankontingente oder Drosseln, um Kosten zu kontrollieren oder den Zugriff auf eine API zu blockieren. Überlegen Sie sich, [AWS Budgets](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) zu verwenden, um Kosten zu überwachen und [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html), um API-Anfragen zu verwalten.

## Bewährte Methoden für API-Schlüssel und Nutzungspläne
<a name="apigateway-usage-plans-best-practices"></a>

Im Folgenden finden Sie empfohlene bewährte Methoden für die Verwendung von API-Schlüsseln und Nutzungsplänen.

**Wichtig**  
Verwenden Sie keine API-Schlüssel zur Authentifizierung oder Autorisierung, um den Zugriff auf Ihre zu kontrollieren. APIs Wenn Sie mehrere APIs in einem Nutzungsplan haben, kann ein Benutzer mit einem gültigen API-Schlüssel für eine API in diesem Nutzungsplan auf *alle* APIs APIs in diesem Nutzungsplan zugreifen. Verwenden Sie für die Zugriffskontrolle auf Ihre API stattdessen eine IAM-Rolle, [einen Lambda-Genehmiger](apigateway-use-lambda-authorizer.md) oder einen [Amazon Cognito-Benutzerpool](apigateway-integrate-with-cognito.md).
Verwenden Sie API-Schlüssel, die API Gateway generiert. API-Schlüssel sollten keine vertraulichen Informationen enthalten. Clients übertragen sie normalerweise in Headern, die protokolliert werden können.
+ Wenn Sie ein Entwicklerportal verwenden, um Ihre zu veröffentlichen APIs, beachten Sie, dass alle Ihre Daten APIs in einem bestimmten Nutzungsplan von Kunden abonniert werden können, auch wenn Sie sie für Ihre Kunden nicht sichtbar gemacht haben.
+ In einigen Fällen können Kunden die von Ihnen festgelegten Kontingente überschreiten. Verlassen Sie sich nicht auf Nutzungspläne, um die Kosten zu kontrollieren. Ziehen Sie es in Betracht, [AWS Budgets](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) zu verwenden, um Kosten zu überwachen und [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html), um API-Anfragen zu verwalten.
+ Der Aktualisierungsvorgang nach dem Hinzufügen eines API-Schlüssels zu einem Nutzungsplan kann ein paar Minuten dauern.

# Auswählen einer API-Schlüsselquelle in API Gateway
<a name="api-gateway-api-key-source"></a>

Wenn Sie einen Nutzungsplan einer API zuordnen und API-Schlüssel bei API-Methoden aktivieren, muss jede eingehende API-Anfrage einen [API-Schlüssel](api-gateway-basic-concept.md#apigateway-definition-api-key) enthalten. API Gateway liest den Schlüssel und vergleicht ihn mit den Schlüsseln im Nutzungsplan. Wenn die Schlüssel übereinstimmen, werden die Anforderungen entsprechend der Anforderungslimits und des Kontingents des Plans von API Gateway gedrosselt. Andernfalls wird eine `InvalidKeyParameter`-Ausnahme ausgelöst. Dadurch erhält der Aufrufer eine `403 Forbidden`-Antwort.

Ihre API Gateway-API kann API-Schlüssel aus einer von zwei Quellen erhalten:

**`HEADER`**  
Sie verteilen API-Schlüssel an Ihre Kunden und erfordern die Übermittlung des API-Schlüssels als `X-API-Key`-Header bei jeder eingehenden Anforderung. 

**`AUTHORIZER`**  
Sie lassen einen Lambda-Genehmiger den API-Schlüssel im Rahmen der Autorisierungsantwort zurückgeben. Weitere Informationen zur Autorisierungsantwort finden Sie unter [Ausgabe von einem API-Gateway-Lambda-Genehmiger](api-gateway-lambda-authorizer-output.md).

**Anmerkung**  
Zu berücksichtigende bewährte Methoden finden Sie unter [Bewährte Methoden für API-Schlüssel und Nutzungspläne](api-gateway-api-usage-plans.md#apigateway-usage-plans-best-practices).

Das folgende Verfahren zeigt, wie Sie eine API-Schlüsselquelle für eine API auswählen.

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

**So wählen Sie eine API-Schlüsselquelle für eine API aus:**

1. Melden Sie sich bei der API Gateway-Konsole an.

1. Wählen Sie eine vorhandene API oder erstellen Sie eine neue.

1. Wählen Sie im Hauptnavigationsbereich **API-Einstellungen**. 

1. Wählen Sie im Abschnitt **API-Details** die Option **Bearbeiten** aus. 

1.  Wählen Sie unter **API-Schlüsselquelle** die Option `Header` oder `Authorizer` aus der Drop-down-Liste aus.

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

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

Mit dem folgenden [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html)Befehl wird eine API aktualisiert, sodass die API-Schlüsselquelle wie folgt festgelegt wird`AUTHORIZER`:

```
aws apigateway update-rest-api --rest-api-id 1234123412 --patch-operations op=replace,path=/apiKeySource,value=AUTHORIZER
```

Damit der Client einen API-Schlüssel übermittelt, setzen Sie im vorherigen Befehl `value` auf `HEADER`.

------
#### [ REST API ]

Wenn Sie eine API-Schlüsselquelle für eine API über die API Gateway-REST-API auswählen möchten, rufen Sie wie folgt [https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateRestApi.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateRestApi.html) auf:

```
PATCH /restapis/fugvjdxtri/ HTTP/1.1
Content-Type: application/json
Host: apigateway.us-east-1.amazonaws.com
X-Amz-Date: 20160603T205348Z
Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160603/us-east-1/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature={sig4_hash}

{
  "patchOperations" : [
    {
        "op" : "replace",
        "path" : "/apiKeySource",
        "value" : "HEADER"
    }
  ]
}
```

Damit ein Genehmiger einen API-Schlüssel zurückgibt, legen Sie den `value` in der vorherigen `AUTHORIZER`-Eingabe auf `patchOperations` fest.

------

# API-Schlüsseldateiformat in API Gateway
<a name="api-key-file-format"></a>

API Gateway kann API-Schlüssel aus externen Dateien im CSV-Format importieren und die Schlüssel dann einem oder mehreren Nutzungsplänen zuordnen. Die importierte Datei muss die Spalten `Name` und `Key` aufweisen. Bei Spaltenüberschriften wird z. B. die Groß-/Kleinschreibung nicht beachtet und die Spaltenreihenfolge ist beliebig: 

```
Key,name
apikey1234abcdefghij0123456789,MyFirstApiKey
```

Ein `Key`-Wert muss zwischen 20 und 128 Zeichen lang sein. Ein `Name`-Wert darf nicht mehr als 1024 Zeichen enthalten. 

Eine API-Schlüsseldatei kann z. B. auch die Spalten `Description`, `Enabled`oder `UsagePlanIds` aufweisen: 

```
Name,key,description,Enabled,usageplanIds
MyFirstApiKey,apikey1234abcdefghij0123456789,An imported key,TRUE,c7y23b
```

Wenn ein Schlüssel mit mehr als einem Nutzungsplan verknüpft ist, ist der `UsagePlanIds` Wert eine durch Kommas getrennte Zeichenfolge des Nutzungsplans IDs, die in doppelte oder einfache Anführungszeichen eingeschlossen ist, wie im folgenden Beispiel gezeigt:

```
Enabled,Name,key,UsageplanIds
true,MyFirstApiKey,apikey1234abcdefghij0123456789,"c7y23b,glvrsr"
```

Nicht erkannte Spalten sind zulässig, werden aber ignoriert. Der Standardwert ist eine leere Zeichenfolge oder ein boolescher `true`-Wert. 

Derselbe API-Schlüssel kann mehrmals importiert werden, dabei überschreibt die neueste Version die vorherige. Zwei API-Schlüssel sind identisch, wenn sie den gleichen `key`-Wert haben. 

**Anmerkung**  
Zu berücksichtigende bewährte Methoden finden Sie unter [Bewährte Methoden für API-Schlüssel und Nutzungspläne](api-gateway-api-usage-plans.md#apigateway-usage-plans-best-practices).

# API-Schlüssel für REST APIs in API Gateway einrichten
<a name="api-gateway-setup-api-keys"></a>

Um API-Schlüssel einzurichten, gehen Sie wie folgt vor:
+ Konfigurieren Sie API-Methoden, um einen API-Schlüssel erforderlich zu machen.
+ Erstellen oder importieren Sie einen API-Schlüssel für die API in einer Region.

Vor der Einrichtung von API-Schlüsseln müssen Sie eine API erstellt haben und diese in einer Stufe bereitgestellt haben. Nach der Erstellung eines API-Schlüsselwerts kann dieser nicht geändert werden.

Anweisungen zum Erstellen und Bereitstellen einer API mithilfe der API Gateway-Konsole finden Sie unter [Entwickeln Sie REST APIs in API Gateway](rest-api-develop.md) und [REST-APIs in API Gateway bereitstellen](how-to-deploy-api.md).

Nach dem Erstellen eines API-Schlüssels muss dieser mit einem Nutzungsplan verknüpft werden. Weitere Informationen finden Sie unter [Nutzungspläne für REST APIs in API Gateway einrichten](api-gateway-create-usage-plans.md).

**Anmerkung**  
Zu berücksichtigende bewährte Methoden finden Sie unter [Bewährte Methoden für API-Schlüssel und Nutzungspläne](api-gateway-api-usage-plans.md#apigateway-usage-plans-best-practices).

**Topics**
+ [

## Festlegen der Erforderlichkeit eines API-Schlüssels für eine Methode
](#api-gateway-usage-plan-configure-apikey-on-method)
+ [

## Erstellen Sie einen API-Schlüssel
](#api-gateway-usage-plan-create-apikey)
+ [

## Importieren von API-Schlüsseln
](#api-gateway-usage-pan-import-apikey)

## Festlegen der Erforderlichkeit eines API-Schlüssels für eine Methode
<a name="api-gateway-usage-plan-configure-apikey-on-method"></a>

Im folgenden Verfahren wird beschrieben, wie Sie festlegen, dass für eine API-Methode ein API-Schlüssel erforderlich ist.

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

**So konfigurieren Sie, dass für eine API-Methode ein API-Schlüssel erforderlich ist**

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 REST-API aus.

1. Klicken Sie im Hauptnavigationsbereich von API Gateway auf **Resources (Ressourcen)**.

1. Erstellen Sie unter **Resources** eine neue Methode oder wählen Sie eine vorhandene aus.

1. Wählen Sie auf der Registerkarte **Methodenanfrage** unter **Methodenanfrage-Einstellungen** die Option **Bearbeiten** aus.  
![\[Einen API-Schlüssel einer Methode hinzufügen\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/api-gateway-new-console-add-key-to-method.png)

1. Wählen Sie **API-Schlüssel erforderlich** aus.

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

1. Stellen Sie die API bereit (oder erneut bereit), damit die Änderung wirksam wird.

Wenn für die Option **API-Schlüssel erforderlich** der Wert `false` festgelegt ist und Sie die vorherigen Schritte nicht ausführen, wird keiner der API-Schlüssel, die einer API-Stufe zugeordnet sind, für diese Methode verwendet.

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

Der folgende [put-method](https://docs.aws.amazon.com/cli/latest/reference/apigateway/put-method.html)-Befehl erstellt eine `PUT`-Methode, die einen API-Schlüssel erfordert:

```
aws apigateway put-method \
    --rest-api-id 1234123412 \
    --resource-id a1b2c3 \
    --http-method PUT \
    --authorization-type "NONE" \
    --api-key-required
```

Der folgende [update-method](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-method.html)-Befehl aktualisiert eine vorhandene Methode, sodass ein API-Schlüssel erforderlich ist:

```
aws apigateway update-method \
    --rest-api-id 1234123412 \
    --resource-id a1b2c3 \
    --http-method PUT \
    --patch-operations op="replace",path="/apiKeyRequired",value="true"
```

------
#### [ REST API ]

Führen Sie einen der folgenden Schritte aus, damit für eine Methode ein API-Schlüssel erforderlich ist:
+ Rufen Sie [https://docs.aws.amazon.com/apigateway/latest/api/API_PutMethod.html](https://docs.aws.amazon.com/apigateway/latest/api/API_PutMethod.html) auf, um eine Methode zu erstellen. Legen Sie `apiKeyRequired` in der Anforderungsnutzlast auf `true` fest.
+ Rufen Sie [https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateMethod.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateMethod.html) auf, um `apiKeyRequired` auf `true` zu setzen.

------

## Erstellen Sie einen API-Schlüssel
<a name="api-gateway-usage-plan-create-apikey"></a>

Im folgenden Verfahren sehen Sie, wie Sie einen privaten API-Schlüssel erstellen. Wenn Sie Ihren API-Schlüssel importieren möchten, überspringen Sie diesen Schritt.

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

**So erstellen Sie einen API-Schlüssel**

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 REST-API aus.

1. Wählen Sie im Hauptnavigationsbereich von API Gateway **API-Schlüssel**.

1. Klicken Sie auf **API-Schlüssel erstellen**.  
![\[Erstellen von API-Schlüsseln für Nutzungspläne\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/api-gateway-new-console-usage-plan-keys-choose-create-api-key-from-actions-menu.png)

1. Geben Sie unter **Name** einen Namen ein.

1. (Optional) Geben Sie unter **Description (Beschreibung)** eine Beschreibung ein.

1. Wählen Sie für **API-Schlüssel** die Option **Automatisch generieren**, damit API Gateway den Schlüsselwert generiert, oder wählen Sie **Benutzerdefiniert**, um Ihren eigenen Schlüsselwert zu erstellen.

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

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

Der folgende [create-api-key](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-api-key.html)Befehl erstellt einen API-Schlüssel:

```
 aws apigateway create-api-key \
    --name 'Dev API key' \
    --description 'API key for Devs' \
    --enabled
```

------
#### [ REST API ]

Rufen Sie [https://docs.aws.amazon.com/apigateway/latest/api/API_CreateApiKey.html](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateApiKey.html) auf, um einen API-Schlüssel zu erstellen.

------

## Importieren von API-Schlüsseln
<a name="api-gateway-usage-pan-import-apikey"></a>

Das folgende Verfahren beschreibt, wie Sie API-Schlüssel importieren. Wenn Sie bereits einen API-Schlüssel erstellt haben, überspringen Sie diesen Schritt.

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

**So importieren Sie API-Schlüssel**

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 REST-API aus.

1. Wählen Sie im Hauptnavigationsbereich **API-Schlüssel**.

1. Wählen das im Dropdown-Menü **Aktionen** und dann die Option **API-Schlüssel importieren**. 

1. Wählen Sie zum Laden einer CSV-Datei **Datei auswählen** aus. Sie können die Schlüssel auch im Texteditor eingeben. Weitere Informationen zum Dateiformat finden Sie unter [API-Schlüsseldateiformat in API Gateway](api-key-file-format.md).

1. Wählen Sie **Fehler bei Warnungen** aus, damit der Import im Falle eines Fehlers angehalten wird, oder wählen Sie **Warnungen ignorieren** aus, damit gültige Schlüssel auch bei einem auftretenden Fehler importiert werden.

1. Wählen Sie **Import**, um Ihre API-Schlüssel zu importieren.

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

Der folgende [import-api-keys](https://docs.aws.amazon.com/cli/latest/reference/apigateway/import-api-keys.html)Befehl importiert einen API-Schlüssel:

```
aws apigateway import-api-key \
    a--body fileb://keys.csv \
    --format csv
```

------
#### [ REST API ]

Rufen Sie [https://docs.aws.amazon.com/apigateway/latest/api/API_ImportApiKeys.html](https://docs.aws.amazon.com/apigateway/latest/api/API_ImportApiKeys.html) auf, um einen API-Schlüssel aus einer Datei zu importieren. Weitere Informationen zum Dateiformat finden Sie unter [API-Schlüsseldateiformat in API Gateway](api-key-file-format.md).

------

Sie können den Wert des neuen API-Schlüssels nicht ändern. Nachdem Sie Ihre API erstellt haben, konfigurieren Sie einen Nutzungsplan. Weitere Informationen finden Sie unter [Nutzungspläne für REST APIs in API Gateway einrichten](api-gateway-create-usage-plans.md).

# Nutzungspläne für REST APIs in API Gateway einrichten
<a name="api-gateway-create-usage-plans"></a>

Bevor Sie einen Nutzungsplan erstellen, stellen Sie sicher, dass Sie Ihre API-Schlüssel eingerichtet haben. Weitere Informationen finden Sie unter [API-Schlüssel für REST APIs in API Gateway einrichten](api-gateway-setup-api-keys.md).

**Topics**
+ [

## Migrieren Ihrer API auf Standard-Nutzungspläne (falls erforderlich)
](#api-gateway-usage-plan-migrate-to-default)
+ [

## Erstellen eines Nutzungsplans
](#api-gateway-usage-plan-create)
+ [

## Hinzufügen einer Stufe zu einem Nutzungsplan
](#api-gateway-usage-plan-add-stage)
+ [

## Hinzufügen eines API-Schlüssels zu einem Nutzungsplan
](#api-gateway-usage-plan-add-key)

## Migrieren Ihrer API auf Standard-Nutzungspläne (falls erforderlich)
<a name="api-gateway-usage-plan-migrate-to-default"></a>

Wenn Sie API Gateway *nach* Einführung der Nutzungsplanfunktionalität (11. August 2016) verwenden, sind für Sie automatisch Nutzungspläne in allen unterstützten Regionen aktiviert.

Wenn Sie API Gateway vor diesem Datum eingeführt haben, müssen Sie möglicherweise auf Standardnutzungspläne migrieren. Die Option **Nutzungspläne aktivieren** wird angezeigt, bevor Sie zum ersten Mal Nutzungspläne in der ausgewählten Region verwenden. Durch die Aktivierung dieser Option werden Standardnutzungspläne für jede einzelne API-Stufe erstellt, der vorhandene API-Schlüssel zugeordnet sind. Im Standard-Nutzungsplan sind anfänglich keine Drossel- oder Kontingentlimits festgelegt, und die Zuordnungen zwischen den API-Schlüsseln und API-Stufen werden in die Nutzungspläne kopiert. Das API-Verhalten bleibt unverändert. Sie müssen jedoch die [https://docs.aws.amazon.com/apigateway/latest/api/API_UsagePlan.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UsagePlan.html)`apiStages`Eigenschaft verwenden, um die angegebenen API-Stufenwerte (`apiId`und`stage`) den enthaltenen API-Schlüsseln (via [https://docs.aws.amazon.com/apigateway/latest/api/API_UsagePlanKey.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UsagePlanKey.html)) zuzuordnen, anstatt die [ApiKey](https://docs.aws.amazon.com/apigateway/latest/api/API_ApiKey.html)`stageKeys`Eigenschaft zu verwenden.

Um zu überprüfen, ob Sie bereits auf Standardnutzungspläne migriert haben, führen Sie den CLI-Befehl [https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-account.html](https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-account.html) aus. In der Befehlsausgabe enthält die `features`-Liste den Eintrag `"UsagePlans"`, wenn Nutzungspläne aktiviert sind.

Sie können Ihre Nutzungspläne auch AWS CLI wie folgt APIs zu den Standard-Nutzungsplänen migrieren:

**Um zu Standard-Nutzungsplänen zu migrieren, verwenden Sie AWS CLI**

1. Rufen Sie diesen CLI-Befehl auf: [https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-account.html](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-account.html).

1. Verwenden Sie für den `cli-input-json`-Parameter das folgende JSON-Konstrukt:

   ```
   [
       {
           "op": "add",
           "path": "/features",
           "value": "UsagePlans"
       }
   ]
   ```

## Erstellen eines Nutzungsplans
<a name="api-gateway-usage-plan-create"></a>

Im folgenden Verfahren wird das Erstellen eines Nutzungsplans beschrieben.

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

**So erstellen Sie einen Nutzungsplan**

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 im Hauptnavigationsbereich von API Gateway **Nutzungspläne** und dann **Nutzungspläne erstellen**.  
![\[Entitäten des API-Nutzungsplans\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/api-gateway-new-console-usage-plan-keys-create-setup.png)

1. Geben Sie unter **Name** einen Namen ein.

1.  (Optional) Geben Sie unter **Description (Beschreibung)** eine Beschreibung ein. 

1. Standardmäßig ermöglichen Nutzungspläne die Drosselung. Geben Sie eine **Rate** und einen **Burst**-Wert für Ihren Nutzungsplan ein. Wählen Sie **Drosselung**, um die Drosselung auszuschalten. 

1. Standardmäßig ermöglichen Nutzungspläne ein Kontingent für einen bestimmten Zeitraum. Geben Sie unter **Anfragen** die Gesamtzahl der Anfragen ein, die ein Benutzer im Zeitraum Ihres Nutzungsplans stellen kann. Wählen Sie **Kontingent**, um das Kontingent zu deaktivieren.

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

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

Mit dem folgenden [create-usage-plan](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-usage-plan.html)Befehl wird ein Nutzungsplan erstellt, der zu Beginn des Monats zurückgesetzt wird:

```
aws apigateway create-usage-plan \
    --name "New Usage Plan" \
    --description "A new usage plan" \
    --throttle burstLimit=10,rateLimit=5 \
    --quota limit=500,offset=0,period=MONTH
```

------
#### [ REST API ]

Rufen Sie [https://docs.aws.amazon.com/apigateway/latest/api/API_CreateUsagePlan.html](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateUsagePlan.html) auf, um einen Nutzungsplan zu erstellen.

------

## Hinzufügen einer Stufe zu einem Nutzungsplan
<a name="api-gateway-usage-plan-add-stage"></a>

Das folgende Verfahren beschreibt, wie Sie eine Stufe zu einem Nutzungsplan hinzufügen.

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

**So fügen Sie dem Nutzungsplan eine Stufe hinzu**

1. Wählen Sie Ihren Nutzungsplan aus.

1.  Wählen Sie auf der Registerkarte **Zugeordnete Stufen** die Option **Stufe hinzufügen** aus.  
![\[Fügen Sie einem Nutzungsplan eine API-Stufe hinzu.\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/api-gateway-new-console-usage-plan-keys-create-add-stage.png)

1.  Wählen Sie für **API** eine API aus. 

1.  Wählen Sie für **Stufe** eine Stufe aus. 

1. (Optional) Gehen Sie wie folgt vor, um die Drosselung auf Methodenebene zu aktivieren:

   1. Wählen Sie **Drosselung auf Methodenebene** und anschließend **Methode hinzufügen** aus.

   1. Wählen Sie unter **Ressource** eine Ressource aus Ihrer API aus. 

   1. Wählen Sie unter **Methode** eine Methode aus Ihrer API aus. 

   1.  Geben Sie eine **Rate** und einen **Burst**-Wert für Ihren Nutzungsplan ein. 

1. Wählen Sie **Zu Nutzungsplan hinzufügen** aus.

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

Der folgende [update-usage-plan](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-usage-plan.html)Befehl fügt einem Nutzungsplan die `Prod` Phase einer API hinzu:

```
aws apigateway update-usage-plan \
    --usage-plan-id abc123 \
    --patch-operations op="add",path="/apiStages",value="a1b1c2:Prod"
```

------
#### [ REST API ]

Rufen Sie [https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateUsagePlan.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateUsagePlan.html) auf, um einen Nutzungsplan zu aktualisieren.

------

## Hinzufügen eines API-Schlüssels zu einem Nutzungsplan
<a name="api-gateway-usage-plan-add-key"></a>

Das folgende Verfahren zeigt, wie Sie einen API-Schlüssel zu einem Nutzungsplan hinzufügen.

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

**So fügen Sie dem Nutzungsplan einen Schlüssel hinzu**

1. Wählen Sie auf der Registerkarte **Zugeordnete API-Schlüssel** die Option **API-Schlüssel hinzufügen** aus.   
![\[Entitäten des API-Nutzungsplans\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/api-gateway-new-console-usage-plan-keys-create-add-key.png)

1. 

   1.  Um Ihrem Nutzungsplan einen vorhandenen Schlüssel zuzuordnen, wählen Sie **Bestehenden Schlüssel hinzufügen** und wählen Sie dann Ihren vorhandenen Schlüssel aus dem Drop-down-Menü aus.

   1. Um einen neuen API-Schlüssel zu erstellen, wählen Sie **Neuen Schlüssel erstellen und hinzufügen** aus und erstellen Sie dann einen neuen Schlüssel. Weitere Informationen zum Erstellen eines neuen Schlüssels finden Sie unter [Erstellen Sie einen API-Schlüssel](api-gateway-setup-api-keys.md#api-gateway-usage-plan-create-apikey).

1. Wählen Sie **API-Schlüssel hinzufügen**.

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

Der folgende [create-usage-plan-key](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-usage-plan-key.html)Befehl ordnet einen vorhandenen API-Schlüssel einem Nutzungsplan zu:

```
aws apigateway create-usage-plan-key \
    --usage-plan-id a1b2c3 \
    --key-type "API_KEY" \
    --key-id aaa111bbb
```

------
#### [ REST API ]

Rufen Sie [https://docs.aws.amazon.com/apigateway/latest/api/API_CreateUsagePlanKey.html](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateUsagePlanKey.html) auf, um einen vorhandenen API-Schlüssel mit einem Nutzungsplan zu verknüpfen.

Sie können Ihre APIs Schlüssel auch direkt einem Nutzungsplan zuordnen, wenn Sie sie importieren. Rufen Sie [https://docs.aws.amazon.com/apigateway/latest/api/API_ImportApiKeys.html](https://docs.aws.amazon.com/apigateway/latest/api/API_ImportApiKeys.html) auf und fügen Sie einen oder mehrere API-Schlüssel direkt zum angegebenen Nutzungsplan hinzu. Die Anforderungsnutzlast sollte API-Schlüsselwerte, die zugehörige Nutzungsplan-ID, boolesche Flags (um anzugeben, dass die Schlüssel für den Nutzungsplan aktiviert sind) und ggf. Namen und Beschreibungen der API-Schlüssel enthalten. 

Im folgenden Beispiel der `apikey:import`-Anforderung werden drei API-Schlüssel (identifiziert durch `key`, `name` und `description`) zu einem Nutzungsplan (identifiziert durch `usageplanIds`) hinzugefügt: 

```
POST /apikeys?mode=import&format=csv&failonwarnings=fase HTTP/1.1
Host: apigateway.us-east-1.amazonaws.com
Content-Type: text/csv
Authorization: ...

key,name, description, enabled, usageplanIds
abcdef1234ghijklmnop8901234567, importedKey_1, firstone,  tRuE, n371pt 
abcdef1234ghijklmnop0123456789, importedKey_2, secondone, TRUE, n371pt
abcdef1234ghijklmnop9012345678, importedKey_3,          , true, n371pt
```

Als Ergebnis werden drei `UsagePlanKey`-Ressourcen erstellt und zu `UsagePlan` hinzugefügt.

Auf diese Weise können Sie auch API-Schlüssel zu mehreren Nutzungsplänen hinzufügen. Dazu ändern Sie jeden `usageplanIds`-Spaltenwert in eine CSV-Zeichenfolge, die die ausgewählten Nutzungsplan-IDs in Anführungszeichen angibt (`"n371pt,m282qs"` oder `'n371pt,m282qs'`).

------

**Anmerkung**  
Ein API-Schlüssel kann mehreren Nutzungsplänen zugeordnet werden. Ein Nutzungsplan kann mehreren Stufen zugeordnet werden. Ein bestimmter API-Schlüssel kann jedoch nur einem Nutzungsplan für jede Stufe Ihres API zugeordnet werden.

# Pflegen Sie einen Nutzungsplan für REST APIs in API Gateway
<a name="api-gateway-usage-plan-manage-usage"></a>

Im Rahmen der Nutzungsplanverwaltung werden verwendete und verbleibende Kontingente in einem bestimmten Zeitraum überwacht und die verbleibenden Kontingente gegebenenfalls um eine angegebene Menge erhöht. In den folgenden Verfahren wird beschrieben, wie Sie Kontingente überwachen.

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

**So überwachen Sie verwendete und verbleibende Kontingente**

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

1. Klicken Sie im Hauptnavigationsbereich von API Gateway auf **Nutzungspläne**.

1. Wählen Sie einen Nutzungsplan aus.

1. Wählen Sie die Registerkarte **Zugeordnete API-Schlüssel**, um die Anzahl der für den Zeitraum verbleibenden Anfragen für jeden Schlüssel anzuzeigen.

1. (Optional) Wählen Sie **Nutzungsdaten exportieren** und dann ein **Startdatum** und ein **Enddatum** aus. Wählen Sie dann **JSON** oder **CSV** als Exportdatenformat und anschließend **Exportieren** aus.

   Im folgenden Beispiel wird eine exportierte Datei angezeigt. 

   ```
   {
       "px1KW6...qBazOJH": [
         [
           0,
           5000
         ],
         [
           0,
           5000
         ],
         [
           0,
           10
         ]
       ]
     }
   ```

   Die Nutzungsdaten im Beispiel geben die tägliche Nutzung eines API-Clients, der vom API-Schlüssel (`px1KW6...qBazOJH`) identifiziert wird, zwischen dem 1. August 2016 und dem 3. August 2016 an. In den täglichen Nutzungsdaten werden jeweils die verwendeten und die verbleibenden Kontingente angezeigt. In diesem Beispiel hat der Abonnent die ihm zugeordneten Kontingente gar nicht verwendet und der API-Besitzer oder Administrator hat das verbleibende Kontingent für den dritten Tag von 5.000 auf 10 gesenkt.

In den folgenden Verfahren wird beschrieben, wie Sie Kontingente ändern.

**So erhöhen Sie verbleibende Kontingente**

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

1. Klicken Sie im Hauptnavigationsbereich von API Gateway auf **Nutzungspläne**.

1. Wählen Sie einen Nutzungsplan aus.

1. Wählen Sie die Registerkarte **Zugeordnete API-Schlüssel**, um die Anzahl der für den Zeitraum verbleibenden Anfragen für jeden Schlüssel anzuzeigen.

1. Wählen Sie einen API-Schlüssel und dann **Nutzungserweiterung gewähren** aus.

1. Geben Sie eine Zahl für das Kontingent **Verbleibende Anforderungen** an. Sie können die Anzahl der Umbenennungsanfragen erhöhen oder die Anzahl der verbleibenden Anfragen für den Zeitraum Ihres Nutzungsplans verringern. 

1. Wählen Sie **Kontingent aktualisieren** aus.

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

In den folgenden [update-usage-plan](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-usage-plan.html)Beispielen werden die Drosselungseinstellungen auf Methodenebene in einem Nutzungsplan hinzugefügt, entfernt oder geändert.

**Anmerkung**  
Achten Sie darauf, `us-east-1` auf den korrekten Regionswert für Ihre API zu ändern.

Um ein Ratenlimit zur Drosselung einer individuellen Ressource und Methode hinzuzufügen oder zu ersetzen:

```
aws apigateway --region us-east-1 update-usage-plan --usage-plan-id planId --patch-operations op="replace",path="/apiStages/apiId:stage/throttle/resourcePath/httpMethod/rateLimit",value="0.1"
```

Um ein Burst-Limit zur Drosselung einer individuellen Ressource und Methode hinzuzufügen oder zu ersetzen:

```
aws apigateway --region us-east-1 update-usage-plan --usage-plan-id planId --patch-operations op="replace",path="/apiStages/apiId:stage/throttle/resourcePath/httpMethod/burstLimit",value="1"
```

Um die Drosseleinstellungen auf Methodenebene für eine individuelle Ressource und Methode zu entfernen:

```
aws apigateway --region us-east-1 update-usage-plan --usage-plan-id planId --patch-operations op="remove",path="/apiStages/apiId:stage/throttle/resourcePath/httpMethod",value=""
```

Um alle Drosseleinstellungen einer API auf Methodenebene zu entfernen:

```
aws apigateway --region us-east-1 update-usage-plan --usage-plan-id planId --patch-operations op="remove",path="/apiStages/apiId:stage/throttle ",value=""
```

Hier sehen Sie ein Beispiel unter Verwendung der Pet Store-Beispiel-API:

```
aws apigateway --region us-east-1 update-usage-plan --usage-plan-id planId --patch-operations op="replace",path="/apiStages/apiId:stage/throttle",value='"{\"/pets/GET\":{\"rateLimit\":1.0,\"burstLimit\":1},\"//GET\":{\"rateLimit\":1.0,\"burstLimit\":1}}"'
```

------
#### [ REST API ]

Rufen Sie [https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateUsagePlan.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateUsagePlan.html) auf, um einen Nutzungsplan zu verwalten.

------

# Erstellen und konfigurieren Sie API-Schlüssel und Nutzungspläne mit CloudFormation
<a name="api-key-usage-plan-cfn"></a>

 Sie können verwenden CloudFormation , um API-Schlüssel für API-Methoden vorzuschreiben und einen Nutzungsplan für eine API zu erstellen. Die CloudFormation Beispielvorlage macht Folgendes:
+ Mit den Methoden `GET` und `POST` wird eine API-Gateway-API erstellt.
+ Erfordert einen API-Schlüssel für die Methoden `GET` und `POST`. Diese API ruft Schlüssel aus dem `X-API-KEY`-Header jeder eingehenden Anfrage ab. 
+ Erstellt einen API-Schlüssel
+ Es wird ein Nutzungsplan erstellt, um ein monatliches Kontingent von 1 000 Anfragen pro Monat, ein Limit bei der Drosselungsrate von 100 Anfragen pro Sekunde und ein Drosselungs-Burst-Limit von 200 Anfragen pro Sekunde festzulegen. 
+ Gibt für die `GET`-Methode ein Limit von 50 Anfragen pro Sekunde für die Drosselungsrate auf Methodenebene und ein Burst-Limit für die Drosselung auf Methodenebene von 100 Anfragen pro Sekunde an.
+ Ordnet dem Nutzungsplan API-Stufen und API-Schlüssel zu 

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  StageName:
    Type: String
    Default: v1
    Description: Name of API stage.
  KeyName:
    Type: String
    Default: MyKeyName
    Description: Name of an API key
Resources:
  Api:
    Type: 'AWS::ApiGateway::RestApi'
    Properties:
      Name: keys-api
      ApiKeySourceType: HEADER
  PetsResource:
    Type: 'AWS::ApiGateway::Resource'
    Properties:
      RestApiId: !Ref Api
      ParentId: !GetAtt Api.RootResourceId
      PathPart: 'pets'
  PetsMethodGet:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      RestApiId: !Ref Api
      ResourceId: !Ref PetsResource
      HttpMethod: GET
      ApiKeyRequired: true
      AuthorizationType: NONE
      Integration:
        Type: HTTP_PROXY
        IntegrationHttpMethod: GET
        Uri: http://petstore-demo-endpoint.execute-api.com/petstore/pets/
  PetsMethodPost:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      RestApiId: !Ref Api
      ResourceId: !Ref PetsResource
      HttpMethod: POST
      ApiKeyRequired: true
      AuthorizationType: NONE
      Integration:
        Type: HTTP_PROXY
        IntegrationHttpMethod: GET
        Uri: http://petstore-demo-endpoint.execute-api.com/petstore/pets/
  ApiDeployment:
    Type: 'AWS::ApiGateway::Deployment'
    DependsOn:
      - PetsMethodGet
    Properties:
      RestApiId: !Ref Api
      StageName: !Sub '${StageName}'
  UsagePlan:
    Type: AWS::ApiGateway::UsagePlan
    DependsOn:
      - ApiDeployment
    Properties:
      Description: Example usage plan with a monthly quota of 1000 calls and method-level throttling for /pets GET 
      ApiStages:
        - ApiId: !Ref Api
          Stage: !Sub '${StageName}'
          Throttle:
            "/pets/GET": 
              RateLimit: 50.0
              BurstLimit: 100
      Quota:
        Limit: 1000
        Period: MONTH
      Throttle:
        RateLimit: 100.0
        BurstLimit: 200
      UsagePlanName: "My Usage Plan"
  ApiKey:
    Type: AWS::ApiGateway::ApiKey
    Properties: 
      Description: API Key
      Name: !Sub '${KeyName}'
      Enabled: True
  UsagePlanKey:
    Type: AWS::ApiGateway::UsagePlanKey
    Properties:
      KeyId: !Ref ApiKey
      KeyType: API_KEY
      UsagePlanId: !Ref UsagePlan
Outputs:
  ApiRootUrl:
    Description: Root Url of the API
    Value: !Sub 'https://${Api}.execute-api.${AWS::Region}.amazonaws.com/${StageName}'
```

# Konfigurieren einer Methode zur Verwendung von API-Schlüsseln mit einer OpenAPI-Definition
<a name="api-key-usage-plan-oas"></a>

Mithilfe einer OpenAPI-Definition können Sie vorgeben, dass API-Schlüssel für eine Methode verwendet werden müssen.

Erstellen Sie für jede Methode ein Sicherheitsanforderungsobjekt, das einen API-Schlüssel zum Aufrufen dieser Methode abfragt. Anschließend geben Sie `api_key` in der Sicherheitsdefinition vor. Nachdem Sie Ihre API erstellt haben fügen Sie die neue API-Stufe Ihrem Nutzungsplan hinzu.

Im folgenden Beispiel wird eine API erstellt und ein API-Schlüssel für die `GET`- und `POST`-Methoden abgefragt:

------
#### [ OpenAPI 2.0 ]

```
{
  "swagger" : "2.0",
  "info" : {
    "version" : "2024-03-14T20:20:12Z",
    "title" : "keys-api"
  },
  "basePath" : "/v1",
  "schemes" : [ "https" ],
  "paths" : {
    "/pets" : {
      "get" : {
        "responses" : { },
        "security" : [ {
          "api_key" : [ ]
        } ],
        "x-amazon-apigateway-integration" : {
          "type" : "http_proxy",
          "httpMethod" : "GET",
          "uri" : "http://petstore-demo-endpoint.execute-api.com/petstore/pets/",
          "passthroughBehavior" : "when_no_match"
        }
      },
      "post" : {
        "responses" : { },
        "security" : [ {
          "api_key" : [ ]
        } ],
        "x-amazon-apigateway-integration" : {
          "type" : "http_proxy",
          "httpMethod" : "GET",
          "uri" : "http://petstore-demo-endpoint.execute-api.com/petstore/pets/",
          "passthroughBehavior" : "when_no_match"
        }
      }
    }
  },
  "securityDefinitions" : {
    "api_key" : {
      "type" : "apiKey",
      "name" : "x-api-key",
      "in" : "header"
    }
  }
}
```

------
#### [ OpenAPI 3.0 ]

```
{
  "openapi" : "3.0.1",
  "info" : {
    "title" : "keys-api",
    "version" : "2024-03-14T20:20:12Z"
  },
  "servers" : [ {
    "url" : "{basePath}",
    "variables" : {
      "basePath" : {
        "default" : "v1"
      }
    }
  } ],
  "paths" : {
    "/pets" : {
      "get" : {
        "security" : [ {
          "api_key" : [ ]
        } ],
        "x-amazon-apigateway-integration" : {
          "httpMethod" : "GET",
          "uri" : "http://petstore-demo-endpoint.execute-api.com/petstore/pets/",
          "passthroughBehavior" : "when_no_match",
          "type" : "http_proxy"
        }
      },
      "post" : {
        "security" : [ {
          "api_key" : [ ]
        } ],
        "x-amazon-apigateway-integration" : {
          "httpMethod" : "GET",
          "uri" : "http://petstore-demo-endpoint.execute-api.com/petstore/pets/",
          "passthroughBehavior" : "when_no_match",
          "type" : "http_proxy"
        }
      }
    }
  },
  "components" : {
    "securitySchemes" : {
      "api_key" : {
        "type" : "apiKey",
        "name" : "x-api-key",
        "in" : "header"
      }
    }
  }
}
```

------

# Nutzungspläne für REST APIs in API Gateway testen
<a name="api-gateway-usage-plan-test-with-postman"></a>

Verwenden wir als Beispiel die PetStore API, die in erstellt wurde[Tutorial: Erstellen einer REST-API durch Importieren eines Beispiels](api-gateway-create-api-from-example.md). Die API ist für die Verwendung des API-Schlüssels konfigurier `Hiorr45VR...c4GJc`. In den folgenden Schritten wird das Testen eines Nutzungsplans beschrieben.

**So testen Sie den Nutzungsplan**
+ Führen Sie eine `GET`-Anforderung für die Ressource "Pets" (`/pets`) mit den Abfrageparametern `?type=...&page=...` der API (zum Beispiel `xbvxlpijch`) in einem Nutzungsplan aus:

  ```
  GET /testStage/pets?type=dog&page=1 HTTP/1.1
  x-api-key: Hiorr45VR...c4GJc
  Content-Type: application/x-www-form-urlencoded
  Host: xbvxlpijch.execute-api.ap-southeast-1.amazonaws.com
  X-Amz-Date: 20160803T001845Z
  Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160803/ap-southeast-1/execute-api/aws4_request, SignedHeaders=content-type;host;x-amz-date;x-api-key, Signature={sigv4_hash}
  ```
**Anmerkung**  
Sie müssen diese Anforderung an die Komponente `execute-api` von API Gateway übermitteln und den erforderlichen API-Schlüssel (zum Beispiel `Hiorr45VR...c4GJc`) im entsprechenden `x-api-key`-Header bereitstellen.

  Bei einer erfolgreichen Antwort wird der Statuscode `200 OK` sowie eine Nutzlast mit den angeforderten Ergebnissen aus dem Backend zurückgegeben. Falls Sie den `x-api-key`-Header nicht oder mit einem falschen Schlüssel gesetzt haben, erhalten Sie als Antwort die Meldung `403 Forbidden`. Wenn Sie allerdings nicht festgelegt haben, dass für die Methode ein API-Schlüssel erforderlich ist, erhalten Sie in jedem Fall die Antwort `200 OK` – unabhängig davon, ob der `x-api-key`-Header korrekt oder fehlerhaft eingerichtet wurde – und die Ablehnungs- und Kontingentlimits werden ignoriert. 

  Im Falle, dass API Gateway aufgrund eines internen Fehlers die im Nutzungsplan enthaltenen Drosselungs- und Kontingentlimits für diese Anforderung nicht erzwingen kann, führt API Gateway die Anforderung ohne Berücksichtigung der Limits aus. Es wird jedoch die Fehlermeldung CloudWatch in `Usage Plan check failed due to an internal error` protokolliert. Diese gelegentlich auftretenden Fehler können Sie ignorieren. 

# Aufrufen einer Methode mithilfe eines API-Schlüssels
<a name="api-gateway-api-key-call"></a>

Abhängig von dem von Ihnen gewählten API-Schlüsselquelltyp verwenden Sie eines der folgenden Verfahren für die Verwendung eines Header-bezogenen API-Schlüssels oder eines vom Genehmiger zurückgegebenen API-Schlüssels für einen Methodenaufruf: 

**Um Header-bezogene API-Schlüssel zu verwenden:**

1.  Erstellen Sie eine API mit den gewünschten API-Methoden und stellen Sie die API dann für eine Stufe bereit.

1.  Erstellen Sie einen neuen Nutzungsplan oder wählen Sie einen bereits vorhandenen Plan aus. Fügen Sie die bereitgestellte API-Stufe dem Nutzungsplan hinzu. Ordnen Sie dem Nutzungsplan einen API-Schlüssel hinzu oder wählen Sie einen im Plan vorhandenen API-Schlüssel. Notieren Sie den ausgewählten API-Schlüsselwert.

1.  Richten Sie API-Methoden ein, um einen API-Schlüssel zu fordern. 

1.  Stellen Sie die API derselben Stufe bereit. Wenn Sie die API einer neuen Stufe bereitstellen, stellen Sie sicher, dass Sie den Nutzungsplan aktualisieren, um ihn der neuen API-Stufe zuzuordnen. 

1. Rufen Sie die API mithilfe des API-Schlüssels auf. Der folgende CURL-Beispielbefehl ruft mithilfe eines API-Schlüssels die `GET`-Methode für die `getUsers`-Ressource der `prod`-Stufe einer API auf.

   ```
   curl -H "X-API-Key: abcd1234" 'https://b123abcde4.execute-api.us-west-2.amazonaws.com/prod/getUsers' 
   ```

Der Client kann nun die API-Methoden aufrufen, während er den `x-api-key`-Header mit dem gewählten API-Schlüssel als Header-Wert bereitstellt. Ein Aufruf könnte in diesem Fall wie folgt aussehen:

**Um Genehmiger-bezogene API-Schlüssel zu verwenden:**

1.  Erstellen Sie eine API mit den gewünschten API-Methoden und stellen Sie die API dann für eine Stufe bereit.

1.  Erstellen Sie einen neuen Nutzungsplan oder wählen Sie einen bereits vorhandenen Plan aus. Fügen Sie die bereitgestellte API-Stufe dem Nutzungsplan hinzu. Ordnen Sie dem Nutzungsplan einen API-Schlüssel hinzu oder wählen Sie einen im Plan vorhandenen API-Schlüssel. Notieren Sie den ausgewählten API-Schlüsselwert.

1.  Erstellen eines token-basierten Lambda-Genehmigers. `usageIdentifierKey:{api-key}` als Root-Level-Eigenschaft der Autorisierungsantwort einschließen. Anweisungen zum Erstellen eines Token-basierten Genehmigers finden Sie unter [Beispiel für eine Lambda-Funktion für `TOKEN`-Genehmiger](apigateway-use-lambda-authorizer.md#api-gateway-lambda-authorizer-token-lambda-function-create).

1.  Richten Sie API-Methoden ein, um einen API-Schlüssel zu fordern, und aktivieren Sie den Lambda-Genehmiger für die Methoden. 

1.  Stellen Sie die API derselben Stufe bereit. Wenn Sie die API einer neuen Stufe bereitstellen, stellen Sie sicher, dass Sie den Nutzungsplan aktualisieren, um ihn der neuen API-Stufe zuzuordnen. 

Der Client kann nun die Methoden aufrufen, für die ein API-Schlüssel gefordert wird, ohne explizit einen API-Schlüssel bereitstellen zu müssen. Der vom Genehmiger zurückgegebene API-Schlüssel wird automatisch verwendet.