Mit Aggregation Service in AWS arbeiten

1. Voraussetzungen

Für dieses Codelab sind einige Voraussetzungen zu erfüllen. Jede Anforderung wird entsprechend gekennzeichnet.

1.1. Lokales Testtool herunterladen (Lokale Tests)

Für lokale Tests ist der Download des lokalen Testtools erforderlich. Das Tool generiert Zusammenfassungsberichte aus den unverschlüsselten Debug-Berichten.

Das lokale Testtool kann in den Lambda-JAR-Archiven in GitHub heruntergeladen werden. Er sollte LocalTestingTool_{version}.jar heißen.

1.2. Achten Sie darauf, dass JAVA JRE installiert ist (Local Testing and Aggregation Service)

Öffnen Sie 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

Ist dies nicht der Fall, können Sie sie von der Java-Website oder der openJDK-Website herunterladen und installieren.

1.3. Tool zum Konvertieren von aggregierten Berichten herunterladen (lokaler Test- und Aggregationsdienst)

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

1.4 Privacy Sandbox APIs aktivieren (Local Testing and Aggregation Service)

Rufen Sie in Ihrem Browser chrome://flags/#privacy-sandbox-ads-apis auf und aktivieren Sie die Privacy Sandbox APIs.

Privacy Sandbox (chromeflag)

Achte darauf, dass Cookies von Drittanbietern aktiviert sind.

Rufe in deinem Browser chrome://settings/cookies auf und wähle Drittanbieter-Cookies im Inkognitomodus blockieren aus.

Chromesetting von Drittanbieter-Cookies

1.5 Registrierung für Web und Android (Aggregation Service)

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

Für lokale Tests kann die Registrierung mit einem Chrome-Flag und einem Befehlszeilen-Switch deaktiviert werden.

Wenn du das Chrome-Flag für unsere Demo verwenden möchtest, rufe chrome://flags/#privacy-sandbox-enrollment-overrides auf und aktualisiere die Überschreibung mit deiner Website. Wenn du unsere Demowebsite verwendest, ist kein Update erforderlich.

chromeflag für Privacy Sandbox-Registrierung überschreiben

1.6 Onboarding des Aggregationsdienstes (Aggregationsdienst)

Für den Aggregation Service müssen Koordinatoren den Dienst verwenden. Füllen Sie das Onboarding-Formular für den Aggregationsdienst aus und geben Sie die Adresse für die Berichtswebsite, die AWS-Konto-ID und weitere Informationen an.

1.7 Cloud-Anbieter (Aggregation Service)

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 wird nur die AWS-Integration behandelt.

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

Wenn die AWS-Befehlszeile neu ist, können Sie sie mithilfe der Konfigurationsanleitung für die 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 mithilfe des AWS-Leitfadens Nutzerzugriffsschlüssel. Damit werden die in AWS erstellten API-Endpunkte createJob und getJob aufgerufen.

1.7.3. AWS-Nutzer- und -Gruppenberechtigungen

Zum Bereitstellen des Aggregationsdienstes in AWS müssen Sie dem Nutzer, der für die Bereitstellung des Dienstes verwendet wird, bestimmte Berechtigungen erteilen. Achten Sie bei diesem Codelab darauf, dass der Nutzer Administratorzugriff hat, um vollständige Berechtigungen für die Bereitstellung zu erhalten.

1.8 Terraform (Aggregation Service)

In diesem Codelab wird Terraform zum Bereitstellen des Aggregationsdienstes verwendet. Prüfen Sie, ob die Terraform-Binärdatei in Ihrer lokalen Umgebung installiert ist.

Laden Sie die Terraform-Binärdatei in Ihre lokale Umgebung herunter.

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

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

Prüfen Sie, ob Terraform unter „classpath“ verfügbar ist.

terraform -v

1.9 Postman (für Aggregation Service AWS)

Verwenden Sie in diesem Codelab Postman für die Anfragenverwaltung.

Um einen Arbeitsbereich zu erstellen, klicken Sie im oberen Navigationsbereich auf Arbeitsbereiche und wählen Sie Arbeitsbereich erstellen aus.

PostmanWorkspace

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

Laden Sie die vorkonfigurierten JSON-Konfigurationsdateien und Globale Umgebung für den Arbeitsbereich herunter.

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

Postman-JSON-Dateien importieren

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

Postman importierte Sammlung

Aktualisieren Sie den AWS-Zugriffsschlüssel und den geheimen Schlüssel über Environment Quick Look.

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 bereitgestellt wird. Wir empfehlen, die Region us-east-1 zu verwenden. Wenn Sie die Bereitstellung jedoch in einer anderen Region vornehmen möchten, müssen Sie die veröffentlichte AMI in Ihr Konto kopieren oder einen Self-Build mit den bereitgestellten Scripts ausführen.

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 Debug-Berichte Aggregationen durchzuführen und Zusammenfassungen zu erstellen.

Codelab-Schritte

Schritt 2.1: Bericht auslösen: Lösen Sie einen privaten Aggregationsbericht aus, um den Bericht zu erfassen.

Schritt 2.2: Aggregierbaren Bericht zur Fehlerbehebung erstellen: Konvertieren Sie den erfassten JSON-Bericht in einen Bericht im AVRO-Format.
Dieser Schritt ähnelt dem Vorgang, wenn AdTech-Unternehmen die Berichte von den API-Endpunkten für die Berichterstellung erfassen und die JSON-Berichte in Berichte im AVRO-Format konvertieren.

Schritt 2.3: Bucket-Schlüssel aus dem Debug-Bericht parsen: Bucket-Schlüssel werden von Anzeigentechnologien entwickelt. Da die Buckets in diesem Codelab vordefiniert sind, rufen Sie die Bucket-Schlüssel wie angegeben ab.

Schritt 2.4: Erstellen Sie die AVRO-Datei für die Ausgabedomain: Nachdem die Bucket-Schlüssel abgerufen wurden, erstellen Sie die AVRO-Datei der Ausgabedomain.

Schritt 2.5: Zusammenfassungsberichte mit dem lokalen Testtool erstellen: Mit dem lokalen Testtool können Sie zusammenfassende Berichte in der lokalen Umgebung erstellen.

Schritt 2.6: Zusammenfassenden Bericht ansehen: Sehen Sie sich den zusammenfassenden Bericht an, der mit dem lokalen Testtool erstellt wird.

2.1. Trigger-Bericht

Rufen Sie die Privacy Sandbox-Demo auf. Dadurch wird ein privater Aggregationsbericht erstellt. Sie können den Bericht unter chrome://private-aggregation-internals aufrufen.

chrome privat aggregationinternals

Hat der Bericht den Status Ausstehend, wählen Sie ihn aus und klicken Sie auf Ausgewählte Berichte senden.

Privaten Aggregationsbericht senden

2.2. Aggregierbaren Bericht zur Fehlerbehebung 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 der aggregation_coordinator_origin im Berichtstext den Wert https://publickeyservice.msmt.aws.privacysandboxservices.com enthält. Das bedeutet, dass der Bericht ein aggregierter AWS-Bericht ist.

privater Aggregationsbericht

Fügen Sie den JSON-Report Body in eine JSON-Datei ein. In diesem Beispiel können Sie vim verwenden. Sie können jedoch jeden beliebigen Texteditor verwenden.

vim report.json

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

JSON-Datei des Berichts

Rufen Sie dann den Berichtsordner auf und verwenden Sie aggregatable_report_converter.jar, um den aggregierten Bericht zur Fehlerbehebung 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 \
 --debug

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

Der Aggregationsdienst benötigt für die Batchverarbeitung zwei Dateien. Der aggregierbare Bericht und die Ausgabedomaindatei. Die Ausgabedomaindatei enthält die Schlüssel, die Sie aus den aggregierten 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. Die Demo enthält vorkonfigurierte Beispiele für Bucket-Schlüssel. Da in der Demo der Fehlerbehebungsmodus für die private Aggregation aktiviert ist, können Sie die Klartextnutzlast zur Fehlerbehebung 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 Zusammenfassung 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.

Klartextnutzlast aus Reportbody beheben

Öffnen Sie das Tool Fehlerbehebung für den Nutzlast-Decoder für private Aggregation, fügen Sie Ihren debug_cleartext_payload in das Feld INPUT ein und klicken Sie auf INPUT.

Payloaddecoder

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

Nutzlast-Decoderergebnis

2.4 AVRO für Ausgabedomain erstellen

Jetzt haben wir den Bucket-Schlüssel und kopieren den Dezimalwert des Bucket-Schlüssels. Erstellen Sie nun den 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 Testtool erstellen

Wir verwenden LocalTestingTool_{version}.jar, das in Abschnitt 1.1 heruntergeladen wurde, um die Zusammenfassungsberichte zu erstellen. Verwenden Sie den folgenden Befehl. Ersetzen Sie LocalTestingTool_{version}.jar durch die Version, die Sie für das LocalTestingTool heruntergeladen haben.

Führen Sie den folgenden Befehl aus, um einen zusammenfassenden Bericht 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 eine ähnliche Abbildung wie in der folgenden Abbildung angezeigt werden. Sobald er abgeschlossen ist, wird der Bericht „output.avro“ erstellt.

Zusammenfassungsbericht zu lokalen Tests – Avro-Datei

2.6 Zusammenfassungsbericht ansehen

Der erstellte zusammenfassende Bericht liegt im AVRO-Format vor. Zum Lesen müssen Sie sie von AVRO in ein JSON-Format konvertieren. Idealerweise sollte die Anzeigentechnologie so programmieren, dass AVRO-Berichte zurück in das JSON-Format konvertiert werden.

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

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

Daraufhin wird ein Bericht zurückgegeben, der in etwa so aussieht: Zusammen mit einem Bericht, der output.json im selben Verzeichnis erstellt wurde.

Zusammenfassung der Avro-Datei in JSON konvertiert

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

3. Bereitstellung des Aggregationsdienstes

Führen Sie die folgenden Schritte aus, um den Aggregation Service bereitzustellen:

Schritt 3: Bereitstellung des Aggregationsdienstes: Stellen Sie den Aggregationsdienst auf AWS bereit.
Schritt 3.1. Klonen Sie das Aggregation Service Repository.
Schritt 3.2. Vordefinierte Abhängigkeiten herunterladen
Schritt 3.3: Entwicklungsumgebung erstellen
Schritt 3.4: Aggregationsdienst bereitstellen

3.1. Aggregation Service-Repository klonen

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

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

3.2. Vordefinierte Abhängigkeiten herunterladen

Nachdem Sie das Aggregation Service-Repository geklont haben, wechseln Sie zum Terraform-Ordner des Repositorys und in den 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 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 die Datei main.tf und drücken Sie i, um input die Datei zu bearbeiten.

vim main.tf

Entfernen Sie das Kommentarzeichen (#) vom Code im roten Feld und aktualisieren Sie die Namen der Buckets und Schlüssel.

Für AWS main.tf:

AWS-Haupt-TFfile

Der Code ohne Kommentare sollte wie unten dargestellt aussehen.

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

Sobald die Aktualisierungen abgeschlossen sind, speichern Sie sie und beenden Sie den Editor durch Drücken von esc -> :wq!. Dadurch werden die Aktualisierungen auf main.tf gespeichert.

Benennen Sie dann 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, damit input die Datei bearbeiten kann.

vim dev.auto.tfvars

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

Automatische TFvars-Datei für Entwicklung bearbeiten

Sobald die Aktualisierung abgeschlossen ist, drücken Sie esc -> :wq!. Dadurch wird die Datei dev.auto.tfvars gespeichert. Sie sollte in etwa so aussehen:

Aktualisierte automatische tfvars-Datei für die Entwicklung

3.4. Aggregationsdienst bereitstellen

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

terraform init

Die Ausgabe sollte in etwa so aussehen:

Terraforminit

Sobald Terraform initialisiert ist, erstellen Sie den Terraform-Ausführungsplan. Dabei wird die Anzahl der hinzuzufügenden Ressourcen und andere zusätzliche Informationen wie in der folgenden Abbildung zurückgegeben.

terraform plan

Unten sehen Sie die Zusammenfassung des Tarifs. Wenn es sich um eine neue Bereitstellung handelt, sollte die Anzahl der Ressourcen angezeigt werden, die hinzugefügt werden, wobei 0 zum Ändern und 0 zum Löschen angezeigt wird.

Terraformplan

Anschließend können Sie Terraform anwenden.

terraform apply

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

Terraform applyprompt

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

Terraform anwenden

4. Eingabeerstellung für Aggregationsdienst

Fahren Sie fort, um die AVRO-Berichte für die Batchverarbeitung im Aggregation Service zu erstellen.

Schritt 4: Eingabe für den Aggregationsdienst erstellen: Erstellen Sie die Berichte für den Aggregationsdienst, die für den Aggregationsdienst als Batch zusammengefasst werden.
Schritt 4.1. Trigger-Bericht
Schritt 4.2: Aggregierbare Berichte erstellen
Schritt 4.3: Berichte in AVRO umwandeln
Schritt 4.4: AVRO für Ausgabedomain erstellen

4.1. Trigger-Bericht

Rufen Sie die Privacy Sandbox-Demo auf. Dadurch wird ein privater Aggregationsbericht erstellt. Sie können den Bericht unter chrome://private-aggregation-internals aufrufen.

chrome privat aggregationinternals

Hat der Bericht den Status Ausstehend, wählen Sie ihn aus und klicken Sie auf Ausgewählte Berichte senden.

Privaten Aggregationsbericht senden

4.2. Aggregierbare Berichte erfassen

Erfassen Sie die aggregierbaren Berichte an den .well-known-Endpunkten der entsprechenden API.

  • Private Aggregation
    [reporting-origin] /.well-known/private-aggregation/report-shared-storage
  • Attribution Reporting – zusammenfassender Bericht
    [reporting-origin] /.well-known/attribution-reporting/report-aggregate-attribution

In diesem Codelab führen Sie die Berichtssammlung manuell aus. In der Produktion wird erwartet, dass Anzeigentechnologies 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 der aggregation_coordinator_origin im Berichtstext den Wert https://publickeyservice.msmt.aws.privacysandboxservices.com enthält. Das bedeutet, dass der Bericht ein aggregierter AWS-Bericht ist.

privater Aggregationsbericht

Fügen Sie den JSON-Report Body in eine JSON-Datei ein. In diesem Beispiel können Sie vim verwenden. Sie können jedoch jeden beliebigen Texteditor verwenden.

vim report.json

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

JSON-Datei des Berichts

4.3. Berichte in AVRO konvertieren

Von den .well-known-Endpunkten empfangene Berichte liegen im JSON-Format vor und müssen in das AVRO-Berichtsformat konvertiert werden. Wenn Sie den JSON-Bericht haben, gehen Sie zum Berichtsordner und verwenden Sie aggregatable_report_converter.jar, um den aggregierten Bericht zur Fehlerbehebung 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 für 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 erstellt, aber in diesem Fall werden sie von der Privacy Sandbox-Demo der Website erstellt. Da sich die private Zusammenfassung 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 debug_cleartext_payload aus dem Berichtstext.

Klartextnutzlast aus Reportbody beheben

Öffnen Sie goo.gle/ags-payload-decoder, fügen Sie Ihren debug_cleartext_payload in das Feld INPUT ein und klicken Sie auf INPUT.

Payloaddecoder

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

Nutzlast-Decoderergebnis

Da wir 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, können Sie die Berichte und die Ausgabedomain in die S3-Berichtskategorien verschieben.

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

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 Aggregationsdienstes

Von der terraform apply werden Ihnen die create_job_endpoint, die get_job_endpoint und die frontend_api_id zurückgegeben. Kopieren Sie die frontend_api_id und fügen Sie sie in die globale Postman-Variable frontend_api_id ein, die Sie im Abschnitt 1.9 unter „Voraussetzungen“ eingerichtet haben.

Schritt 5: Nutzung des Aggregationsdienstes: Verwenden Sie die Aggregation Service API, um zusammenfassende Berichte zu erstellen und diese zu überprüfen.
Schritt 5.1. „createJob“-Endpunkt für die Batchverarbeitung verwenden
Schritt 5.2: GetJob-Endpunkt zum Abrufen des Batchstatus verwenden
Schritt 5.3: Zusammenfassung des Berichts

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 requestbody

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"
  }
}

Sobald Sie auf Senden klicken, wird der Job mit der job_request_id erstellt. Sie sollten eine HTTP 202-Antwort erhalten, sobald die Anfrage vom Aggregationsdienst akzeptiert wurde. Weitere mögliche Rückgabecodes finden Sie unter HTTP-Antwortcodes.

postman createJob-Anfragestatus

5.2. getJob-Endpunkt zum Abrufen des Batchstatus verwenden

Zum Prüfen des Status der Jobanfrage können Sie den Endpunkt getJob verwenden. Wählen Sie in der Sammlung Privacy Sandbox die Option getJob aus.

Aktualisieren Sie in Params den Wert von job_request_id auf die job_request_id, die 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-Anfragestatus

Da sich die Berichtswebsite des generierten Demoberichts von der Website unterscheidet, die Sie auf Ihrer AWS-ID eingerichtet haben, erhalten Sie möglicherweise eine Antwort mit dem Rückgabecode PRIVACY_BUDGET_AUTHORIZATION_ERROR. Das ist normal, da die Website des Berichtsursprungs des Berichts nicht mit der für die AWS-ID aufgenommenen 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-news.dev"
    },
    "request_processing_started_at": "2023-12-07T22:51:06.034472697Z"
}

5.3. Zusammenfassung des Berichts

Sobald Sie Ihren zusammenfassenden Bericht im ausgegebenen S3-Bucket erhalten haben, können Sie diesen 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.

Zusammenfassungsbericht

Wenn Ihre createJob-Anfrage debug_run als true enthält, erhalten Sie den zusammenfassenden Bericht im Debug-Ordner, der sich im output_data_blob_prefix befindet. Der Bericht liegt im AVRO-Format vor 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 ähnelt der folgenden Abbildung.

Zusammenfassungsbericht zur Fehlerbehebung

Die Anmerkungen enthalten außerdem 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.