View a markdown version of this page

Kontextuelles Anzeigen-Targeting mit Elemental Inference - 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.

Kontextuelles Anzeigen-Targeting mit Elemental Inference

Elemental Inference analysiert Videoinhalte und erstellt für jede Aufnahme Klassifizierungen zur IAB Inhaltstaxonomie sowie Signale zur Markensicherheit. GARM Durch die Integration MediaTailor mit Elemental Inference können Sie Anzeigenanfragen mit kontextbezogenen Metadaten anreichern. Ihr Ad Decision Server kann dann Anzeigen darauf ausrichten, was im Inhalt passiert.

Bei dieser Integration verwenden Sie den AWS_SERVICE_REQUEST Funktionstyp, um die Elemental Inference GetMetadata API während Werbeunterbrechungen aufzurufen. Weitere Hinweise zum Funktionstyp finden Sie unter. AWS Serviceanfrage

Im Folgenden wird der Integrationsablauf beschrieben:

  1. Elemental Inference analysiert Ihre Inhalte und erstellt Klassifizierungen auf Shot-Ebene.

  2. AWS Elemental MediaLive dekoriert Markierungen mit Elemental Inference-Abfrageparametern. SCTE-35

  3. MediaTailor Sendet bei jeder Werbeunterbrechung eine authentifizierte Anfrage an, GetMetadata um Klassifizierungen für das Inhaltsfenster abzurufen.

  4. Die Ausgabeausdrücke Ihrer Funktion extrahieren IAB und GARM signalisieren sie und leiten sie an den Anzeigenentscheidungsserver weiter.

Voraussetzungen

Bevor Sie diese Integration konfigurieren, benötigen Sie Folgendes:

  • Ein Elemental Inference-Feed mit einer kontextbezogenen Metadatenausgabe. Anweisungen zum Erstellen des Feeds finden Sie unter Erstellen des Feeds im Elemental Inference-Benutzerhandbuch.

  • Eine Ressourcenrichtlinie für den Feed, die Zugriff gewährt MediaTailor . Siehe Gewähren Sie MediaTailor Zugriff auf Ihren Elemental Inference-Feed.

  • Ein AWS MediaLive Elemental-Channel mit aktivierter kontextbezogener Metadatenanreicherung. Um genaue PTS-Timing-Werte für Elemental Inference-Abfragen bereitzustellen, aktivieren Sie die Anreicherung. MediaLive Anweisungen zur Konfiguration der kontextbezogenen Metadatenanreicherung finden Sie unter Einrichten der kontextbezogenen Metadatenanreicherung im Elemental User Guide. AWS MediaLive

MediaTailor und Elemental Inference müssen sich nicht in derselben Region befinden. AWS Die unterstützten Kombinationen hängen davon ab, ob sich jeder Dienst in einer Opt-in-Region befindet. Details hierzu finden Sie unter Gewähren Sie MediaTailor Zugriff auf Ihren Elemental Inference-Feed. Informationen zu den Regionen, in denen Elementare Inferenz verfügbar ist, finden Sie unter Endpunkte und Kontingente für Elementare Inferenz.

Gewähren Sie MediaTailor Zugriff auf Ihren Elemental Inference-Feed

MediaTailor ruft GetMetadata mit ihren eigenen Dienstanmeldedaten auf. Der Elemental Inference-Zielfeed muss über eine Ressourcenrichtlinie verfügen, die dem MediaTailor Dienstprinzipal vertraut.

MediaTailor fügt automatisch Sicherheits-Header hinzu, die Ihr Konto und Ihre Wiedergabekonfiguration identifizieren, um sicherzustellen, dass Ihr Elemental Inference-Feed überprüfen kann, ob die Anfrage von Ihren Ressourcen stammt. MediaTailor

Die folgende Tabelle zeigt, welcher Service Principal für Ihr Bereitstellungsszenario verwendet werden sollte.

Szenario Dienstauftraggeber
MediaTailor und Elemental Inference in derselben Region ohne Opt-In oder in verschiedenen Regionen ohne Opt-In mediatailor.amazonaws.com
MediaTailor in einer Opt-in-Region, die Elemental Inference aufruft, in einer Region ohne Opt-In mediatailor.region.amazonaws.com (z. B. mediatailor.af-south-1.amazonaws.com)
Beschränken Sie den Zugriff auf eine einzelne Region MediaTailor mediatailor.region.amazonaws.com
Anmerkung

MediaTailor unterstützt derzeit keinen regionsübergreifenden Zugriff (Opt-In für ein anderes Opt-In oder Nicht-Opt-In für Opt-In).

Das folgende Beispiel für eine Ressourcenrichtlinie gewährt die Erlaubnis, einen Feed abzurufen. MediaTailor GetMetadata

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "mediatailor.amazonaws.com" }, "Action": "elemental-inference:GetMetadata", "Resource": "arn:aws:elemental-inference:us-west-2:123456789012:feed/my-contextual-feed", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:mediatailor:us-west-2:123456789012:playbackConfiguration/*" } } } ] }

Ersetzen Sie us-west-2 und my-contextual-feed durch Ihre Region, Konto-ID und Feed-ID. 123456789012

Diese aws:SourceAccount Bedingung stellt sicher, dass nur MediaTailor Personen, die im Namen Ihres Kontos tätig sind, auf den Feed zugreifen können. Die aws:SourceArn Bedingung schränkt den Zugriff auf bestimmte Wiedergabekonfigurationen weiter ein. Ersetzen Sie den Platzhalter durch einen bestimmten Namen für die Wiedergabekonfiguration, um den Umfang genauer festzulegen.

Das folgende Beispiel zeigt eine Ressourcenrichtlinie für eine Opt-in-Region, in der der Service Principal den Namen der Region eingibt.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "mediatailor.af-south-1.amazonaws.com" }, "Action": "elemental-inference:GetMetadata", "Resource": "arn:aws:elemental-inference:us-west-2:123456789012:feed/my-contextual-feed", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:mediatailor:af-south-1:123456789012:playbackConfiguration/*" } } } ] }

Konfiguration mithilfe der Konsole MediaTailor

Die MediaTailor Konsole bietet eine Anleitung zur Konfiguration der kontextbezogenen Metadatenfunktionen von Elemental Inference. Das Rezept erstellt automatisch die URL, erstellt Vorlagen für den Anforderungstext und generiert Ausgabeausdrücke.

Bevor Sie beginnen

Führen Sie die Schritte unter Voraussetzungen aus. Sie benötigen einen Elemental Inference-Feed mit einer kontextbezogenen Metadatenausgabe, einer Ressourcenrichtlinie, die den MediaTailor Zugriff gewährt, und einen MediaLive Kanal, in dem die kontextbezogene Metadatenanreicherung aktiviert ist.

Erstellen der Funktion

  1. Öffnen Sie die MediaTailor-Konsole. Wählen Sie im Navigationsbereich Funktionen aus.

  2. Wählen Sie Funktion erstellen.

  3. Wählen Sie für den Funktionstyp. AWS_SERVICE_REQUEST

  4. Wählen Sie das Rezept Elementare Inferenz — Kontextuelle Metadaten.

  5. Wählen Sie als Feedquelle eine der folgenden Optionen aus:

    • Aus SCTE-35 Markierungen (empfohlen) — MediaTailor Extrahiert die Feed-Endpunkt-, Regions- und Zeitinformationen aus SCTE-35 Markierungen, die mit markiert sind MediaLive. Sie müssen nichts weiter konfigurieren.

    • Feeds in meinem Konto durchsuchen — Die Konsole listet deine Elemental Inference-Feeds in der ausgewählten Region auf. Wählen Sie einen Feed aus, um die Konfiguration automatisch auszufüllen. Verwenden Sie dies, wenn sich Ihr Elemental Inference-Feed im selben Konto wie Ihre Ressourcen befindet. MediaTailor

  6. Wählen oder geben Sie als Ausgabename den Namen der kontextbezogenen Metadatenausgabe ein, die in Ihrem Elemental Inference-Feed konfiguriert ist.

    Anmerkung

    Wenn Sie im Feed-Browser einen Feed ausgewählt haben, füllt die Konsole die verfügbaren Ausgabenamen aus Ihrer Feed-Konfiguration automatisch aus.

  7. Wählen Sie unter Ausgangskonfiguration aus, welche kontextbezogenen Signale extrahiert werden sollen:

    • IABInhaltskategorien — Extrahiert IAB Taxonomie-Kategorie-IDs als kommagetrennte Zeichenfolge.

    • GARMMarkensicherheit — Extrahiert GARM markierte Markensicherheitskategorien.

    Sie können die Namen der Ausgabeschlüssel (z. B.player_params.iabCategories) so anpassen, dass sie den Namen Ihrer Ad Decision Server-Parameter entsprechen.

  8. Geben Sie für Timeout die maximale Wartezeit auf eine Antwort ein. Die Standardeinstellung ist 2000 Millisekunden.

  9. (Optional) Überprüfen Sie unter Ressourcenrichtlinie den generierten Richtlinienausschnitt. Wenn Sie den Zugriff auf Ihren Elemental Inference-Feed noch nicht konfiguriert haben, kopieren Sie die Richtlinie und wenden Sie sie mithilfe der Elemental Inference-Konsole oder API an. PutFeedPolicy

  10. Wählen Sie Erstellen aus.

An eine Wiedergabekonfiguration anhängen

Nachdem Sie die Funktion erstellt haben, fügen Sie sie am PRE_ADS_REQUEST Lifecycle-Hook einer Wiedergabekonfiguration hinzu. Sie können es direkt oder als Schritt innerhalb einer SEQUENTIAL_EXECUTOR Funktion anhängen.

  1. Wählen Sie im Navigationsbereich Wiedergabekonfigurationen und wählen Sie Ihre Konfiguration aus.

  2. Wählen Sie unter Funktionszuordnungen die Option Bearbeiten aus.

  3. Wählen Sie für den PRE_ADS_REQUEST Hook die Funktion aus, die Sie erstellt haben.

  4. Speichern Sie die Konfiguration.

Wichtig

Wenn Ihr Stream Werbeblöcke ohne Elemental Inference-Marker enthält, verwenden Sie eine Bedingung SEQUENTIAL_EXECUTOR mit einer Ausführungsbedingung, die dies überprüft, inference.enriched bevor die kontextabhängige Metadatenfunktion aufgerufen wird. Siehe Kette mit anderen Funktionen.

Konfiguration mit der API oder CLI

Um genaue Zeitinformationen für Elemental Inference-Abfragen bereitzustellen, aktivieren Sie die MediaLive kontextbezogene Metadatenanreicherung. In den folgenden Abschnitten wird die empfohlene Produktionskonfiguration unter Verwendung von SCTE-35 Markern von MediaLive sowie eine manuelle Konfigurationsoption zu Testzwecken beschrieben.

Verwendung von SCTE-35 Markern aus MediaLive (Produktion)

Wenn es für die kontextbezogene Metadatenanreicherung konfiguriert MediaLive ist, bettet es Elemental Inference-Abfrageparameter direkt in Werbeblockmarkierungen ein. SCTE-35 MediaTailoranalysiert diese automatisch und stellt sie als Variablen zur Verfügung. inference.* Die vollständige Liste der verfügbaren Variablen finden Sie unter. Kontextuelle Metadatenvariablen für Elementare Inferenz (Inferenz.*)

Verwenden Sie diesen Ansatz aus den folgenden Gründen für Produktionsbereitstellungen:

  • Es werden keine fest codierten Endpunkte benötigt.

  • Region und Feed werden automatisch aus dem Stream aufgelöst.

  • Die PTS-Ausrichtung wird vom Encoder übernommen.

Eine Anleitung zur Aktivierung der kontextbezogenen Metadatenanreicherung auf deinem MediaLive Kanal findest du im Elemental User Guide unter Einrichten der kontextbezogenen Metadatenanreicherung. AWS MediaLive

Das folgende Beispiel zeigt eine vollständige Funktionskonfiguration mithilfe der Anreicherung. SCTE-35

{ "FunctionId": "eiContextualMetadata", "FunctionType": "AWS_SERVICE_REQUEST", "AwsServiceRequestConfiguration": { "Runtime": "JSONATA", "TargetService": "elemental-inference", "TargetRegion": "{%inference.region%}", "MethodType": "POST", "Url": "{%inference.dataEndpoint & '/v1/feed/' & inference.feedId & '/input/0/metadata'%}", "Headers": { "Content-Type": "application/json" }, "Body": "{%'{\"outputName\": \"my-contextual-output\", \"timeSpecification\": {\"ptsBased\": {\"startPts\": ' & $string(($exists(inference.previousBreakEndPts) and inference.previousBreakEndPts > inference.pts - 30 * inference.timescale ? inference.previousBreakEndPts : inference.pts - 30 * inference.timescale)) & ', \"endPts\": ' & $string(inference.pts + 1) & ', \"timescale\": ' & $string(inference.timescale) & '}}, \"parameters\": {\"contextualMetadata\": {}}}' %}", "RequestTimeoutMilliseconds": 2000, "Output": { "player_params.iabCategories": "{%response.statusCode = 200 ? $join($distinct(response.body.items.metadata.contextualMetadata.iabTaxonomy.categories.uniqueId), ',') : ''%}", "player_params.garmExcluded": "{%response.statusCode = 200 ? $join($distinct(response.body.items.metadata.contextualMetadata.garm.suitability.categories[flagged = true].category), ',') : ''%}" } } }

In der folgenden Liste werden die wichtigsten Felder des vorherigen Beispiels erläutert:

  • TargetRegionverwendetinference.region, um dynamisch für die richtige Region zu signieren.

  • Die URL besteht aus inference.dataEndpoint undinference.feedId.

  • Der Text fragt vom Ende der vorherigen Werbepause (oder bis zu 30 Sekunden Lookback) bis zur aktuellen Unterbrechung ab.

  • Die Ausgabe extrahiert IAB Kategorie-IDs und markierte GARM Kategorien.

Anmerkung

my-contextual-outputErsetzen Sie es durch den Namen der kontextbezogenen Metadatenausgabe Ihres Elemental Inference-Feeds.

Anmerkung

Im URL-Pfad /v1/feed/{feed-id}/input/0/metadata 0 bezieht sich der auf den Eingabeindex in Ihrem Elemental Inference-Feed. Die meisten Feeds haben eine einzige Eingabe am Index. 0 Wenn Ihr Feed mehrere Eingaben enthält, 0 ersetzen Sie ihn durch den entsprechenden Index.

Anmerkung

MediaTailor schließt automatisch den x-amzn-elemental-inference-skip-poll Header bei Anfragen an Elemental Inference ein. Dies gewährleistet Antworten mit niedriger Latenz, die für das Timing von Werbeunterbrechungen geeignet sind. Sie müssen diesen Header nicht konfigurieren.

Wichtig

Wenn dein Stream Werbeblöcke enthält, die keine Elemental Inference-Marker enthalten (z. B. gemischte Inhaltsquellen), schließe diese Funktion in ein SEQUENTIAL_EXECUTOR mit einem ein, RunCondition das Folgendes überprüft: inference.enriched

{ "FunctionId": "eiContextualMetadata", "RunCondition": "{%inference.enriched = true%}" }

Wenn sie inference.enriched ist false oder nicht, sind die inference.* Variablen nicht verfügbar, und Ausdrücke, die auf sie verweisen, führen zu keinen gültigen Ergebnissen.

Manuelle Konfiguration (nur zum Testen)

Verwenden Sie diese Konfiguration nur zum Testen. Ohne SCTE-35 Anreicherung von MediaLive müssen Sie die PTS-Werte manuell ermitteln und können nicht von einer dynamischen Zeitabstimmung profitieren. Dieser Modus hat eingeschränkte Funktionen. Wir unterstützen ihn nicht für Produktionsabläufe.

{ "FunctionId": "eiContextualMetadataManual", "FunctionType": "AWS_SERVICE_REQUEST", "AwsServiceRequestConfiguration": { "Runtime": "JSONATA", "TargetService": "elemental-inference", "TargetRegion": "us-west-2", "MethodType": "POST", "Url": "https://abc123.elemental-inference-data.us-west-2.amazonaws.com/v1/feed/my-feed-id/input/0/metadata", "Headers": { "Content-Type": "application/json" }, "Body": "{%'{\"outputName\": \"my-contextual-output\", \"timeSpecification\": {\"ptsBased\": {\"startPts\": 6300001, \"endPts\": 9000001, \"timescale\": 90000}}, \"parameters\": {\"contextualMetadata\": {}}}' %}", "RequestTimeoutMilliseconds": 2000, "Output": { "player_params.iabCategories": "{%response.statusCode = 200 ? $join($distinct(response.body.items.metadata.contextualMetadata.iabTaxonomy.categories.uniqueId), ',') : ''%}" } } }
Anmerkung

my-contextual-outputErsetzen Sie es durch den Namen der kontextbezogenen Metadatenausgabe Ihres Elemental Inference-Feeds.

Anmerkung

Ersetzen Sie die endPts Werte startPts und durch die entsprechenden PTS-Werte für Ihren Inhalt. In diesem Beispiel stellen die Werte ein 30-Sekunden-Fenster auf einer 90-kHz-Zeitskala dar. Ohne SCTE-35 Markeranreicherung müssen Sie die PTS-Werte anhand Ihrer Content-Pipeline ermitteln.

Anmerkung

Ersetzen Sie abc123.elemental-inference-data.us-west-2.amazonaws.com und us-west-2 durch den Datenendpunkt, die Feed-ID und die Region Ihres Feeds. my-feed-id Sie finden den Datenendpunkt in der Elemental Inference GetFeed API-Antwort oder -Konsole.

An eine Wiedergabekonfiguration anhängen

Nachdem Sie die Funktion erstellt haben, hängen Sie sie mithilfe der PutPlaybackConfiguration API am PRE_ADS_REQUEST Lifecycle-Hook an eine Wiedergabekonfiguration an. Fügen Sie die Funktions-ID in die Funktionszuordnung ein:

{ "FunctionMappings": { "PRE_ADS_REQUEST": { "FunctionId": "eiContextualMetadata" } } }

Sie können es auch in eine SEQUENTIAL_EXECUTOR To-Kette mit anderen Funktionen einbinden. Weitere Informationen finden Sie unter Kette mit anderen Funktionen.

Verstehe das Zeitfenster

Der Body-Ausdruck erstellt ein PTS-based Zeitfenster für die GetMetadata Anfrage. Die folgende Liste beschreibt die Lookback-Logik:

  • endPts= PTS der aktuellen Werbepause (voninference.pts) plus 1 (einschließlich Ende).

  • startPts= letzteres von: Ende der vorherigen Werbeunterbrechung (inference.previousBreakEndPts) oder 30 Sekunden vor der aktuellen Werbeunterbrechung.

  • Dadurch werden nur die Inhalte abgefragt, die zwischen den Werbeunterbrechungen abgespielt wurden. Inhalte aus früheren Werbeanzeigen werden vermieden.

  • Für die erste Werbeunterbrechung in einer Sitzung inference.previousBreakEndPts ist diese Option nicht verfügbar, daher wird der gesamte 30-Sekunden-Lookback verwendet.

  • Das 30-Sekunden-Fenster ist der maximale Lookback-Wert, den Elemental Inference unterstützt. Wenn inference.previousBreakEndPts verfügbar, verwendet der Ausdruck den späteren Wert oder den 30-Sekunden-Lookback. Dadurch wird sichergestellt, dass die Abfrage nur Inhalte abdeckt, die seit der letzten Werbeunterbrechung vergangen sind.

Verwenden Sie die Antwort in Anzeigenanfragen

In der folgenden Tabelle werden die verfügbaren Präfixe für Ausgabeziele und ihr Verhalten beschrieben.

Zielpräfix Behavior
player_params.* Durch [player_params.key] Substitution in der URL des Anzeigenentscheidungsservers der aktuellen Werbepause verfügbar. Besteht nicht über Werbeunterbrechungen hinweg.
temp.* Zwischenwerte für nachfolgende Funktionen in a. SEQUENTIAL_EXECUTOR Nicht beibehalten.
adsRequest.headers.* Wird als HTTP-Header auf der Ad Decision Server-Anfrage gesendet.
adsRequest.url Überschreibt die URL des Anzeigenentscheidungsservers vollständig.

Weitere Rezepte für Ausgabeausdrücke finden Sie unterBeispiel 3: Kontextuelle Metadaten.

Kette mit anderen Funktionen

Um den Elemental Inference-Aufruf mit anderen Funktionen zu kombinieren, schließen Sie sie in eine ein. SEQUENTIAL_EXECUTOR Das folgende Beispiel zeigt eine Pipeline, in der die zweite Funktion nur ausgeführt wird, wenn Elemental Inference erfolgreich Kategorien zurückgegeben hat.

{ "FunctionId": "contextualAdPipeline", "FunctionType": "SEQUENTIAL_EXECUTOR", "SequentialExecutorConfiguration": { "Runtime": "JSONATA", "FunctionList": [ { "FunctionId": "eiContextualMetadata" }, { "FunctionId": "buildEnrichedAdsRequest", "RunCondition": "{%$exists(player_params.iabCategories) and player_params.iabCategories != ''%}" } ], "TimeoutMilliseconds": 3000 } }

Die RunCondition stellt sicher, dass sie buildEnrichedAdsRequest nur ausgeführt wird, wenn die Elemental Inference-Funktion Daten erzeugt. Anschließend können Sie die Ad Decision Server-Anfrage mithilfe der Kontextdaten erstellen.

Fehlerbehebung

In der folgenden Tabelle werden häufig auftretende Probleme und deren Lösungen beschrieben.

Symptom Ursache Auflösung
403 AccessDenied in Funktionsprotokollen Ressourcenrichtlinie fehlt oder ist falsch Vergewissern Sie sich, dass die Feed-Richtlinie den MediaTailor Service Principal einschließt und dass die aws:SourceAccount Bedingung Ihrer Konto-ID entspricht. Hinweise zum Anzeigen von Protokollen zur Funktionsausführung finden Sie unterProblembehandlung und Überwachung.
inference.enriched ist false SCTE-35 Markierungen enthalten keine Daten der elementaren Inferenz Vergewissere dich, dass die kontextbezogene Metadatenanreicherung auf deinem Kanal aktiviert ist. MediaLive
inference.parseError ist true Falsch formatierte Daten der elementaren Inferenz in Markern SCTE-35 Überprüfen Sie die MediaLive Kanalkonfiguration und die Encoder-Softwareversion.
Leere Antwort (keine Artikel) Kein analysierter Inhalt im Abfragezeitfenster Stellen Sie sicher, dass der Elemental Inference-Feed aktiv Inhalte verarbeitet und dass das Zeitfenster die analysierten Segmente abdeckt.
Antwort gekürzt Die Antwort überschreitet das Limit von 20.000 Zeichen Reduzieren Sie das Zeitfenster, um weniger analysierte Aufnahmen zurückzugeben.
Anmerkung

Wenn die Funktion aus irgendeinem Grund fehlschlägt (Timeout, Autorisierungsfehler oder leere Antwort), fahren Sie mit der MediaTailor Anzeigenschaltung fort, wobei die verfügbaren Werte ohne den Beitrag der Funktion verwendet werden. Die Werbeunterbrechung ist nicht blockiert.