Plug-ins verwenden

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

Edge Microgateway Version 3.1.5 und höher

Zielgruppe

Dieses Thema richtet sich an Edge Microgateway-Operatoren, die vorhandene Plug-ins verwenden möchten, die mit dem Microgateway installiert. Außerdem werden Spike Arrest und Kontingent-Plug-ins (beides sind bei der Installation enthalten). Wenn Sie als Entwickler neue finden Sie unter Entwickeln von benutzerdefinierte Plug-ins.

Was ist ein Edge Microgateway-Plug-in?

Ein Plug-in ist ein Node.js-Modul, das Edge Microgateway um Funktionen ergänzt. Plug-in-Module einem einheitlichen Muster folgen und an einem Edge Microgateway bekannten Speicherort gespeichert werden. um sie automatisch zu erkennen und zu laden. Edge Microgateway enthält mehrere vorhandene und benutzerdefinierte Plug-ins erstellen. Weitere Informationen hierzu finden Sie unter Benutzerdefinierte Plug-ins entwickeln.

Vorhandene Plug-ins gebündelt mit Edge Mikrogateway

Edge Microgateway enthält bei der Installation mehrere vorhandene Plug-ins. Diese umfassen:

Plug-in Standardmäßig aktiviert Beschreibung
Analytics Ja Sendet Analysedaten von Edge Microgateway an Apigee Edge.
oauth Ja Fügt eine OAuth-Token- und API-Schlüsselvalidierung zu Edge Microgateway hinzu. Weitere Informationen finden Sie unter Einstellungen Edge Microgateway konfigurieren
Kontingent Nein Erzwingt ein Kontingent für Anfragen an Edge Microgateway. Verwendet Apigee Edge zum Speichern und Verwalten die Kontingente. Siehe Kontingent-Plug-in verwenden.
Spitzarmlehne Nein Schützt vor Traffic-Spitzen und DoS-Angriffen. Siehe Spitzarrest-Plug-in verwenden.
header-großbuchstaben Nein Ein kommentierter Beispiel-Proxy, der als Leitfaden für Entwickler beim Schreiben benutzerdefinierter Plug-ins dient. Weitere Informationen finden Sie unter . Edge Microgateway-Beispiel-Plug-in
accumulate-request Nein Fasst Anfragedaten in einem einzelnen Objekt zusammen, bevor die Daten an das nächste Objekt übergeben werden Handler in der Plug-in-Kette ab. Nützlich zum Schreiben von Transformations-Plug-ins, die auf einem ein kumuliertes Anfrageinhaltsobjekt.
accumulate-response Nein Akkumuliert Antwortdaten in einem einzelnen Objekt, bevor sie an das nächste Objekt übergeben werden. Handler in der Plug-in-Kette ab. Nützlich zum Schreiben von Transformations-Plug-ins, die auf einem ein kumuliertes Antwortinhaltsobjekt.
großbuchstaben umwandeln Nein Transformiert Anfrage- oder Antwortdaten. Dieses Plug-in stellt eine Best Practice dar, Implementierung eines Transformations-Plug-ins. Das Beispiel-Plug-in führt eine einfache Transformation durch. (wandelt Anfrage- oder Antwortdaten in Großbuchstaben um); kann jedoch leicht an die andere Arten von Transformationen ausführen, z. B. XML zu JSON.
json2xml Nein Transformiert Anfrage- oder Antwortdaten basierend auf Akzeptanz- oder Inhaltstyp-Headern. Für finden Sie im Plug-in Dokumentation in GitHub
Kontingentspeicher Nein Erzwingt ein Kontingent für Anfragen an Edge Microgateway. Speichert und verwaltet Kontingente lokal zu speichern.
Systemdiagnose Nein Gibt Informationen über den Edge Microgateway-Prozess zurück, Rufen Sie zur Verwendung des Plug-ins die URL /healthcheck auf Ihrem Edge-Edge auf. Microgateway-Instanz. Dieses Plug-in ist als Beispiel gedacht, ein eigenes Plug-in für die Systemdiagnose implementieren.

Wo finde ich meine vorhandenen Plug-ins?

Vorhandene Plug-ins, die mit Edge Microgateway gebündelt sind, befinden sich hier, wo [prefix] ist das Präfixverzeichnis npm. Weitere Informationen finden Sie unter . Wo ist Edge Microgateway installiert, wenn Sie dieses Verzeichnis nicht finden können.

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

Plug-ins hinzufügen und konfigurieren

Folgen Sie diesem Muster, um Plug-ins hinzuzufügen und zu konfigurieren:

  1. Beenden Sie Edge Microgateway.
  2. Öffnen Sie eine Edge Microgateway-Konfigurationsdatei. Einzelheiten finden Sie unter . Konfigurationsänderungen für Optionen vornehmen
  3. Fügen Sie das Plug-in dem plugins:sequence-Element der Konfigurationsdatei hinzu: Plug-ins werden in der Reihenfolge ausgeführt, in der sie in dieser Liste aufgeführt sind.
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. Plug-in konfigurieren Einige Plug-ins haben optionale Parameter, die Sie in der Konfigurationsdatei. Sie können beispielsweise die folgende Stanza hinzufügen, um den Spike Arrest zu konfigurieren. . Siehe Spitzarrest-Plug-in verwenden .
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
    
  1. Speichern Sie die Datei.
  2. Starten Sie Edge Microgateway neu oder laden Sie es neu, je nachdem, welche Konfigurationsdatei Sie bearbeitet haben.

Plug-in-spezifische Konfiguration

Sie können die in der Konfigurationsdatei angegebenen Plug-in-Parameter überschreiben, indem Sie eine Plug-in-spezifische Konfiguration in diesem Verzeichnis:

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

Dabei ist [prefix] das Präfixverzeichnis npm. Weitere Informationen finden Sie unter . Wo ist Edge Microgateway installiert, wenn Sie dieses Verzeichnis nicht finden können.

plugins/<plugin_name>/config/default.yaml Sie könnten beispielsweise in plugins/spikearrest/config/default.yaml blockieren, sodass sie alle anderen Konfigurationseinstellungen.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

Spitzarrest-Plug-in verwenden

Das Spike Arrest-Plug-in schützt vor Traffic-Spitzen. Die Anzahl der Anfragen wird gedrosselt. die von einer Edge Microgateway-Instanz verarbeitet werden.

Spike Arrest-Plug-in hinzufügen

Siehe Plug-ins hinzufügen und konfigurieren.

Beispielkonfiguration für Spike Arrest

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

Konfigurationsoptionen für Spike Arrest

  • timeUnit: Wie oft das Ausführungsfenster für den Spike Arrest zurückgesetzt wird. Gültige Werte sind Sekunde oder Minute.
  • allow: Die maximale Anzahl von Anfragen, die während der timeUnit erlaubt sind. Weitere Informationen finden Sie unter Wenn Sie mehrere Edge Micro- Prozesse.
  • bufferSize: (optional, Standard = 0), wenn "bufferSize" > 0, Spike Arrest speichert diese Anzahl von Anfragen in einem Zwischenspeicher. Sobald das nächste „Fenster“ der Ausführung erfolgt die zwischen gepufferten Anfragen zuerst verarbeitet werden. Siehe auch Hinzufügen eines Zwischenspeicher verwenden.

Wie funktioniert der Spike Arrest?

Der Spike Arrest ist eher eine Möglichkeit, sich vor Traffic-Spitzen zu schützen, um den Traffic auf eine bestimmte Anzahl von Anfragen zu beschränken. Ihre APIs und Ihr Back-End können eine bestimmte Traffic-Menge und die Spike Arrest-Richtlinie hilft Ihnen, den Traffic auf die allgemeinen ganz nach Ihren Vorstellungen.

Das Laufzeitverhalten Spike Arrest unterscheidet sich von dem, was Sie vom Literal erwarten würden. oder sekundengenau eingeben.

Angenommen, Sie geben eine Rate von 30 Anfragen pro Minute an:

spikearrest:
   timeUnit: minute
   allow: 30

Beim Testen könnte man meinen, 30 Anfragen in einer Sekunde zu senden, innerhalb einer Minute. Allerdings wird die Einstellung nicht auf diese Weise durch die Richtlinie erzwungen. Wenn Sie darüber nachdenken, 30 Anfragen innerhalb eines 1-Sekunden-Zeitraums könnten in einigen Umgebungen als Mini-Anstieg betrachtet werden.

Was geschieht dann tatsächlich? Um ein akustisches Verhalten zu vermeiden, glättet der Spike Arrest die erlaubten indem Sie die Einstellungen wie folgt in kleinere Intervalle aufteilen:

Preise pro Minute

Die Raten pro Minute werden in zulässige Anfragenintervalle in Sekunden geglättet. Beispiel: 30 Anfragen pro Minute werden wie folgt geglättet:

60 Sekunden (1 Minute) ÷ 30 = 2-Sekunden-Intervalle, d. h. etwa eine Anfrage, die alle 2 Sekunden zulässig ist. A innerhalb von 2 Sekunden schlägt fehl. Auch die 31. Anfrage innerhalb einer Minute schlägt fehl.

Raten pro Sekunde

Die Raten pro Sekunde werden in zulässige Anfragen in Intervallen von Millisekunden geglättet. Beispiel: 10 Anfragen pro Sekunde werden wie folgt geglättet:

1.000 Millisekunden (1 Sekunde) / 10 = 100-Millisekunden-Intervalle oder etwa 1 Anfrage zulässig alle 100 Millisekunden . Eine zweite Anfrage innerhalb von 100ms schlägt fehl. Eine elfte Anfrage innerhalb in einer Sekunde scheitert.

Wenn das Limit überschritten wird

Wenn die Anzahl der Anfragen das Limit innerhalb des angegebenen Zeitintervalls überschreitet, wird Spike Arrest eingesetzt. gibt folgende Fehlermeldung mit HTTP 503-Status zurück:

{"error": "spike arrest policy violated"}

Zwischenspeicher hinzufügen

Sie haben die Möglichkeit, der Richtlinie einen Puffer hinzuzufügen. Angenommen, Sie setzen den Puffer auf 10. Sie werden feststellen, dass die API nicht sofort einen Fehler zurückgibt, wenn Sie den Spike Arrest überschreiten. Limit Stattdessen werden Anfragen bis zur angegebenen Anzahl zwischengespeichert und die zwischengespeicherten Anfragen verarbeitet werden, sobald das nächste entsprechende Ausführungsfenster verfügbar ist. Standardeinstellung bufferSize ist 0.

Wenn Sie mehrere Edge Micro-Geräte verwenden Prozesse

Die Anzahl der zulässigen Anfragen hängt von der Anzahl der Edge Micro-Worker-Prozesse ab, die ausgeführt wird. Spike Arrest berechnet die zulässige Anzahl von Anfragen pro Worker-Prozess. Standardmäßig Die Anzahl der Edge Micro-Prozesse entspricht der Anzahl der CPUs auf dem Computer, auf dem Edge Micro ist. installiert haben. Sie können jedoch die Anzahl der Worker-Prozesse konfigurieren, wenn Sie Edge Micro starten mit der Option --processes im Befehl start. Wenn Sie beispielsweise Sie möchten, dass der Spike Arrest bei 100 Anfragen in einem bestimmten Zeitraum ausgelöst wird, und wenn Sie Edge starten. Microgateway mit der Option --processes 4. Legen Sie dann allow: 25 im Spike Arrest-Konfiguration. Faustregel: Legen Sie die allow-Konfiguration fest. auf den Wert "gewünschte Spike Arrest-Anzahl / Anzahl der Prozesse".

Kontingent-Plug-in verwenden

Ein Kontingent gibt die Anzahl der Anfragenachrichten an, die eine App an eine API senden darf im Lauf einer Stunde, eines Tages, einer Woche oder eines Monats. Wenn eine Anwendung ihr Kontingentlimit erreicht, werden nachfolgende API-Aufrufe werden abgelehnt. Siehe auch Unterschied zwischen Spike Arrest und Kontingent?

Kontingent-Plug-in hinzufügen

Siehe Plug-ins hinzufügen und konfigurieren.

Produktkonfiguration in Apigee Rand

Sie konfigurieren Kontingente in der Apigee Edge-Benutzeroberfläche, wo Sie API-Produkte konfigurieren. Wichtige Informationen welches Produkt den Microgateway-fähigen Proxy enthält, den Sie mit einem Kontingent begrenzen möchten. Dieses muss das Produkt einer Entwickler-App hinzugefügt werden. Wenn Sie API-Aufrufe durchführen, die mithilfe von in der Entwickler-App enthält, wird das Kontingent auf diese API-Aufrufe angewendet.

  1. Melden Sie sich in Ihrem Apigee Edge-Organisationskonto an.
  2. Öffnen Sie in der Edge-Benutzeroberfläche das Produkt, das mit dem Microgateway-fähigen Proxy verknüpft ist, zu dem Sie das Kontingent anwenden möchten.
    1. Wählen Sie in der Benutzeroberfläche im Menü „Veröffentlichen“ die Option Produkte aus.
    2. Öffnen Sie das Produkt mit der API, auf die Sie das Kontingent anwenden möchten.
    3. Klicken Sie auf Bearbeiten.
    4. Geben Sie im Feld Kontingent das Kontingentintervall an. Beispiel: 100 Anfragen pro einer Minute. Oder 50.000 Anfragen alle 2 Stunden.

  1. Klicken Sie auf Speichern.
  2. Achten Sie darauf, dass das Produkt einer Entwickler-App hinzugefügt wurde. Du brauchst die Schlüssel aus dieser App, um authentifizierte API-Aufrufe.

Beispielkonfiguration für Kontingent

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

Konfigurationsoptionen für Kontingent

Fügen Sie Ihrer Konfigurationsdatei das Element quotas hinzu, um das Kontingent-Plug-in zu konfigurieren. Dies wird im folgenden Beispiel gezeigt:

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota
quotas:
    bufferSize:
      hour: 20000
      minute: 500
      month: 1
      default: 10000
    useDebugMpId: true
    failOpen: true
...
Option Beschreibung
bufferSize

(Ganzzahl) Mit der Konfiguration bufferSize können Sie festlegen, wie oft Edge Microgateway synchronisiert seine Kontingentanzahl mit Apigee Edge. Um zu verstehen, bufferSize sehen Sie sich die folgende Beispielkonfiguration an:

quotas:
 bufferSize:
  minute: 500
  default: 10000
 useDebugMpId: true
 failOpen: true

Standardmäßig synchronisiert das Microgateway seinen Kontingentzähler alle 5 Sekunden mit Apigee Edge, wenn ist das Kontingentintervall auf „Minute“ festgelegt. Die obige Konfiguration besagt, dass, wenn das Kontingentintervall im API-Produkt auf "Minute", Edge Microgateway synchronisiert sich mit Edge, um die aktuelle Kontingentanzahl nach jedem 500 Anfragen oder nach 5 Sekunden, je nachdem, was zuerst eintritt. Weitere Informationen Siehe So werden Kontingente gezählt.

Zulässige Zeit Beispiele für Einheiten: minute, hour, day, week, month und default.

failOpen Wenn diese Funktion aktiviert ist und ein Fehler bei der Kontingentverarbeitung auftritt oder wenn das „Kontingent angewendet“ wenn die Anfrage an Edge die Remote-Kontingentzähler nicht aktualisiert, werden basierend auf der lokalen Anzahl nur bis zum nächsten erfolgreichen Remote-Kontingent verarbeitet. findet eine Synchronisierung statt. In beiden Fällen wird das Flag quota-failed-open in das Anfrageobjekt.

„Fail-Open“ für das Kontingent aktivieren die folgende Konfiguration:

edgemicro:
...
quotas:
  failOpen: true
...
useDebugMpId Legen Sie dieses Flag auf true fest, um das Logging des MP zu aktivieren (Nachrichtenprozessor) ID in Kontingentantworten.

Um diese Funktion zu verwenden, müssen Sie die folgende Konfiguration festlegen:

edgemicro:
...
quotas:
  useDebugMpId: true
...

Wenn useDebugMpId festgelegt ist, enthalten Kontingentantworten von Edge die MP-ID. und wird von Edge Microgateway protokolliert. Beispiel:

{
    "allowed": 20,
    "used": 3,
    "exceeded": 0,
    "available": 17,
    "expiryTime": 1570748640000,
    "timestamp": 1570748580323,
    "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
}
useRedis Wenn true festgelegt ist, verwendet das Plug-in Redis für den Speicher für die Kontingentsicherung. Weitere Informationen finden Sie unter Redis-Sicherungsspeicher für Kontingente verwenden.

Informationen zur Zählung von Kontingenten

Standardmäßig synchronisiert das Microgateway seinen Kontingentzähler alle 5 Sekunden mit Apigee Edge, wenn ist das Kontingentintervall auf „Minute“ festgelegt. Wenn das Intervall auf einen Wert höher eingestellt ist als „Minute“, z. B. „Woche“ oder „Monat“ angezeigt wird, beträgt der standardmäßige Aktualisierungszeitraum 1 Minute.

Es ist wichtig zu beachten, dass Kontingentintervalle angegeben werden, in den API-Produkten, die in Apigee Edge definiert sind. Kontingentintervalle geben an, wie viele Anfragen zulässig sind für eine Minute, eine Stunde, einen Tag, eine Woche oder einen Monat. Produkt A kann beispielsweise ein Kontingentintervall von 100 Anfragen pro Minute und Produkt B kann ein Kontingentintervall von 10.000 Anfragen pro Stunde haben.

YAML des Edge Microgateway-quota-Plug-ins In der Konfiguration wird das Kontingent nicht festgelegt. interval; Vielmehr bietet es eine Möglichkeit, die Häufigkeit anzupassen, mit der ein lokales Edge Microgateway Instanz synchronisiert ihr Kontingent mit Apigee Edge zählen.

Angenommen, in Apigee Edge sind drei API-Produkte mit den folgenden Parametern definiert: Angegebene Kontingentintervalle:

  • Produkt A hat ein Kontingent von 100 Anfragen pro Minute.
  • Produkt B hat ein Kontingent von 5.000 Anfragen pro Stunde.
  • Produkt C hat ein Kontingent von 1.000.000 Anfragen pro Monat.

Wie sollte das Edge Microgateway quota-Plug-in mit diesen Kontingenteinstellungen konfiguriert werden? Am besten konfigurieren Sie Edge Microgateway mit Synchronisierungsintervallen, die unter den in den API-Produkten definierten Kontingentintervallen liegen. Beispiel:

quotas:
    bufferSize:
      hour: 2000
      minute: 50
      month: 1
      default: 10000

Diese Konfiguration definiert die folgenden Synchronisierungsintervalle für die beschriebenen API-Produkte zuvor:

  • Produkt A ist auf die „Minute“ festgelegt Intervall. Edge Microgateway wird mit Edge synchronisiert nach dem bei jeder 50. Anfrage oder nach 5 Sekunden, je nachdem, was zuerst eintritt.
  • Produkt B ist auf „Stunde“ festgelegt Intervall. Edge Microgateway wird mit Edge synchronisiert nach dem jede 2.000. Anfrage oder nur eine Minute, je nachdem, was zuerst eintritt.
  • Produkt C ist auf „Monat“ festgelegt Intervall. Edge Microgateway wird mit Edge synchronisiert nach dem oder nach einer Minute, je nachdem, was zuerst eintritt.

Jedes Mal, wenn eine Microgateway-Instanz mit Edge synchronisiert wird, Die Kontingentanzahl ist auf die abgerufene Kontingentanzahl festgelegt.

Mit den Einstellungen für bufferSize können Sie festlegen, wie der Kontingentzähler wird mit Edge synchronisiert. Bei hohem Traffic-Aufkommen werden die bufferSize-Einstellungen Zwischenspeicherzähler zulassen, bevor die standardmäßige zeitbasierte Synchronisierung ausgelöst wird.

Informationen zum Kontingentbereich

Die Kontingentanzahl gilt für eine Umgebung in einer Organisation. Um diesen Umfang zu erreichen, Edge Microgateway erstellt eine Kontingentkennung, die eine Kombination aus "Organisation + env + appName + productName“.

Redis-Sicherungsspeicher für Kontingente verwenden

Um einen Redis-Sicherungsspeicher für das Kontingent zu nutzen, verwenden Sie dieselbe Konfiguration wie für den Synchronizer-Funktion. Im Folgenden finden Sie die grundlegende Konfiguration, die zur Verwendung von Redis für Kontingentspeicher:

edgemicro:
  redisHost: localhost
  redisPort: 6379
  redisDb: 2
  redisPassword: codemaster

quotas:
  useRedis: true
Weitere Informationen zu den edgemicro.redis*-Parametern finden Sie unter Synchronisierer verwenden.

Kontingent-Plug-in testen

Wird das Kontingent überschritten, wird der HTTP-Statuscode 403 zusammen mit dem Fehlercode folgende Nachricht:

{"error": "exceeded quota"}

Was ist der Unterschied? zwischen dem Spike Arrest und der Quote?

Es ist wichtig, das richtige Tool für die jeweilige Aufgabe auszuwählen. Kontingentrichtlinien konfigurieren die Anzahl der Anfragenachrichten, die eine Client-App im Laufe des Kurses an eine API senden darf einer Stunde, eines Tages, einer Woche oder eines Monats. Die Kontingentrichtlinie erzwingt Nutzungslimits für Client-Apps durch einen verteilten Zähler pflegen, der eingehende Anfragen erfasst.

Nutzen Sie eine Kontingentrichtlinie, um Geschäftsverträge oder SLAs mit Entwicklern und Partnern durchzusetzen, als für das operative Traffic-Management. Mit einem Kontingent kann z. B. der Traffic für ein kostenloser Dienst, während zahlende Kunden vollen Zugriff haben.

Verwenden Sie Spike Arrest, um sich vor plötzlichen Spitzen im API-Traffic zu schützen. Meist ist es bei einem Spike Arrest um mögliche DDoS- oder andere schädliche Angriffe abzuwehren.