API-Gateway-Konzepte

Erfahren Sie mehr über Schlüsselkonzepte, die Sie bei der Verwendung von API Gateway verstehen müssen.

API-Gateways

Im API-Gateway-Service stellt ein API-Gateway eine virtuelle Netzwerk-Appliance in einem regionalen Subnetz dar.

Ein API-Gateway leitet eingehenden Traffic an Backend-Services weiter, einschließlich öffentlicher, privater und Partner-HTTP-APIs sowie OCI Functions. Jedes API-Gateway ist ein privater Endpunkt, den Sie optional über eine öffentliche IP-Adresse als öffentliches API-Gateway angeben können:

  • Auf ein privates API-Gateway können nur Ressourcen im selben privaten Netzwerk (VCN) oder Ressourcen in einem anderen privaten oder On-Premise-Netzwerk zugreifen, die per Peering mit diesem privaten Netzwerk verbunden sind. Ein privates API-Gateway verfügt über eine private IP-Adresse und einen automatisch generierten Hostnamen im Format <gatewayidentifier>.apigateway.<region-identifier>.oci.customer-oci.com. Beachten Sie, dass der Hostname zwar öffentlich aus dem Internet aufgelöst werden kann, aber in die private IP-Adresse des API-Gateways aufgelöst wird. Der Traffic zur privaten IP-Adresse kann nicht über das öffentliche Internet weitergeleitet werden. Nur Clients im VCN können auf das API-Gateway zugreifen. Die öffentliche DNS-Auflösbarkeit einer privaten IP-Adresse wird erwartet und unterstützt verschiedene Netzwerkkonfigurationen innerhalb von OCI-Umgebungen.
  • Ein öffentliches API-Gateway ist öffentlich zugänglich und kann über das Internet erreicht werden, sofern ein Internetgateway im VCN des API-Gateways vorhanden ist. Ein öffentliches API-Gateway verfügt sowohl über eine private IP-Adresse als auch über eine öffentliche IP-Adresse und einen automatisch generierten Hostnamen im Format <gatewayidentifier>.apigateway.<region-identifier>.oci.customer-oci.com. Der generierte Hostname wird vom Internet zur öffentlichen IP-Adresse aufgelöst, sodass internetbasierte Clients auf das API-Gateway zugreifen können.

Um High Availability sicherzustellen, können Sie API-Gateways nur in regionalen Subnetzen (und nicht in AD-spezifischen Subnetzen) erstellen. Sie können private API-Gateways in privaten oder öffentlichen Subnetzen erstellen. Öffentliche API-Gateways können jedoch nur in öffentlichen Subnetzen erstellt werden. Der API Gateway-Service ist im Geltungsbereich regional und fehlertolerant in Availability-Domains (in mehreren AD-Regionen) und Faultdomains (in einzelnen AD-Regionen). In Regionen mit mehreren ADs wählt der API-Gateway-Service automatisch eine aktive Availability-Domain aus, um den API-Gatewayendpunkt zu beenden. Beachten Sie, dass je nach Quelle und Ziel des Traffics Traffic über Availability-Domains geleitet werden kann. Wenn eine Availability-Domain oder Faultdomain ausfällt, verarbeitet der API-Gateway-Service automatisch Failover und leitet Traffic an eine funktionierende Availability-Domain oder Faultdomain weiter.

Ein API-Gateway ist an eine bestimmte VNIC gebunden.

Sie erstellen ein API-Gateway in einem Compartment in Ihrem Mandanten. Jedes API-Gateway verfügt über ein einzelnes Frontend sowie über null oder mehr Backends. Außerdem sind null oder mehr APIs als API-Deployments darin bereitgestellt.

APIs

Im API Gateway-Service stellt eine API ein Set von Backend-Ressourcen dar und definiert Methoden (z.B. GET, PUT), die für die einzelnen Backend-Ressourcen als Antwort auf die von einem API-Client gesendeten Anforderungen ausgeführt werden können.

Um ein API-Gateway zur Verarbeitung von API-Anforderungen zu aktivieren, müssen Sie die API in dem API-Gateway bereitstellen, indem Sie ein API-Deployment erstellen.

Um eine API in einem API-Gateway bereitzustellen, können Sie eine API-Ressource im API Gateway-Service erstellen. Eine API-Ressource enthält eine API-Beschreibung, die die API-Ressource definiert. Beachten Sie, dass das Erstellen einer API-Ressource optional ist. Sie können eine API in einem API-Gateway bereitstellen, ohne eine API-Ressource im API Gateway-Service zu erstellen.

API-Deployments

Im API-Gateway-Service stellt ein API-Deployment das Instrument dar, mit dem Sie eine API in einem API-Gateway bereitstellen. Bevor das API-Gateway Anforderungen an die API verarbeiten kann, müssen Sie ein API-Deployment erstellen.

Beim Erstellen eines API-Deployments legen Sie Eigenschaften für das API-Deployment fest, einschließlich einer API-Deployment-Spezifikation. Jedes API-Deployment verfügt über eine API-Deployment-Spezifikation.

Sie können mehrere APIs im selben API-Gateway bereitstellen, was bedeutet, dass ein einzelnes API-Gateway mehrere API-Deployments hosten kann.

API-Deployment-Spezifikationen

Im API-Gateway-Service beschreibt eine API-Deployment-Spezifikation einige Aspekte eines API-Deployments.

Beim Erstellen des API-Deployments legen Sie Eigenschaften für das API-Deployment fest, einschließlich einer API-Deployment-Spezifikation. Jedes API-Deployment verfügt über eine API-Deployment-Spezifikation. Sie können eine API-Deployment-Spezifikation folgendermaßen erstellen:

  • Indem Sie Dialogfelder in der Konsole verwenden
  • Indem Sie Ihren bevorzugten JSON-Editor zum Erstellen einer JSON-Datei verwenden
  • Indem Sie eine API-Beschreibung verwenden, die Sie aus einer API-Beschreibungsdatei hochgeladen haben und die in einer unterstützten Sprache geschrieben ist (Beispiel: OpenAPI-Spezifikation Version 3.0)

Jede API-Deployment-Spezifikation beschreibt mindestens eine Backend-Ressource, die Route zu den einzelnen Backend-Ressourcen und die Methoden (z.B. GET, PUT), die für die einzelnen Ressourcen ausgeführt werden können. Die API-Deployment-Spezifikation beschreibt, wie das API-Gateway in das Backend integriert wird, sodass diese Methoden ausgeführt werden können. Die API-Deployment-Spezifikation kann auch Anforderungs- und Antwort-Policys enthalten.

API-Ressourcen und API-Beschreibungen

Im API Gateway-Service können Sie optional eine API-Ressource erstellen. Eine API-Ressource ist die Entwurfszeitdarstellung einer API. Sie können eine API-Ressource verwenden, um eine API in einem API-Gateway bereitzustellen.

Eine API-Beschreibung definiert eine API-Ressource, einschließlich:

  • verfügbarer Endpunkte
  • verfügbarer Vorgänge für jeden Endpunkt
  • Parametern, die für jeden Vorgang eingegeben und ausgegeben werden können
  • Authentifizierungsmethoden

Wenn Sie eine API-Ressource verwenden, um eine API in einem API-Gateway bereitzustellen, füllt die API-Beschreibung einige Eigenschaften der API-Deployment-Spezifikation vorab auf.

Sie importieren die API-Beschreibung aus einer Datei (manchmal auch als "API-Spezifikation" bezeichnet), die in einer unterstützten Sprache geschrieben ist. Derzeit werden OpenAPI-Spezifikation Version 2.0 (ehemals Swagger-Spezifikation 2.0) und Version 3.0 unterstützt.

Sie können auch ein SDK aus der API-Beschreibungsdatei generieren.

Beachten Sie, dass die Erstellung einer API-Ressource im API Gateway-Service optional ist. Sie können eine API in einem API-Gateway bereitstellen, ohne eine API-Ressource im API Gateway-Service zu erstellen. Beachten Sie auch, dass Sie zunächst eine API-Ressource ohne API-Beschreibung erstellen und später eine API-Beschreibung hinzufügen können.

Frontends

Im API-Gateway-Service stellt ein Frontend das Instrument dar, das Anforderungen in ein API-Gateway fließen lässt. Ein API-Gateway kann entweder über ein öffentliches Frontend oder ein privates Frontend verfügen:

  • Ein öffentliches Frontend gibt die APIs an, die über eine öffentliche IP-Adresse in einem API-Gateway bereitgestellt werden.
  • Ein privates Frontend gibt die APIs an, die über einen privaten Endpunkt in einem API-Gateway zu einem VCN bereitgestellt werden.

Backends

Im API-Gateway-Service stellt ein Backend das Instrument dar, mit dem ein Gateway Anforderungen an die Backend-Services weiterleitet, die APIs implementieren. Wenn Sie ein privates Endpunkt-Backend zu einem API-Gateway hinzufügen, erteilen Sie dem API-Gateway Zugriff auf das VCN, das mit diesem privaten Endpunkt verknüpft ist.

Sie können einem API-Gateway auch Zugriff auf weitere Oracle Cloud Infrastructure-Services als Backends erteilen. Beispiel: Sie können einem API-Gateway Zugriff auf OCI Functions erteilen, damit Sie eine API erstellen und bereitstellen können, die durch eine serverlose Funktion gesichert ist.

API-Provider, API-Consumers, API-Clients und Endbenutzer

API-Provider sind Personen oder Teams, die APIs entwerfen, implementieren, bereitstellen und betreiben. Diese Benutzer interagieren mit Schnittstellen wie der Oracle Cloud Infrastructure-Konsole, dem SDK, der CLI und dem Terraform-Provider. Sie verwenden den API Gateway-Service, um APIs bereitzustellen, zu überwachen und zu betreiben. Bei einigen Organisationen wird die API-Providerrolle weiter segmentiert, z.B. in:

  • API-Entwickler, die für die Erstellung von APIs und deren Bereitstellung in API-Gateways verantwortlich sind.
  • API-Planmanager, die für die Überwachung und Verwaltung der API-Nutzung verantwortlich sind (z.B. durch Definition von Nutzungsplänen und Abonnenten).
  • API Gateway-Manager, die für die Verwaltung von API-Gateways verantwortlich sind, normalerweise in der Produktion.

API-Consumers sind Personen oder Teams, die Apps und Services (API-Clients) erstellen und eine oder mehrere APIs eines API-Providers nutzen möchten. Der API-Consumer verwendet in der Regel nicht den gleichen Oracle Cloud Infrastructure-Mandanten wie der API-Provider. Der API-Consumer ist ein Kunde des API-Providers.

API-Clients sind Anwendungen oder Geräte, die von einem API-Consumer erstellt wurden. Der API-Client ruft die API zur Laufzeit auf, indem Anforderungen an das API-Gateway gesendet werden, auf dem die API bereitgestellt wird. API-Clients kommunizieren über HTTPS mit dem API-Gateway (einschließlich HTTP/2). API-Clients authentifizieren sich in der Regel über OAuth, Basisauthentifizierung oder mTLS bei der API und verwenden möglicherweise ein anderes Token wie einen API-Schlüssel für Messung und Monetarisierung.

Ein Endbenutzer ist ein Benutzer eines API-Clients und wird in Bezug auf die Autorisierung manchmal auch als "Ressourceneigentümer" bezeichnet. Der Endbenutzer interagiert immer nur über den API-Client mit einer API und ist sich in der Regel der API selbst nicht bewusst. Der Endbenutzer ist ein Kunde des API-Consumers.

Nutzungspläne und Berechtigungen, Abonnenten und Client-Token

Im API Gateway-Service können API-Planmanager die Nutzung ihrer APIs verwalten und überwachen, indem sie Nutzungsplanressourcen und Subscriber-Ressourcen definieren.

Eine Nutzungsplanressource umfasst Berechtigungen. Jeder Anspruch gibt Folgendes an:

  • Ein Ratenlimit: Die maximal zulässige Anzahl von API-Anforderungen pro Sekunde.
  • Eine Quota: Die Gesamtanzahl der in einem bestimmten Zeitraum (zwischen einer Minute und einem Monat) zulässigen API-Aufrufe.
  • Mindestens ein Ziel-API-Deployment. Die API-Deployments, auf die Abonnenten des Nutzungsplans zugreifen können.

Sie können ein API-Deployment als Ziel in mehreren Berechtigungen in verschiedenen Nutzungsplänen angeben, jedoch nicht in mehreren Berechtigungen im selben Nutzungsplan. Eine Berechtigung kann API-Deployments aus verschiedenen API-Gateways enthalten.

Als API-Planmanager können Sie mit Nutzungsplänen den API-Zugriff kontrollieren, der für Ihre Kunden (API-Consumer) und deren API-Clients verfügbar ist. Sie können den API-Zugriff Tariflimits und Quoten unterliegen, die auf bestimmte Kundenanforderungen zugeschnitten sind, sodass Sie verschiedene Zugriffsebenen für verschiedene Kunden einrichten können.

Eine Subscriber-Ressource umfasst:

  • Ein einzelner API-Consumer.
  • Clientnamen und Clienttoken zur eindeutigen Identifizierung von API-Clients, die vom API-Consumer erstellt wurden.
  • Nutzungspläne, für die der API-Consumer und seine API-Clients abonniert sind.

Als API-Planmanager können Sie Abonnenten für Ihre Kunden (API-Consumer) erstellen, um die Nutzungspläne anzugeben, die ihren API-Clients Zugriff auf Ihre APIs gewähren.

Damit ein API-Deployment zur Aufnahme in einen Nutzungsplan berechtigt ist, geben Sie den Speicherort des Clienttokens an, das in Anforderungen übergeben wird. Nachdem das API-Deployment in einen Nutzungsplan aufgenommen wurde, müssen Anforderungen das Clienttoken an diesem Speicherort enthalten, um auf das API-Deployment zugreifen zu können. Sie geben den Speicherort des Clienttokens in einer Nutzungsplananforderungs-Policy in der API-Deployment-Spezifikation an. (Beachten Sie, dass die Client-Token, die Sie in Subscriber-Ressourcen definieren, nur zu Nutzungsplan-Reportingzwecken und nicht zur Clientauthentifizierung und -autorisierung dienen.)

Routen

Im API-Gateway-Service stellt eine Route die Zuordnung zwischen einem Pfad, einer oder mehreren Methoden und einem Backend-Service dar. Routen werden in API-Deployment-Spezifikationen definiert.

Policys

Im API Gateway-Service sind verschiedene Policy-Typen verfügbar:

  • Eine Anforderungs-Policy beschreibt Aktionen, die für eine eingehende Anforderung von einem API-Client durchgeführt werden, bevor diese an ein Backend gesendet wird.
  • Eine Antwort-Policy beschreibt Aktionen, die für eine von einem Backend zurückgegebene Antwort durchgeführt werden, bevor diese an einen API-Client gesendet wird
  • Eine Logging-Policy beschreibt, wie Informationen zu Anforderungen und Antworten, die über ein API-Gateway gesendet werden, und Informationen zur Verarbeitung in einem API-Gateway gespeichert werden.

Mit Anforderungs-Policys und/oder Antwort-Policys können Sie:

  • die Anzahl von Anforderungen begrenzen, die an Backend-Services gesendet werden
  • CORS-(Cross-Origin Resource Sharing-)Support aktivieren
  • Authentifizierung und Autorisierung bereitstellen
  • Anforderungen validieren, bevor sie an Backend-Services gesendet werden
  • eingehende Anforderungen und ausgehende Antworten ändern
  • API-Deployments für die Aufnahme in Nutzungspläne zur Überwachung und Verwaltung des Abonnentenzugriffs qualifizieren

Sie können einer API-Deployment-Spezifikation Policys hinzufügen, die global für alle Routen in der API-Deployment-Spezifikation gelten, sowie Policys, die nur für bestimmte Routen gelten.

Hinweis: API-Gateway-Policys unterscheiden sich von IAM-Policys, die den Zugriff auf Oracle Cloud Infrastructure-Ressourcen steuern.