View a markdown version of this page

HTTP_REQUEST - AWS Elemental MediaTailor

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.

HTTP_REQUEST

Wann sollte dies verwendet werden?

HTTP_REQUESTWird verwendet, wenn Ihre Funktion einen externen Dienst aufrufen muss. Zu den häufigsten Anwendungsfällen gehören das Abrufen von Identitätsdaten von einem Lösungsanbieter, das Abrufen von Zielgruppensegmenten von einer Datenverwaltungsplattform und das Senden von Sitzungsinformationen an einen Protokollierungsendpunkt.

Felder für die Konfiguration

Eine HTTP_REQUEST Funktion hat die folgenden Felder:

  • Runtime — Die Ausdruckssprache. Stellen Sie dies auf einJSONATA.

  • MethodType— Die HTTP-Methode. Unterstützte Werte sind GET und POST.

  • Url — Die URL, an die die Anfrage gesendet werden soll. Sie können eine statische URL oder einen JSONata-Ausdruck verwenden, der die URL dynamisch erstellt.

  • Header — Die HTTP-Header, die in die Anfrage aufgenommen werden sollen, angegeben als Header-Namen- und Wertepaare. Verwenden Sie die {%...%} Ausdruckssyntax für dynamische Header-Werte. Statische Werte können direkt als Zeichenketten angegeben werden.

  • Body — Der Hauptteil der Anfrage, der gesendet werden soll. Wird bei POST Anfragen verwendet. Sie können einen JSONata-Ausdruck verwenden, um den Körper dynamisch zu erstellen.

  • RequestTimeoutMilliseconds(erforderlich) — Wie lange muss auf eine Antwort gewartet werden?

  • Ausgabe — Definiert die Werte, die nach Abschluss des HTTP-Aufrufs erzeugt werden sollen. Jeder Eintrag ordnet einen Ausgabeschlüssel (z. B.player_params.envelope_id) einem Ausdruck zu, der auf das response Objekt verweisen kann.

Informationen zu Größenbeschränkungen und Einschränkungen, die für diese Felder gelten, finden Sie unterEinschränkungen.

Wie wird die Anfrage bearbeitet

MediaTailor verarbeitet eine HTTP_REQUEST Funktion in zwei Schritten:

  1. Erstellen Sie die Anforderung — MediaTailor wertet die Body Ausdrücke UrlHeaders, und anhand des aktuellen Sitzungsstatus aus. Diese ausgewerteten Werte bilden die ausgehende HTTP-Anfrage.

  2. Die Antwort verarbeiten — Nach Abschluss des HTTP-Aufrufs werden die Ausdrücke im Ausgabeblock MediaTailor ausgewertet. Diese Ausdrücke können sowohl auf den ursprünglichen Sitzungsstatus als auch auf das vom Aufruf zurückgegebene response Objekt verweisen.

Antwortfelder

Nach Abschluss des HTTP-Aufrufs können Sie in Ihren Ausgabeausdrücken auf die folgenden Felder verweisen:

Feld Typ Description
response.body Objekt oder Array Der Antworttext wurde als JSON analysiert. nullWird auf gesetzt, wenn der Hauptteil mehr als 20.000 Zeichen enthält oder kein gültiges JSON ist.
response.statusCode Ganzzahl Der vom externen Dienst zurückgegebene HTTP-Statuscode. nullAuf „Bei Netzwerkausfall“ gesetzt.
response.text Zeichenfolge Der unformatierte Antworttext als Zeichenfolge, gekürzt auf 20.000 Zeichen. "Internal Error"Auf „Bei Netzwerkausfall“ gesetzt.
Wichtig

Das response.body Feld wird verwendetnull, wenn die Antwort 20.000 Zeichen überschreitet, auch wenn es sich bei der Antwort um ein gültiges JSON handelt.

Anmerkung

Das Antwortobjekt ist nur im Ausgabeblock einer HTTP_REQUEST Funktion verfügbar. Sie können in den Feldern Url, Headers oder Body nicht auf Antwortfelder verweisen. In a SEQUENTIAL_EXECUTOR kann jede HTTP_REQUEST Funktion nur auf ihre eigene Antwort zugreifen.

Ein Wert von null bedeutet, dass die Daten nicht verfügbar sind. Dies passiert, wenn der HTTP-Aufruf fehlschlägt (Netzwerkfehler oder Timeout) oder wenn der Antworttext 20.000 Zeichen überschreitet oder kein gültiges JSON ist.

Verhalten bei Netzwerkausfällen

Wenn der HTTP-Aufruf aufgrund eines Netzwerkfehlers oder einer Zeitüberschreitung fehlschlägt response.statusCode und auf null eingestellt response.body sind und auf response.text "Internal Error" gesetzt sind. Ihre Ausgabeausdrücke werden weiterhin ausgeführt. Überprüfen Sie dies daher immer, response.statusCode bevor Sie Antwortdaten verwenden.

Tipp

Verwenden Sie einen bedingten Ausdruck, um Fehler ordnungsgemäß zu behandeln: {%response.statusCode = 200 ? response.body.value : 'default'%}

Beispiel: Identitätsdaten abrufen

Die folgende Funktion ruft zu Beginn der Sitzung eine API zur Identitätsauflösung auf und speichert das Ergebnis in Player-Parametern. Sie ist für den PRE_SESSION_INITIALIZATION Lifecycle-Hook konzipiert.

{ "FunctionId": "fetchIdentityEnvelope", "FunctionType": "HTTP_REQUEST", "HttpRequestConfiguration": { "Runtime": "JSONATA", "MethodType": "GET", "Url": "{%'https://identity.example.com/v1/resolve?ip=' & $encodeUrlComponent(session.client_ip)%}", "Headers": { "Authorization": "{%'Bearer my_api_token'%}", "Accept": "application/json" }, "RequestTimeoutMilliseconds": 2000, "Output": { "player_params.identity_envelope": "{%response.statusCode = 200 ? response.body.envelope : ''%}" } } }

Eine vollständige exemplarische Vorgehensweise für ein ähnliches Beispiel finden Sie unterBeispiele für Funktionen.