Praca z usługą agregacji w AWS

1. Wymagania wstępne

Aby wykonać to ćwiczenie, musisz spełnić kilka warunków wstępnych. Każde wymaganie jest odpowiednio oznaczone, aby pokazać, czy jest wymagane w przypadku „testowania lokalnego” czy „usługi agregacji”.

1.1. Pobieranie narzędzia do testowania lokalnego (testowanie lokalne)

Testowanie lokalne wymaga pobrania narzędzia do testowania lokalnego. Na podstawie niezaszyfrowanych raportów debugowania narzędzie wygeneruje raporty podsumowujące.

Narzędzie do testowania lokalnego można pobrać z archiwów JAR usługi Lambda na GitHubie. Powinien nazywać się LocalTestingTool_{version}.jar.

1.2. Sprawdź, czy zainstalowana jest JAVA JRE (usługa lokalnego testowania i zbiorczości)

Otwórz „Terminal” i użyj polecenia java --version, aby sprawdzić, czy na komputerze jest zainstalowana Java lub openJDK.

sprawdzanie wersji java jre za pomocą java\n--version

Jeśli nie jest zainstalowana, możesz ją pobrać i zainstalować z witryny Java lub witryny openJDK.

1.3. Pobieranie konwertera raportów zbiorczych (usługa do testowania lokalnego i agregacji)

Kopie konwertera raportów umożliwiającego agregację możesz pobrać z repozytorium Privacy Sandbox Demos na GitHubie.

1.4. Włączanie interfejsów API ochrony prywatności w reklamach (lokalna usługa testowania i zbiorczości)

W przeglądarce otwórz chrome://settings/adPrivacy i włącz wszystkie interfejsy Ad Privacy API.

Upewnij się, że masz włączone pliki cookie innych firm.

W przeglądarce otwórz chrome://settings/cookies i kliknij Blokuj pliki cookie innych firm w trybie incognito.

ustawienia plików cookie innych firm w Chrome

1.5. Rejestracja w internecie i na Androida (usługa do agregacji)

Aby używać interfejsów API Piaskownicy prywatności w sytuacji produkcyjnej, musisz ukończyć rejestrację i potwierdzenie zarówno w przypadku Chrome, jak i Androida.

W przypadku testów lokalnych rejestrację można wyłączyć za pomocą flagi Chrome i przełącznika w interfejsie wiersza poleceń.

Aby użyć flagi Chrome w naszym pliku demonstracyjnym, otwórz chrome://flags/#privacy-sandbox-enrollment-overrides i zaktualizuj zastąpienie w swojej witrynie. Jeśli zamiast tego chcesz użyć naszej witryny demonstracyjnej, nie musisz nic zmieniać.

Zarejestruj się w Piaskownicy prywatności, aby zastąpić flagę chromeflag

1.6. Wdrażanie usługi do agregacji (usługa do agregacji)

Aby korzystać z usługi agregacji, należy najpierw wdrożyć ją w grupie koordynowanej. Wypełnij formularz rejestracji usługi agregacji, podając adres witryny raportującej, identyfikator konta AWS i inne informacje.

1.7. Dostawca usług w chmurze (usługa agregacji)

Usługa agregacji wymaga użycia zaufanego środowiska wykonawczego, które korzysta z środowiska chmurowego. Usługa agregacji jest obsługiwana w Amazon Web Services (AWS) i Google Cloud (GCP). To Codelab dotyczy tylko integracji z AWS.

AWS udostępnia zaufane środowisko wykonawcze o nazwie Nitro Enclaves. Upewnij się, że masz konto AWS, i skonfiguruj środowisko AWS CLI, wykonując instrukcje instalacji i aktualizacji AWS CLI.

Jeśli interfejs AWS CLI jest nowy, możesz go skonfigurować, korzystając z instrukcji konfiguracji interfejsu wiersza poleceń.

1.7.1. Tworzenie zasobnika AWS S3

Utwórz zasobnik AWS S3 do przechowywania stanu Terraform oraz inny zasobnik S3 do przechowywania raportów i raportów podsumowujących. Możesz użyć podanego polecenia wiersza poleceń. Zastąp pole w pozycji <> odpowiednimi zmiennymi.

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. Tworzenie klucza dostępu użytkownika

Utwórz klucze dostępu użytkownika, korzystając z tego przewodnika AWS. Będzie on używany do wywoływania punktów końcowych interfejsu API createJob i getJob utworzonych w AWS.

1.7.3. Uprawnienia użytkowników i grup AWS

Aby wdrożyć usługę agregacji w AWS, musisz przyznać użytkownikowi używanemu do wdrażania usługi określone uprawnienia. W tym Codelab upewnij się, że użytkownik ma dostęp administratora, aby mieć pełne uprawnienia do wdrażania.

1.8. Terraform (usługa do agregacji)

W tym Codelab do wdrożenia usługi agregacji użyto Terraform. Upewnij się, że plik binarny Terraform jest zainstalowany w środowisku lokalnym.

Pobierz plik binarny Terraform do środowiska lokalnego.

Po pobraniu pliku binarnego Terraform wyodrębnij go i przenieś do folderu /usr/local/bin.

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

Sprawdź, czy Terraform jest dostępny w classpath.

terraform -v

1.9. Postman (dla usługi AWS do agregacji)

W tym Codelab do zarządzania żądaniami użyj Postmana.

Aby utworzyć obszar roboczy, kliknij element menu u góry „Obszary robocze” i wybierz „Utwórz obszar roboczy”.

postmanworkspace

Wybierz „Pusty obszar roboczy”, kliknij Dalej i nadaj mu nazwę „Privacy Sandbox”. Wybierz „Osobiście” i kliknij „Utwórz”.

Pobierz wstępnie skonfigurowany obszar roboczy, konfigurację JSON i pliki Global Environment.

Zaimportuj pliki JSON do „Mojego środowiska pracy” za pomocą przycisku „Importuj”.

importowanie plików JSON z Postmana,

Spowoduje to utworzenie kolekcji Piaskownicy prywatności wraz z żądaniami HTTP createJobgetJob.

postman importedcollection

Zaktualizuj „Klucz dostępu” i „Klucz tajny” w AWS za pomocą „Szybki przegląd środowiska”.

postman environment quicklook

Kliknij Edytuj i zaktualizuj „Obecna wartość” zarówno w przypadku „access_key”, jak i „secret_key”. Pamiętaj, że informacje o frontend_api_id znajdziesz w sekcji 3.1.4 tego dokumentu. Zalecamy użycie regionu us-east-1. Jeśli jednak chcesz wdrożyć AMI w innym regionie, skopiuj opublikowany AMI na swoje konto lub samodzielnie skompiluj AMI, korzystając z dostępnych skryptów.

postman globalvariables

postman edit globalvariables

2. Testowanie lokalne (Codelab)

Za pomocą lokalnego narzędzia do testowania na komputerze możesz wykonać agregację i wygenerować podsumowanie raportów za pomocą niezaszyfrowanych raportów debugowania.

Kroki w ćwiczeniach w Codelab

Krok 2.1. Wyzwalanie raportu: aby móc zebrać raport, wygeneruj raport prywatny.

Krok 2.2. Tworzenie agregowalnego raportu debugowania: zmapuj zebrany raport w formacie JSON na raport w formacie AVRO.
Ten krok będzie podobny do tego, gdy specjaliści ds. technologii reklamowych zbierają raporty z punktów końcowych raportowania interfejsu API i konwertują raporty w formacie JSON na raporty w formacie Avro.

Krok 2.3. Przeanalizuj klucz zasobnika z raportu debugowania: klucze zasobników są tworzone przez dostawców technologii reklamowych. W tym ćwiczeniu zasobniki są zdefiniowane wstępnie, więc pobierz klucze zasobników zgodnie z ich nazwami.

Krok 2.4. Utwórz plik AVRO domeny wyjściowej: po pobraniu kluczy zasobnika utwórz plik AVRO domeny wyjściowej.

Krok 2.5. Tworzenie raportów podsumowania za pomocą narzędzia do testowania lokalnego: za pomocą narzędzia do testowania lokalnego możesz tworzyć raporty podsumowania w środowisku lokalnym.

Krok 2.6. Sprawdzanie raportu podsumowania: sprawdź raport podsumowania utworzony przez narzędzie do testowania lokalnego.

2.1. Raport o aktywatorach

Otwórz stronę demo Piaskownicy prywatności. Spowoduje to wygenerowanie prywatnego raportu zbiorczego. Raport możesz wyświetlić na stronie chrome://private-aggregation-internals.

chrome private aggregationinternals

Jeśli raport ma stan „Oczekuje”, możesz go wybrać i kliknąć „Wyślij wybrane raporty”.

send private aggregationreport

2.2. Tworzenie raportu umożliwiającego agregację danych na potrzeby debugowania

chrome://private-aggregation-internals skopiuj „Treść raportu”, który został otrzymany w punkcie końcowym [reporting-origin]/.well-known/private-aggregation/report-shared-storage.

Upewnij się, że w sekcji „Treść raportu” element aggregation_coordinator_origin zawiera wartość https://publickeyservice.msmt.aws.privacysandboxservices.com, co oznacza, że raport jest raportem zbiorczym AWS.

private aggregationreport

Umieść w pliku JSON element „Report Body”. W tym przykładzie możesz użyć programu vim. Możesz jednak użyć dowolnego edytora tekstu.

vim report.json

Wklej raport w miejscu report.json i zapisz plik.

plik JSON raportu

Następnie otwórz folder raportów i użyj narzędzia aggregatable_report_converter.jar, aby utworzyć raport debugowania, który można agregować. Spowoduje to utworzenie w bieżącym katalogu raportu o nazwie report.avro, który można zsumować.

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

2.3. Przeanalizuj klucz zbioru z raportu debugowania.

Usługa do agregacji wymaga 2 plików podczas zbiorczego przetwarzania. Raport możliwy do zsumowania i plik domeny wyjściowej. Plik domeny wyjściowej zawiera klucze, które chcesz pobrać z raportów podlegających agregacji. Aby utworzyć plik output_domain.avro, musisz mieć klucze zasobników, które można pobrać z raportów.

Klucze zasobników są projektowane przez wywołującego interfejs API, a demo zawiera gotowe przykładowe klucze zasobników. Ponieważ w tym przykładzie włączony jest tryb debugowania prywatnej agregacji, możesz przeanalizować niezaszyfrowany ładunek debugowania z sekcji „Treść raportu”, aby pobrać klucz zbiornika. W tym przypadku jednak klucze puli są tworzone przez demo Piaskownicy prywatności. Ponieważ prywatne agregacje na tej stronie są w trybie debugowania, możesz użyć wartości debug_cleartext_payload z sekcji „Treść raportu”, aby uzyskać klucz zbioru.

Skopiuj debug_cleartext_payload z treści raportu.

debug cleartext payload from reportbody

Otwórz narzędzie Dekodowanie debugowania danych dla prywatnej agregacji, wklej dane debug_cleartext_payload w polu „WEJŚCIE” i kliknij „Dekoduj”.

payloaddecoder

Strona zwraca wartość dziesiętną klucza puli. Oto przykładowy klucz zasobnika.

payload decoderresult

2.4. Tworzenie domeny wyjściowej AVRO

Gdy już mamy klucz zasobnika, skopiuj jego wartość dziesiętną. Utwórz output_domain.avro, używając klucza zasobnika. Pamiętaj, aby zastąpić kluczem zasobnika, który został pobrany.

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

Skrypt utworzy plik output_domain.avro w bieżącym folderze.

2,5. Tworzenie raportów zbiorczych za pomocą narzędzia do testów lokalnych

Do tworzenia raportów podsumowania użyjemy pliku LocalTestingTool_{version}.jar pobranego w sekcji 1.1. Użyj tego polecenia. Musisz zastąpić LocalTestingTool_{version}.jar wersją pobraną dla LocalTestingTool.

Aby wygenerować raport podsumowujący w lokalnym środowisku programistycznym, uruchom to polecenie:

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

Po wykonaniu polecenia powinieneś zobaczyć coś podobnego do tego obrazu. Gdy to nastąpi, zostanie utworzony raport output.avro.

Raport z testów lokalnych w pliku avro

2.6. Przeglądanie raportu podsumowującego

Utworzony raport podsumowujący jest w formacie AVRO. Aby móc je odczytać, musisz przekonwertować je z formatu AVRO na format JSON. W idealnej sytuacji technologia reklamowa powinna zawierać kod, który konwertuje raporty AVRO na format JSON.

W tym ćwiczeniu Codelab użyjemy udostępnionego narzędzia aggregatable_report_converter.jar, aby przekonwertować raport AVRO z powrotem na format JSON.

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

Zwraca on raport podobny do tego na ilustracji. oraz raport output.json utworzony w tym samym katalogu.

Plik avro podsumowania przekonwertowany na format JSON

Aby przejrzeć raport podsumowania, otwórz plik JSON w wybranym edytorze.

3. Wdrożenie usługi do agregacji

Aby wdrożyć usługę agregacji, wykonaj te czynności:

Krok 3. Wdrażanie usługi agregacji: wdróż usługę agregacji w AWS
Krok 3.1.
Sklonuj repozytorium usługi agregacji
Krok 3.2. Pobierz wstępnie utworzone zależności
Krok 3.3 Tworzenie środowiska programistycznego
Krok 3.4. Wdrażanie usługi do agregacji

3.1. Klonowanie repozytorium usługi agregacji

W środowisku lokalnym sklonuj repozytorium GitHub usługi agregacji.

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

3.2. Pobieranie wstępnie utworzonych zależności

Po sklonowaniu repozytorium usługi agregacji przejdź do folderu Terraform repozytorium i do odpowiedniego folderu w chmurze. Jeśli parametr cloud_provider ma wartość AWS, możesz przejść do /terraform/aws

cd <repository_root>/terraform/aws

W funkcji /terraform/aws wykonaj instrukcję download_prebuilt_dependencies.sh.

bash download_prebuilt_dependencies.sh

3.3 Tworzenie środowiska programistycznego

Utwórz środowisko programistyczne w /terraform/aws/environments. Utwórz folder o nazwie dev.

mkdir dev

Skopiuj zawartość folderu demo do folderu dev.

cp -R demo/* dev

Przenieś je do folderu dev.

cd dev

Zaktualizuj plik main.tf i naciśnij i, aby edytować plik input.

vim main.tf

Odkomentuj kod w czerwonym polu, usuwając znak # i zmieniając nazwy zasobników i kluczy.

W przypadku pliku main.tf w AWS:

Plik tf główny AWS

Nieskomentowany kod powinien wyglądać tak:

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

Po zakończeniu wprowadzania zmian zapisz je i zamknij edytor, naciskając esc -> :wq!. W ten sposób zapiszesz aktualizacje w main.tf.

Następnie zmień nazwę example.auto.tfvars na dev.auto.tfvars.

mv example.auto.tfvars dev.auto.tfvars

Zaktualizuj dev.auto.tfvars i naciśnij i, aby edytować plik.input

vim dev.auto.tfvars

Zaktualizuj pola w czerwonym polu na obrazku, podając prawidłowe parametry AWS ARN, które są podawane podczas konfiguracji usługi agregacji, środowiska i e-maila z powiadomieniem.

edit dev auto tfvarsfile

Po zakończeniu aktualizacji naciśnij esc -> :wq!. Spowoduje to zapisanie pliku dev.auto.tfvars, który powinien wyglądać mniej więcej tak, jak na poniższym obrazku.

zaktualizowano dev auto tfvarsfile

3.4. Wdrażanie usługi do agregacji

Aby wdrożyć usługę Aggregation Service, w tym samym folderze /terraform/aws/environments/dev zainicjuj Terraform.

terraform init

Powinieneś otrzymać coś podobnego do tego obrazu:

terraforminit

Po zainicjowaniu Terraform utwórz plan wykonania Terraform. Zwraca liczbę zasobów do dodania i inne dodatkowe informacje, jak na poniższym obrazku.

terraform plan

Poniżej możesz zobaczyć podsumowanie „Planu”. Jeśli jest to nowe wdrożenie, powinna pojawić się liczba zasobów, które zostaną dodane, z wartością 0 w kolumnach Zmiana i Zniszcz.

terraformplan

Gdy to zrobisz, możesz zastosować Terraform.

terraform apply

Gdy pojawi się prośba o potwierdzenie wykonania działań przez Terraform, wpisz yes jako wartość.

terraform applyprompt

Gdy usługa terraform apply zakończy działanie, zwraca te punkty końcowe: createJobgetJob. Zwracana jest też wartość frontend_api_id, którą musisz zaktualizować w Postman w sekcji 1.9.

terraform applycomplete

4. Tworzenie danych wejściowych usługi do agregacji

Utwórz raporty AVRO do grupowania w usłudze agregacji.

Krok 4. Tworzenie danych wejściowych usługi do agregacji: utwórz raporty usługi do agregacji, które są grupowane w pakiety na potrzeby usługi do agregacji.
Krok 4.1. Wyzwalanie raportu
Krok 4.2 Zbieraj raporty zbiorcze
Krok 4.3 Konwertowanie raportów na format AVRO
Krok 4.4. Tworzenie domeny wyjściowej AVRO

4.1. Raport o aktywatorach

Otwórz stronę demo Piaskownicy prywatności. Spowoduje to wygenerowanie prywatnego raportu zbiorczego. Raport możesz wyświetlić na stronie chrome://private-aggregation-internals.

chrome private aggregationinternals

Jeśli raport ma stan „Oczekuje”, możesz go wybrać i kliknąć „Wyślij wybrane raporty”.

send private aggregationreport

4.2. Zbieranie raportów zbiorczych

Zbieraj raporty podlegające agregacji z punktów końcowych .well-known odpowiedniego interfejsu API.

  • Prywatna agregacja
    [reporting-origin] /.well-known/private-aggregation/report-shared-storage
  • Attribution Reporting - Summary Report
    [reporting-origin] /.well-known/attribution-reporting/report-aggregate-attribution

W tym ćwiczeniu zbierzesz raporty ręcznie. W wersji produkcyjnej technicy reklam powinni gromadzić i konwertować raporty programowo.

chrome://private-aggregation-internals skopiuj „Treść raportu”, który został otrzymany w punkcie końcowym [reporting-origin]/.well-known/private-aggregation/report-shared-storage.

Upewnij się, że w sekcji „Treść raportu” element aggregation_coordinator_origin zawiera wartość https://publickeyservice.msmt.aws.privacysandboxservices.com, co oznacza, że raport jest raportem zbiorczym AWS.

private aggregationreport

Umieść w pliku JSON element „Report Body”. W tym przykładzie możesz użyć programu vim. Możesz jednak użyć dowolnego edytora tekstu.

vim report.json

Wklej raport w miejscu report.json i zapisz plik.

plik JSON raportu

4.3. Konwertowanie raportów na format AVRO

Raporty otrzymywane z punktów końcowych .well-known są w formacie JSON i muszą zostać przekonwertowane do formatu raportu AVRO. Gdy masz już raport w formacie JSON, przejdź do folderu raportów i użyj narzędzia aggregatable_report_converter.jar, aby utworzyć agregowany raport debugowania. Spowoduje to utworzenie w bieżącym katalogu raportu o nazwie report.avro, który można zsumować.

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

4.4. Tworzenie domeny wyjściowej AVRO

Aby utworzyć plik output_domain.avro, musisz mieć klucze zasobników, które można pobrać z raportów.

Klucze zbiorów są projektowane przez technologię reklamową. W tym przypadku klucze zbiorów tworzy witryna demo Piaskownicy prywatności. Ponieważ prywatne agregacje na tej stronie są w trybie debugowania, możesz użyć wartości debug_cleartext_payload z sekcji „Treść raportu”, aby uzyskać klucz zbioru.

Skopiuj debug_cleartext_payload z treści raportu.

debug cleartext payload from reportbody

Otwórz stronę goo.gle/ags-payload-decoder, wklej dane debug_cleartext_payload do pola „INPUT” i kliknij „Decode”.

payloaddecoder

Strona zwraca wartość dziesiętną klucza puli. Oto przykładowy klucz zasobnika.

payload decoderresult

Gdy mamy już klucz zasobnika, utwórz output_domain.avro. Pamiętaj, aby zastąpić kluczem zasobnika, który został pobrany.

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

Skrypt utworzy plik output_domain.avro w bieżącym folderze.

4,5. Przenoszenie raportów do zasobnika AWS

Po utworzeniu raportów AVRO (z sekcji 3.2.3) i domeny wyjściowej (z sekcji 3.2.4) przenieś raporty i domenę wyjściową do puli S3 na potrzeby raportowania.

Jeśli masz skonfigurowany interfejs wiersza poleceń AWS w środowisku lokalnym, użyj podanych niżej poleceń, aby skopiować raporty do odpowiedniego folderu raportów i zasonika S3.

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. Korzystanie z usługi agregacji

terraform apply zwracane są wartości create_job_endpoint, get_job_endpointfrontend_api_id. Skopiuj wartość frontend_api_id i wstaw ją do zmiennej globalnej Postmana frontend_api_id skonfigurowanej w sekcji wymagań wstępnych 1.9.

Krok 5. Korzystanie z usługi do agregacji: użyj interfejsu API usługi do agregacji, aby tworzyć i przeglądać raporty zbiorcze.
Krok 5.1. Używanie punktu końcowego createJob do zbiorczego przetwarzania
Krok 5.2. Używanie punktu końcowego getJob do pobierania stanu zbiorczego
Krok 5.3. Sprawdzanie raportu zbiorczego

5.1. Używanie punktu końcowego createJob do zbiorczego przetwarzania

W Postman otwórz kolekcję „Privacy Sandbox” i wybierz „createJob”.

Aby umieścić ładunek żądania, wybierz „Body” i „raw”.

postman createJob requestbody

Schemat ładunku createJob jest dostępny na github i wygląda podobnie do tego: Zastąp <> odpowiednimi polami.

{
  "job_request_id": "<job_request_id>",
  "input_data_blob_prefix": "<report_folder>/<report_name>.avro",
  "input_data_bucket_name": "<bucket_name>",
  "output_data_blob_prefix": "<output_folder>/<summary_report_prefix>",
  "output_data_bucket_name": "<bucket_name>",
  "job_parameters": {
    "output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
    "output_domain_bucket_name": "<bucket_name>",
    "attribution_report_to": "<reporting origin of report>",
    "reporting_site": "<domain of reporting origin(s) of report>", // Only one of attribution_report_to or reporting_site is required as of v2.7.0
    "report_error_threshold_percentage": "10",
    "debug_run": "true"
  }
}

Gdy klikniesz „Wyślij”, utworzy się zadanie z job_request_id. Gdy usługa agregacji zaakceptuje żądanie, powinna zostać zwrócona odpowiedź HTTP 202. Inne możliwe kody zwracane znajdziesz w kodach odpowiedzi HTTP.

postman createJob requeststatus

5.2. Używanie punktu końcowego getJob do pobierania stanu grupy

Aby sprawdzić stan żądania zadania, możesz użyć punktu końcowego getJob. W zbiorze „Privacy Sandbox” wybierz „getJob”.

W sekcji „Parametry” zaktualizuj wartość job_request_id na job_request_id, która została wysłana w żądaniu createJob.

postman getJobrequest

Wynik wywołania getJob powinien zwracać stan żądania zadania z kodem stanu HTTP 200. Żądanie „Body” zawiera niezbędne informacje, takie jak job_status, return_messageerror_messages (jeśli wystąpił błąd).

postman getJob requeststatus

Ponieważ witryna raportowania wygenerowanego raportu demonstracyjnego różni się od witryny wdrożonej w Twoim identyfikatorze AWS, możesz otrzymać odpowiedź z kodem return_code PRIVACY_BUDGET_AUTHORIZATION_ERROR. Jest to normalne, ponieważ witryna pochodzenia raportów nie jest zgodna z witryną raportowania dodaną do identyfikatora AWS.

{
    "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",
        "reporting_site": "<domain of reporting origin(s) of report>", // Only one of attribution_report_to or reporting_site is required as of v2.7.0
    },
    "request_processing_started_at": "2023-12-07T22:51:06.034472697Z"
}

5.3. Sprawdzanie raportu zbiorczego

Gdy otrzymasz raport podsumowujący w schowiku S3 wyjściowym, możesz go pobrać do środowiska lokalnego. Raporty podsumowania są w formacie AVRO i można je przekonwertować z powrotem do formatu JSON. Aby odczytać raport, możesz użyć polecenia aggregatable_report_converter.jar.

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

Zwraca to dane w formacie JSON z wartościami zbiorczymi każdego klucza zbiornika, które wyglądają podobnie do tego obrazu.

summaryreport

Jeśli Twoje żądanie createJob zawiera debug_run jako true, możesz otrzymać raport podsumowania w folderze debugowania w folderze output_data_blob_prefix. Raport jest w formacie AVRO i można go przekonwertować na format JSON za pomocą poprzedniego polecenia.

Raport zawiera klucz zbioru, dane bez szumu oraz szum dodany do danych bez szumu, aby utworzyć raport podsumowujący. Raport wygląda podobnie do tego widocznego na poniższym obrazku.

debugowanie raportu zbiorczego

Oprócz tego adnotacje zawierają in_reportsin_domain, co oznacza:

  • in_reports – klucz zbiornika jest dostępny w raportach podlegających agregacji.
  • in_domain – klucz zasobnika jest dostępny w pliku AVRO domeny wyjściowej.