Mit Aggregation Service in AWS arbeiten

1. Voraussetzungen

Für dieses Codelab müssen einige Voraussetzungen erfüllt sein. Jede Anforderung ist entsprechend gekennzeichnet, unabhängig davon, ob sie für „Lokaler Test“ oder „Aggregationsdienst“ erforderlich ist.

1.1. Lokales Testtool herunterladen (lokaler Test)

Für lokale Tests muss das lokale Testtool heruntergeladen werden. Das Tool erstellt zusammenfassende Berichte aus den unverschlüsselten Debug-Berichten.

Das lokale Testtool steht in den Lambda JAR-Archiven in GitHub zum Download zur Verfügung. Sie sollte den Namen LocalTestingTool_{version}.jar haben.

1.2. Achten Sie darauf, dass JAVA JRE installiert ist (lokaler Test- und Aggregationsdienst)

Öffnen Sie das Terminal und prüfen Sie mit java --version, ob auf Ihrem Computer Java oder openJDK installiert ist.

Java jre-Version mit Java prüfen\n--version

Wenn es nicht installiert ist, können Sie es von der Java-Website oder der openJDK-Website herunterladen und installieren.

1.3. Aggregierbarer Report Converter herunterladen (lokaler Test- und Aggregationsdienst)

Eine Kopie des Converters für aggregierte Berichte können Sie aus dem GitHub-Repository zu Privacy Sandbox-Demos herunterladen.

1.4 APIs für Datenschutz bei Anzeigen (lokaler Test- und Aggregationsdienst) aktivieren

Rufen Sie in Ihrem Browser chrome://settings/adPrivacy auf und aktivieren Sie alle APIs zum Datenschutz bei Werbung.

Prüfen Sie, ob Drittanbieter-Cookies aktiviert sind.

Rufen Sie in Ihrem Browser chrome://settings/cookies auf und wählen Sie Drittanbieter-Cookies im Inkognitomodus blockieren aus.

Chrome-Einstellung für Drittanbieter-Cookies

1.5 Web- und Android-Registrierung (Aggregationsdienst)

Wenn Sie Privacy Sandbox APIs in einer Produktionsumgebung verwenden möchten, müssen Sie die Registrierung und Bescheinigung sowohl für Chrome als auch für Android abgeschlossen haben.

Für lokale Tests kann die Registrierung mithilfe eines Chrome-Flags und eines CLI-Switch deaktiviert werden.

Wenn Sie das Chrome-Flag für unsere Demo verwenden möchten, rufen Sie chrome://flags/#privacy-sandbox-enrollment-overrides auf und aktualisieren Sie die Überschreibung mit Ihrer Website. Wenn Sie unsere Demowebsite verwenden, ist kein Update erforderlich.

Chrome-Flag für Privacy Sandbox-Registrierungsüberschreibung

1.6 Onboarding des Aggregationsdienstes (Aggregationsdienst)

Für den Aggregationsdienst ist ein Onboarding für Koordinatoren erforderlich, um den Dienst nutzen zu können. Füllen Sie das Einrichtungsformular für Aggregation Service aus. Geben Sie dazu die Adresse Ihrer Website für die Berichterstellung, die AWS-Konto-ID und andere Informationen an.

1.7 Cloud-Anbieter (Aggregationsdienst)

Für den Aggregationsdienst ist eine vertrauenswürdige Ausführungsumgebung erforderlich, die eine Cloud-Umgebung verwendet. Der Aggregationsdienst wird von Amazon Web Services (AWS) und Google Cloud (GCP) unterstützt. In diesem Codelab geht es nur um die AWS-Integration.

AWS bietet eine vertrauenswürdige Ausführungsumgebung namens Nitro Enclaves. Sie benötigen ein AWS-Konto und folgen Sie der Anleitung zur Installation und Aktualisierung der AWS-Befehlszeile, um Ihre AWS-CLI-Umgebung einzurichten.

Wenn Ihre AWS-Befehlszeile neu ist, können Sie sie mithilfe der Anleitung zur Konfiguration der Befehlszeile konfigurieren.

1.7.1. AWS S3-Bucket erstellen

Erstellen Sie einen AWS S3-Bucket zum Speichern des Terraform-Zustands und einen weiteren S3-Bucket zum Speichern Ihrer Berichte und Zusammenfassungsberichte. Sie können den bereitgestellten CLI-Befehl verwenden. Ersetzen Sie das Feld in <> durch die richtigen Variablen.

aws s3api create-bucket --bucket <tf_bucket_name> --region us-east-1
aws s3api create-bucket --bucket <report_bucket_name> --region us-east-1

1.7.2. Nutzerzugriffsschlüssel erstellen

Erstellen Sie Nutzerzugriffsschlüssel mithilfe des AWS-Leitfadens. Dies wird verwendet, um die in AWS erstellten API-Endpunkte createJob und getJob aufzurufen.

1.7.3. AWS-Nutzer- und -Gruppenberechtigungen

Um den Aggregationsdienst in AWS bereitzustellen, müssen Sie dem Nutzer, der für die Bereitstellung des Dienstes verwendet wird, bestimmte Berechtigungen erteilen. Für dieses Codelab muss der Nutzer Administratorzugriff haben, um bei der Bereitstellung alle Berechtigungen zu erhalten.

1.8 Terraform (Aggregationsdienst)

In diesem Codelab wird Terraform verwendet, um den Aggregationsdienst bereitzustellen. Prüfen Sie, ob die Terraform-Binärdatei in Ihrer lokalen Umgebung installiert ist.

Laden Sie das Terraform-Binärprogramm in Ihre lokale Umgebung herunter.

Nachdem die Terraform-Binärdatei heruntergeladen wurde, extrahieren Sie die Datei und verschieben Sie die Terraform-Binärdatei nach /usr/local/bin.

cp <directory>/terraform /usr/local/bin

Prüfen Sie, ob Terraform auf dem Klassenpfad verfügbar ist.

terraform -v

1.9 Postman (für AWS-Aggregationsdienst)

Verwende für dieses Codelab Postman für die Anfrageverwaltung.

Erstellen Sie einen Arbeitsbereich. Klicken Sie dazu oben im Navigationselement auf Arbeitsbereiche und wählen Sie Arbeitsbereich erstellen aus.

PostmanWorkspace

Wählen Sie Leerer Arbeitsbereich aus, klicken Sie auf „Weiter“ und nennen Sie ihn Privacy Sandbox. Wählen Sie Persönlich aus und klicken Sie auf Erstellen.

Laden Sie die vorkonfigurierten Dateien für die JSON-Konfiguration und die globale Umgebung des Arbeitsbereichs herunter.

Importieren Sie die JSON-Dateien über die Schaltfläche Importieren in Mein Arbeitsbereich.

Postman-JSON-Dateien importieren

Dadurch wird die Privacy Sandbox-Sammlung zusammen mit den HTTP-Anfragen createJob und getJob erstellt.

Postman Importierte Sammlung

Aktualisieren Sie den AWS-Zugriffsschlüssel und den geheimen Schlüssel in der Kurzübersicht „Environment“.

Postman Umgebung Quicklook

Klicken Sie auf Bearbeiten und aktualisieren Sie den aktuellen Wert von access_key und secret_key. Beachten Sie, dass frontend_api_id in Abschnitt 3.1.4 dieses Dokuments angegeben wird. Wir empfehlen außerdem, die Region us-east-1 zu verwenden. Wenn Sie die Bereitstellung jedoch in einer anderen Region vornehmen möchten, kopieren Sie den freigegebenen AMI in Ihr Konto oder führen Sie mit den bereitgestellten Skripts einen eigenen Build aus.

Postman-globale Variablen

Postman globale Variablen bearbeiten

2. Codelab für lokale Tests

Sie können das lokale Testtool auf Ihrem Computer verwenden, um mithilfe der unverschlüsselten Fehlerbehebungsberichte Aggregationen durchzuführen und zusammenfassende Berichte zu generieren.

Codelab-Schritte

Schritt 2.1: Triggerbericht: Lösen Sie Berichte zur privaten Aggregation aus, damit der Bericht erfasst werden kann.

Schritt 2.2: Aggregierbaren Fehlerbehebungsbericht erstellen: Konvertieren Sie den erfassten JSON-Bericht in einen AVRO-formatierten Bericht.
Dieser Schritt ähnelt dem, wenn Anzeigentechnologie-Anbieter die Berichte von den API-Endpunkten für Berichte erfassen und die JSON-Berichte in Berichte im AVRO-Format umwandeln.

Schritt 2.3: Bucket-Schlüssel aus dem Fehlerbehebungsbericht parsen: Bucket-Schlüssel werden von AdTech-Experten entwickelt. Da die Buckets in diesem Codelab vordefiniert sind, sollten Sie die Bucket-Schlüssel wie angegeben abrufen.

Schritt 2.4: Ausgabedomain AVRO erstellen: Sobald die Bucket-Schlüssel abgerufen sind, erstellen Sie die AVRO-Ausgabedomain-Datei.

Schritt 2.5: Zusammenfassungsberichte mit dem lokalen Testtool erstellen: Mit dem lokalen Testtool können Zusammenfassungsberichte in der lokalen Umgebung erstellt werden.

Schritt 2.6: Zusammenfassungsbericht überprüfen: Dies ist der im lokalen Testtool erstellte Zusammenfassungsbericht.

2.1. Triggerbericht

Rufen Sie die Demowebsite für die Privacy Sandbox auf. Dadurch wird ein privater Aggregationsbericht ausgelöst. Sie können den Bericht unter chrome://private-aggregation-internals aufrufen.

chrome private aggregationinternals

Wenn Ihr Bericht den Status Ausstehend hat, können Sie ihn auswählen und auf Ausgewählte Berichte senden klicken.

Privaten Aggregationsbericht senden

2.2. Aggregierbaren Debug-Bericht erstellen

Kopieren Sie in chrome://private-aggregation-internals den im [reporting-origin]/.well-known/private-aggregation/report-shared-storage-Endpunkt empfangenen Berichtstext.

Achten Sie darauf, dass im Report Body (Berichtstext) der aggregation_coordinator_origin https://publickeyservice.msmt.aws.privacysandboxservices.com enthält. Das bedeutet, dass es sich bei dem Bericht um einen in AWS aggregierten Bericht handelt.

privater Aggregationsbericht

Fügen Sie den Berichtstext als JSON-Datei in eine JSON-Datei ein. In diesem Beispiel verwenden Sie vim. Sie können aber jeden beliebigen Texteditor verwenden.

vim report.json

Fügen Sie den Bericht in report.json ein und speichern Sie die Datei.

JSON-Datei für den Bericht

Rufen Sie anschließend den Berichtsordner auf und erstellen Sie mit aggregatable_report_converter.jar den aggregierten Debug-Bericht. Dadurch wird ein aggregierter Bericht mit dem Namen report.avro in Ihrem aktuellen Verzeichnis erstellt.

java -jar aggregatable_report_converter.jar \
 --request_type convertToAvro \
 --input_file report.json \
 --debug

2.3. Bucket-Schlüssel aus dem Debug-Bericht parsen

Für den Aggregationsdienst sind bei der Batchverarbeitung zwei Dateien erforderlich. Der aggregierte Bericht und die Ausgabedomaindatei Die Ausgabedomaindatei enthält die Schlüssel, die Sie aus den aggregierbaren Berichten abrufen möchten. Zum Erstellen der Datei output_domain.avro benötigen Sie die Bucket-Schlüssel, die aus den Berichten abgerufen werden können.

Bucket-Schlüssel werden vom Aufrufer der API entworfen und die demo enthält vorgefertigte Beispiel-Bucket-Schlüssel. Da in der Demo der Fehlerbehebungsmodus für die private Aggregation aktiviert wurde, können Sie die Debug-Klartextnutzlast aus dem Berichtstext parsen, um den Bucket-Schlüssel abzurufen. In diesem Fall werden die Bucket-Schlüssel jedoch von der Privacy Sandbox Demo der Website erstellt. Da sich die private Aggregation für diese Website im Debug-Modus befindet, können Sie den debug_cleartext_payload aus dem Berichtstext verwenden, um den Bucket-Schlüssel abzurufen.

Kopieren Sie die debug_cleartext_payload aus dem Berichtstext.

Debug-Klartext-Nutzlast aus Reportbody

Öffnen Sie das Tool Debug Payload-Decoder für Private Aggregation, fügen Sie Ihren debug_cleartext_payload in das Feld INPUT ein und klicken Sie auf Decodieren.

Payloaddecoder

Die Seite gibt den Dezimalwert des Bucket-Schlüssels zurück. Hier sehen Sie ein Beispiel für einen Bucket-Schlüssel.

Nutzlast-Decoderergebnis

2.4 AVRO der Ausgabedomain erstellen

Nachdem wir nun den Bucket-Schlüssel haben, können Sie den Dezimalwert des Bucket-Schlüssels kopieren. Erstellen Sie nun die output_domain.avro mit dem Bucket-Schlüssel. Ersetzen Sie durch den abgerufenen Bucket-Schlüssel.

java -jar aggregatable_report_converter.jar \
 --request_type createDomainAvro \
 --bucket_key <bucket key>

Das Skript erstellt die Datei output_domain.avro im aktuellen Ordner.

2.5 Zusammenfassungsberichte mit dem lokalen Test-Tool erstellen

Wir verwenden LocalTestingTool_{version}.jar, das in Abschnitt 1.1 heruntergeladen wurde, um die zusammenfassenden Berichte zu erstellen. Führen Sie dazu den folgenden Befehl aus. Du solltest LocalTestingTool_{version}.jar durch die Version ersetzen, die für LocalTestingTool heruntergeladen wurde.

Führen Sie den folgenden Befehl aus, um einen Zusammenfassungsbericht in Ihrer lokalen Entwicklungsumgebung zu generieren:

java -jar LocalTestingTool_{version}.jar \
--input_data_avro_file report.avro \
--domain_avro_file output_domain.avro \
--output_directory .

Sobald der Befehl ausgeführt wurde, sollte in etwa Folgendes angezeigt werden: Der Bericht output.avro wird erstellt, sobald dieser Vorgang abgeschlossen ist.

Avrofile: lokalen Testzusammenfassungsbericht

2.6 Zusammenfassungsbericht ansehen

Der erstellte zusammenfassende Bericht ist im AVRO-Format erstellt. Um dies lesen zu können, müssen Sie es von AVRO in ein JSON-Format konvertieren. Idealerweise sollte die Anzeigentechnologie einen Code schreiben, um AVRO-Berichte in JSON umzuwandeln.

Für unser Codelab verwenden wir das bereitgestellte aggregatable_report_converter.jar-Tool, um den AVRO-Bericht wieder in JSON zu konvertieren.

java -jar aggregatable_report_converter.jar \
--request_type convertToJson \
--input_file output.avro

Daraufhin wird ein Bericht zurückgegeben, der dem folgenden Bild ähnelt. Mit einem Bericht, der im selben Verzeichnis erstellt wurde (output.json).

AVRO-Zusammenfassungsdatei in JSON konvertiert

Öffnen Sie die JSON-Datei in einem Editor Ihrer Wahl, um sich den zusammenfassenden Bericht anzusehen.

3. Bereitstellung des Aggregationsdiensts

So stellen Sie den Aggregationsdienst bereit:

Schritt 3: Bereitstellung des Aggregationsdienstes: Stellen Sie den Aggregationsdienst in AWS bereit
Schritt 3.1. Aggregation Service Repository klonen
Schritt 3.2 Laden Sie vordefinierte Abhängigkeiten herunter
Schritt 3.3. Entwicklungsumgebung erstellen
Schritt 3.4. Aggregationsdienst bereitstellen

3.1. Aggregationsdienst-Repository klonen

Klonen Sie in Ihrer lokalen Umgebung das Aggregation Service-GitHub-Repository.

git clone https://github.com/privacysandbox/aggregation-service.git

3.2. Vordefinierte Abhängigkeiten herunterladen

Nachdem Sie das Repository geklont haben, wechseln Sie zum Terraform-Ordner des Repositorys und zum entsprechenden Cloud-Ordner. Wenn Ihr cloud_provider AWS ist, können Sie mit /terraform/aws fortfahren.

cd <repository_root>/terraform/aws

Führen Sie in /terraform/aws den Befehl download_prebuilt_dependencies.sh aus.

bash download_prebuilt_dependencies.sh

3.3 Entwicklungsumgebung erstellen

Erstellen Sie eine Entwicklungsumgebung in /terraform/aws/environments. Erstellen Sie einen Ordner mit dem Namen dev.

mkdir dev

Kopieren Sie den Inhalt des Ordners demo in den Ordner dev.

cp -R demo/* dev

In den Ordner „dev“ verschieben.

cd dev

Aktualisieren Sie Ihre main.tf-Datei und drücken Sie i für input, um die Datei zu bearbeiten.

vim main.tf

Entfernen Sie das Kommentarzeichen (#) aus dem Code im roten Feld und aktualisieren Sie die Bucket- und Schlüsselnamen.

Für AWS main.tf:

AWS-Haupttffile

Der unkommentierte Code sollte wie folgt aussehen.

backend "s3" {
  bucket = "<tf_state_bucket_name>"
  key    = "<environment_name>.tfstate"
  region = "us-east-1"
}

Wenn die Aktualisierungen abgeschlossen sind, speichern Sie sie und beenden Sie den Editor, indem Sie esc -> :wq! drücken. Dadurch werden die Änderungen am main.tf gespeichert.

Benennen Sie als Nächstes example.auto.tfvars in dev.auto.tfvars um.

mv example.auto.tfvars dev.auto.tfvars

Aktualisieren Sie dev.auto.tfvars und drücken Sie i für input, um die Datei zu bearbeiten.

vim dev.auto.tfvars

Aktualisieren Sie die Felder im roten Feld nach der Abbildung mit den korrekten AWS-ARN-Parametern, die während des Aggregationsdienst-Onboardings, der Umgebung und der Benachrichtigungs-E-Mail bereitgestellt werden.

Automatische Entwicklung von tfvarsfile bearbeiten

Nachdem die Änderungen abgeschlossen sind, drücken Sie esc -> :wq!. Dadurch wird die Datei dev.auto.tfvars gespeichert. Sie sollte ungefähr wie in der folgenden Abbildung aussehen.

Aktualisierte automatische Entwicklerdatei tfvarsfile

3.4. Aggregationsdienst bereitstellen

Initialisieren Sie Terraform, um den Aggregationsdienst im Ordner /terraform/aws/environments/dev bereitzustellen.

terraform init

Die Ausgabe sollte in etwa so aussehen:

terraforminit

Nachdem Terraform initialisiert wurde, erstellen Sie den Terraform-Ausführungsplan. Dabei werden die Anzahl der hinzuzufügenden Ressourcen und weitere zusätzliche Informationen wie in der folgenden Abbildung zurückgegeben.

terraform plan

Dies können Sie in der Zusammenfassung Plan sehen. Bei einer neuen Bereitstellung sollten Sie die Anzahl der hinzugefügten Ressourcen mit 0 zum Ändern und 0 zum Löschen sehen.

Terraform-Plan

Anschließend können Sie Terraform anwenden.

terraform apply

Wenn Sie aufgefordert werden, die Ausführung der Aktionen von Terraform zu bestätigen, geben Sie einen yes in den Wert ein.

Terraform-Anwendungsabfrage

Sobald terraform apply abgeschlossen ist, werden die folgenden Endpunkte für createJob und getJob zurückgegeben. Es wird auch die frontend_api_id zurückgegeben, die Sie in Postman in Abschnitt 1.9 aktualisieren müssen.

terraform applycomplete

4. Eingabeerstellung für Aggregationsdienst

Erstellen Sie nun die AVRO-Berichte für die Batchverarbeitung im Aggregationsdienst.

Schritt 4: Eingabeerstellung für Aggregationsdienst: Erstellen Sie die Aggregationsdienstberichte, die für den Aggregationsdienst in Batches zusammengefasst werden.
Schritt 4.1: Trigger-Bericht
Schritt 4.2: Aggregierbare Berichte erstellen
Schritt 4.3: Berichte in AVRO konvertieren
Schritt 4.4: AVRO der Ausgabedomain erstellen

4.1. Triggerbericht

Rufen Sie die Demowebsite für die Privacy Sandbox auf. Dadurch wird ein privater Aggregationsbericht ausgelöst. Sie können den Bericht unter chrome://private-aggregation-internals aufrufen.

chrome private aggregationinternals

Wenn Ihr Bericht den Status Ausstehend hat, können Sie ihn auswählen und auf Ausgewählte Berichte senden klicken.

Privaten Aggregationsbericht senden

4.2. Aggregierbare Berichte erstellen

Erfassen Sie Ihre aggregierbaren Berichte aus den .well-known-Endpunkten der entsprechenden API.

  • Private Aggregation
    [reporting-origin] /.well-known/private-aggregation/report-shared-storage
  • Attributionsberichte – Zusammenfassungsbericht
    [reporting-origin] /.well-known/attribution-reporting/report-aggregate-attribution

In diesem Codelab führen Sie die Berichtssammlung manuell aus. In der Produktionsumgebung müssen Anzeigentechnologie-Anbieter die Berichte programmatisch erfassen und konvertieren.

Kopieren Sie in chrome://private-aggregation-internals den im [reporting-origin]/.well-known/private-aggregation/report-shared-storage-Endpunkt empfangenen Berichtstext.

Achten Sie darauf, dass im Report Body (Berichtstext) der aggregation_coordinator_origin https://publickeyservice.msmt.aws.privacysandboxservices.com enthält. Das bedeutet, dass es sich bei dem Bericht um einen in AWS aggregierten Bericht handelt.

privater Aggregationsbericht

Fügen Sie den Berichtstext als JSON-Datei in eine JSON-Datei ein. In diesem Beispiel verwenden Sie vim. Sie können aber jeden beliebigen Texteditor verwenden.

vim report.json

Fügen Sie den Bericht in report.json ein und speichern Sie die Datei.

JSON-Datei für den Bericht

4.3. Berichte in AVRO konvertieren

Von den .well-known-Endpunkten empfangene Berichte haben das JSON-Format und müssen in das AVRO-Berichtsformat konvertiert werden. Wenn Sie den JSON-Bericht haben, rufen Sie den Berichtsordner auf und verwenden Sie aggregatable_report_converter.jar, um den Debug-Bericht zu erstellen. Dadurch wird ein aggregierter Bericht mit dem Namen report.avro in Ihrem aktuellen Verzeichnis erstellt.

java -jar aggregatable_report_converter.jar \
 --request_type convertToAvro \
 --input_file report.json

4.4. AVRO der Ausgabedomain erstellen

Zum Erstellen der Datei output_domain.avro benötigen Sie die Bucket-Schlüssel, die aus den Berichten abgerufen werden können.

Bucket-Schlüssel werden von der Anzeigentechnologie entworfen. In diesem Fall werden sie jedoch auf der Website Privacy Sandbox-Demo erstellt. Da sich die private Aggregation für diese Website im Debug-Modus befindet, können Sie den debug_cleartext_payload aus dem Berichtstext verwenden, um den Bucket-Schlüssel abzurufen.

Kopieren Sie die debug_cleartext_payload aus dem Berichtstext.

Debug-Klartext-Nutzlast aus Reportbody

Öffne goo.gle/ags-payload-decoder, füge deinen debug_cleartext_payload in das Feld INPUT ein und klicke auf Decodieren.

Payloaddecoder

Die Seite gibt den Dezimalwert des Bucket-Schlüssels zurück. Hier sehen Sie ein Beispiel für einen Bucket-Schlüssel.

Nutzlast-Decoderergebnis

Nachdem Sie nun den Bucket-Schlüssel haben, können Sie den output_domain.avro erstellen. Ersetzen Sie durch den abgerufenen Bucket-Schlüssel.

java -jar aggregatable_report_converter.jar \
 --request_type createDomainAvro \
 --bucket_key <bucket key>

Das Skript erstellt die Datei output_domain.avro im aktuellen Ordner.

4.5. Berichte in AWS-Bucket verschieben

Nachdem die AVRO-Berichte (aus Abschnitt 3.2.3) und die Ausgabedomain (aus Abschnitt 3.2.4) erstellt wurden, verschieben Sie die Berichte und die Ausgabedomain in die S3-Gruppen für die Berichterstellung.

Wenn Sie die AWS-Befehlszeile in Ihrer lokalen Umgebung eingerichtet haben, kopieren Sie die Berichte mit den folgenden Befehlen in den entsprechenden S3-Bucket und Berichtsordner.

aws s3 cp report.avro s3://<report_bucket_name>/<report_folder>/
aws s3 cp output_domain.avro s3://<report_bucket_name>/<output_domain_folder>/

5. Nutzung des Zusammenfassungsdienstes

Von terraform apply werden create_job_endpoint, get_job_endpoint und frontend_api_id zurückgegeben. Kopieren Sie den frontend_api_id und fügen Sie ihn in die globale Postman-Variable frontend_api_id ein, die Sie im Abschnitt 1.9 für die Voraussetzungen eingerichtet haben.

Schritt 5: Nutzung des Aggregationsdienstes: Verwenden Sie die Aggregation Service API, um zusammenfassende Berichte zu erstellen und die zusammenfassenden Berichte zu überprüfen.
Schritt 5.1: Mit dem Endpunkt „createJob“ ein Batch-Verfahren ausführen
Schritt 5.2: getJob-Endpunkt zum Abrufen des Batchstatus verwenden
Schritt 5.3: Überprüfen des Zusammenfassungsberichts

5.1. Endpunkt createJob für Batch-Verarbeitung verwenden

Öffnen Sie in Postman die Sammlung Privacy Sandbox und wählen Sie createJob aus.

Wählen Sie Body und dann raw aus, um die Nutzlast der Anfrage zu platzieren.

postman createJob anfragetext

Das Nutzlastschema createJob ist in github verfügbar und sieht in etwa so aus: Ersetzen Sie <> durch die entsprechenden Felder.

{
  "job_request_id": "<job_request_id>",
  "input_data_blob_prefix": "<report_folder>/<report_name>.avro",
  "input_data_bucket_name": "<input_bucket_name>",
  "output_data_blob_prefix": "<output_folder>/<summary_report_prefix>",
  "output_data_bucket_name": "<output_bucket_name>",
  "job_parameters": {
    "output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
    "output_domain_bucket_name": "<output_domain_bucket_name>",
    "attribution_report_to": "<reporting origin of report>",
    "report_error_threshold_percentage": "10",
    "debug_run": "true"
  }
}

Nachdem Sie auf Senden geklickt haben, wird der Job mit der job_request_id erstellt. Sie sollten eine HTTP 202-Antwort erhalten, sobald die Anfrage vom Zusammenfassungsdienst akzeptiert wurde. Andere mögliche Rückgabecodes finden Sie unter HTTP-Antwortcodes.

postman createJob requeststatus

5.2. getJob-Endpunkt zum Abrufen des Batchstatus verwenden

Mit dem Endpunkt getJob können Sie den Status der Jobanfrage prüfen. Wählen Sie in der Sammlung Privacy Sandbox die Option getJob aus.

Aktualisieren Sie unter Params den Wert von job_request_id in den job_request_id, der in der createJob-Anfrage gesendet wurde.

Postman getJobrequest

Das Ergebnis von getJob sollte den Status der Jobanfrage mit dem HTTP-Status 200 zurückgeben. Die Anfrage „Body“ enthält die erforderlichen Informationen wie job_status, return_message und error_messages (falls beim Job ein Fehler aufgetreten ist).

postman getJob requeststatus

Da sich die Berichtswebsite des generierten Demoberichts von der Website für die Einrichtung unter Ihrer AWS-ID unterscheidet, erhalten Sie möglicherweise eine Antwort mit PRIVACY_BUDGET_AUTHORIZATION_ERROR return_code. Das ist normal, da die Website des Berichtsursprungs nicht mit der für die AWS-ID eingerichteten Berichtswebsite übereinstimmt.

{
    "job_status": "FINISHED",
    "request_received_at": "2023-12-07T22:50:58.830956Z",
    "request_updated_at": "2023-12-07T22:51:10.526326456Z",
    "job_request_id": "<job_request_id>",
    "input_data_blob_prefix": "<report_folder>/<report_name>.avro",
    "input_data_bucket_name": "<input_bucket_name>",
    "output_data_blob_prefix": "<output_folder>/<summary_report_prefix>",
    "output_data_bucket_name": "<output_bucket_name>",
    "postback_url": "",
    "result_info": {
        "return_code": "PRIVACY_BUDGET_AUTHORIZATION_ERROR",
        "return_message": "Aggregation job successfully processed",
        "error_summary": {
            "error_counts": [],
            "error_messages": []
        },
        "finished_at": "2023-12-07T22:51:10.517730898Z"
    },
    "job_parameters": {
        "debug_run": "true",
        "output_domain_bucket_name": "<output_domain_bucket_name>",
        "output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
        "attribution_report_to": "https://privacy-sandbox-demos-dsp.dev"
    },
    "request_processing_started_at": "2023-12-07T22:51:06.034472697Z"
}

5.3. Überprüfen des Zusammenfassungsberichts

Sobald Sie den Zusammenfassungsbericht im S3-Ausgabe-Bucket erhalten haben, können Sie ihn in Ihre lokale Umgebung herunterladen. Zusammenfassungsberichte liegen im AVRO-Format vor und können wieder in das JSON-Format konvertiert werden. Sie können aggregatable_report_converter.jar verwenden, um Ihren Bericht mit dem folgenden Befehl zu lesen.

java -jar aggregatable_report_converter.jar \
--request_type convertToJson \
--input_file <summary_report_avro>

Dadurch wird eine JSON-Datei mit aggregierten Werten jedes Bucket-Schlüssels zurückgegeben, die in etwa wie in der folgenden Abbildung aussieht.

zusammenfassender Bericht

Wenn deine createJob-Anfrage debug_run als true enthält, erhältst du den zusammenfassenden Bericht im Fehlerbehebungsordner, der sich im output_data_blob_prefix befindet. Der Bericht ist im AVRO-Format und kann mit dem vorherigen Befehl in ein JSON-Format konvertiert werden.

Der Bericht enthält den Bucket-Schlüssel, den nicht verrauschten Messwert und das Rauschen, das dem nicht verrauschten Messwert hinzugefügt wird, um den zusammenfassenden Bericht zu erstellen. Der Bericht sieht in etwa so aus:

Debug-Zusammenfassungsbericht

Die Annotationen enthalten auch in_reports und in_domain. Das bedeutet:

  • in_reports: Der Bucket-Schlüssel ist in den aggregierten Berichten verfügbar.
  • in_domain: Der Bucket-Schlüssel ist in der AVRO-Datei "output_domain" verfügbar.