Auf dieser Seite wird erläutert, wie Sie Kontingente für Ihre API konfigurieren. Im Allgemeinen sind folgende Schritte auszuführen:
- Fügen Sie die Informationen zum Kontingent in Ihre gRPC API-Konfigurationsdatei ein.
- Stellen Sie Ihre gRPC API-Konfigurationsdatei bereit.
- Stellen Sie den Extensible Service Proxy (ESP) bereit.
Eine Übersicht über die Funktionalität von Kontingenten finden Sie unter Über Kontingente.
Vorbereitung
Sie sollten Folgendes bereits haben:
- Vollständige Konfiguration für Cloud Endpoints
- Eine bereitgestellte Endpoints-Konfiguration
- Bereitgestelltes API-Back-End
- Konfigurierte API zur Verwendung eines API-Schlüssels Das wird von Endpoints benötigt, um das Google Cloud-Projekt zu identifizieren, dem die aufrufende Anwendung zugeordnet ist. Weitere Informationen finden Sie unter Durch einen API-Schlüssel geschützte APIs freigeben.
Kontingent zur gRPC API-Konfigurationsdatei hinzufügen
Im Folgenden wird beschrieben, wie Sie die erforderlichen Einstellungen zum Einrichten von Kontingenten in Ihre gRPC API-Konfigurationsdatei einfügen. Der Einfachheit halber bezieht sich diese Seite auf die gRPC API-Konfigurationsdatei als api_config.yaml
-Datei.
Sie fügen der Datei api_config.yaml
die folgenden drei Abschnitte hinzu:
metrics
: Ein benannter Messwert, der die Zahl der Anfragen an die API ermittelt. Der von Ihnen vergebene Name soll den Zähler beschreiben. Der Name könnte eine Kategorie sein, z. B.read-requests
oderwrite-requests
. Wenn Sie ein Kontingent für eine bestimmte Methode definieren, können Sie auch den Methodennamen einbeziehen, z. B.echo-api/echo_requests
.quota.limits
: Stellt ein einzelnes durchsetzbares Limit für einen benannten Messwert dar. Hier konfigurieren Sie die zulässige Zahl der Anfragen für einen von Ihnen definierten Messwert. Derzeit werden nur Limits pro Minute und Projekt unterstützt.quota.metric_rules
:metric_rule
ordnet Messwerten Methoden zu (m:n-Beziehung). Eine Anfrage an eine Methode weist für jeden der zugeordneten Messwerte einen Zähler zu. Beim Verknüpfen einer Methode mit einem Messwert müssen immer Kosten für die Anfrage definiert werden. Sie können die Kosten für jede Methode einzeln konfigurieren. So können verschiedene Methoden denselben benannten Messwert zu unterschiedlichen Preisen nutzen. Wenn Sie keine komplexen Kontingentanforderungen haben, können Sie die Kosten für alle Messwerte auf 1 festlegen.
So konfigurieren Sie Kontingente für Ihre API:
- Öffnen Sie die
api_config.yaml
-Datei Ihres Projekts in einem Texteditor. Fügen Sie das Feld
metrics
nach dem Feldapis
auf oberster Ebene der Datei ein (nicht eingerückt oder verschachtelt):metrics: - name: "YOUR_METRIC_NAME" display_name: "YOUR_METRIC_DISPLAY_NAME" value_type: INT64 metric_kind: DELTA`
- Ersetzen Sie
YOUR_METRIC_NAME
durch einen Namen, der den API-Anfragezähler beschreibt. - Ersetzen Sie
YOUR_METRIC_DISPLAY_NAME
durch den Text, der auf der Seite Endpoints > Dienste > Kontingente angezeigt wird, um den Messwert anzugeben. - Das Feld
value_type
mussINT64
lauten. - Das Feld
metric_kind
mussDELTA
lauten.
- Ersetzen Sie
Fügen Sie das Feld
quota
auf derselben Ebene wiemetrics
und das Feldlimits
verschachtelt im Abschnittquota
ein.quota: limits: - name: "YOUR_LIMIT_NAME" metric: "YOUR_METRIC_NAME" unit: "1/min/{project}" values: STANDARD: VALUE_FOR_THE_LIMIT
- Ersetzen Sie
YOUR_LIMIT_NAME
durch einen Namen, der das Limit beschreibt. - Ersetzen Sie
YOUR_METRIC_NAME
durch einen zuvor definierten Messwertnamen (metric.name
). - Das Feld
unit
muss"1/min/{project}"
lauten. Dies ist die Kennzeichnung für das Limit "Pro Minute pro Projekt". - Das Feld
values
mussSTANDARD
enthalten. - Ersetzen Sie
VALUE_FOR_THE_LIMIT
durch eine Ganzzahl. Das ist die Anzahl der Anfragen, die eine mit einem Google Cloud-Nutzerprojekt verknüpfte Anwendung innerhalb einer Minute senden kann.
- Ersetzen Sie
Definieren Sie optional weitere Messwerte und Limits für jeden Messwert.
Fügen Sie eine Zeile
metric_rules
eingerückt unterquota
nach dem Abschnittlimits
hinzu. Verknüpfen Sie im Abschnittmetric_rules
einen zuvor definierten Messwert so mit einer Methode:metric_rules: - metric_costs: YOUR_METRIC_NAME: YOUR_METRIC_COST selector: [METHODS]
- Ersetzen Sie
YOUR_METRIC_NAME
durch einen zuvor definierten Messwertnamen (metric.name
). - Ersetzen Sie
YOUR_METRIC_COST
durch eine Ganzzahl. Der Anfragezähler des Messwerts wird bei jeder Anfrage um die Zahl erhöht, die Sie für die Kosten angeben. Für das Feld
selector
können Sie einen der folgenden Werte angeben:- Mit
selector: "*"
verknüpfen Sie alle Methoden in allen APIs mitmetric_cost
. - Mit
selector: YOUR_API_NAME.*
verknüpfen Sie alle Methoden in einer API mitmetric_cost
. - Mit
selector: YOUR_API_NAME.YOUR_METHOD_NAME
verknüpfen Sie eine bestimmte Methode in einer API mitmetric_cost
.
- Mit
- Ersetzen Sie
Speichern Sie die Datei
api_config.yaml
.
Beispiele für die Kontingentkonfiguration
Die folgenden drei Beispiele zeigen, wie Sie in Ihrer API Kontingente konfigurieren.
Das folgende Beispiel zeigt, wie das Feld metric
konfiguriert wird:
metrics: # Define a metric for read requests. - name: "read-requests" display_name: "Read requests" value_type: INT64 metric_kind: DELTA`
Das folgende Beispiel zeigt, wie die Felder quota
und limits
im Abschnitt quota
konfiguriert werden:
metrics: # Define a metric for read requests. - name: "read-requests" display_name: "Read requests" value_type: INT64 metric_kind: DELTA quota: limits: # Define the limit or the read-requests metric. - name: "read-limit" metric: "read-requests" unit: "1/min/{project}" values: STANDARD: 1000
Das folgende Beispiel zeigt, wie die Zeile metrics
nach dem Abschnitt limits
konfiguriert wird:
metrics:
# Define a metric for read requests.
- name: "read-requests"
display_name: "Read requests"
value_type: INT64
metric_kind: DELTA
quota:
limits:
# Define the limit or the read-requests metric.
- name: "read-limit"
metric: "read-requests"
unit: "1/min/{project}"
values:
STANDARD: 1000
metric_rules:
- metric_costs:
"read-requests": 1
selector: *
api_config.yaml
-Datei und ESP bereitstellen
Damit das Kontingent wirksam wird, müssen Sie diese Schritte ausführen:
- Stellen Sie die
api_config.yaml
-Datei für Service Management bereit, wodurch die Konfiguration in Endpoints aktualisiert wird. Ausführliche Schritte finden Sie unter Endpoints-Konfiguration bereitstellen. - Stellen Sie ESP bereit. Ausführliche Schritte finden Sie unter API-Backend bereitstellen.