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.0.x

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
  useRedis: true
  redisHost: localhost
  redisPort: 6379
  redisDb: 1
...
Option Beschreibung
buffersize (Ganzzahl) Die Puffergröße, die für das angegebene Zeitintervall festgelegt werden soll. Zulässige Zeit Beispiele für Einheiten: hour, minute, day, week, month und default. (Hinzugefügt: Version 3.0.9)
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. (Hinzugefügt: Version 3.0.9)

„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. (Hinzugefügt: Version 3.0.9)

Wenn Sie diese Funktion verwenden möchten, müssen Sie Ihren edgemicro-auth-Proxy auf Version 3.0.7 oder höher verwenden und 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 (Boolesch) Legen Sie true fest, um das Redis-Kontingentdatenbankmodul zu verwenden. Wann? ist das Kontingent auf Edge Microgateway-Instanzen beschränkt, eine Verbindung zu Redis herstellen. Andernfalls gilt der Kontingentzähler global. Standardeinstellung: false (Das Modul redis-volos-apigee wird verwendet.) (Hinzugefügt: Version 3.0.10)
redisHost Der Host, auf dem die Redis-Instanz ausgeführt wird. Standard: 127.0.0.1 (Hinzugefügt: Version 3.0.10)
redisPort Der Port der Redis-Instanz. Standard: 6379 (Hinzugefügt: Version 3.0.10)
redisDb Die zu verwendende Redis-Datenbank. Standardwert: 0 (Hinzugefügt: Version 3.0.10)

Informationen zum Kontingentbereich

Die Kontingentanzahl gilt für ein API-Produkt. Wenn eine Entwickler-App mehrere Produkte umfasst, gilt das Kontingent für jeden einzelnen Nutzer. Um diesen Umfang zu erreichen, Edge Microgateway erstellt eine Kontingentkennung, die eine Kombination aus „appName + productName“.

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.