Zdiagnozuj środowisko (nowe lub zmodernizowane)

Podczas pracy z usługą agregacji może wystąpić wiele problemów, m.in. z formatowaniem raportów, domeną wyjściową i koordynatorem. Aby dokładnie zdiagnozować problem, musisz poznać źródło błędu i wszystkie metadane, które zawiera.

Tematy przewodnika:

Weryfikowanie konfiguracji interfejsu API pomiarów po stronie klienta

Po sprawdzeniu, czy serwer źródłowy został prawidłowo zarejestrowany, wykonaj te czynności:

  1. Sprawdź, jak wywołujesz raporty. Sprawdź, czy otrzymujesz raport w odpowiednim formacie w zależności od używanego interfejsu API:

  2. Jeśli generujesz raporty zgodnie z zaleceniami, ale problem nadal występuje, sprawdź, czy w konsoli Narzędzi Chrome dla programistów na kartach „Konsola” i „Sieć” nie ma błędów.

Jeśli potrzebujesz dalszej pomocy w rozwiązywaniu problemów z tymi interfejsami API klienta, zapoznaj się z naszymi wskazówkami dotyczącymi debugowania interfejsu Attribution Reporting APIinterfejsu Private Aggregation API + Shared Storage.

Rozwiązywanie problemów z konfiguracją źródła raportowania

Serwer pochodzenia raportowania to miejsce, w którym zadeklarowano prawidłowe .well-known punkty końcowe, do których będą wysyłane raporty z możliwością agregacji. Sprawdź, czy wdrożony serwer źródłowy raportowania został prawidłowo zarejestrowany.

Czy źródło raportowania otrzymuje raporty?

Sprawdź, czy wdrożony serwer źródłowy raportowania został prawidłowo zarejestrowany. Na tym serwerze zadeklarowano prawidłowe punkty końcowe .well-known, do których będą wysyłane raporty z możliwością agregacji.

Interfejs Measurement API po stronie klienta Pasujący punkt końcowy z możliwością agregacji
Attribution Reporting POST /.well-known/attribution-reporting/report-aggregate-attribution
Private Aggregation + Shared Storage (Combo) POST /.well-known/private-aggregation/report-shared-storage
Private Aggregation + Protected Audience (Combo) POST /.well-known/private-aggregation/report-protected-audience

Po sprawdzeniu, czy serwer źródłowy został prawidłowo zarejestrowany, wykonaj te czynności:

  1. Sprawdź, jak wywołujesz raporty. Sprawdź, czy otrzymujesz raport w odpowiednim formacie w zależności od używanego interfejsu API:

  2. Jeśli generujesz raporty zgodnie z zaleceniami, ale problem nadal występuje, sprawdź, czy w konsoli Narzędzi Chrome dla programistów na kartach „Konsola” i „Sieć” nie ma błędów.

Jeśli potrzebujesz dalszej pomocy w rozwiązywaniu problemów z tymi interfejsami API klienta , zapoznaj się z wskazówkami dotyczącymi debugowania interfejsu Attribution Reporting APIinterfejsu Private Aggregation API + Shared Storage.

Rozwiązywanie problemów z raportami zbiorczymi

Raporty zbiorcze są generowane przez interfejsy API pomiarów po stronie klienta i wysyłane do Twojego źródła raportowania. Te raporty powinny być konwertowane do formatu AVRO przez punkt końcowy raportowania. Jeśli wystąpią problemy z tą konwersją lub same raporty będą niekompletne, w usłudze agregacji mogą pojawić się błędy.

Czy raporty zbiorcze są prawidłowo konwertowane?

Sprawdź, czy punkt końcowy raportowania (.well-known/…) prawidłowo przekształca podany raport JSON z możliwością agregacji w AVRO.

Błędy interfejsu API, które mogą wystąpić z tego powodu:

Błąd DECRYPTION_ERROR
Przykład
                "result_info": {
                    "return_code": "REPORTS_WITH_ERRORS_EXCEEDED_THRESHOLD",
                    "return_message": "Aggregation job failed early because the number of reports excluded from aggregation exceeded threshold.",
                    "error_summary": {
                        "error_counts": [
                            {
                                "category": "DECRYPTION_ERROR",
                                "count": 1,
                                "description": "Unable to decrypt the report. This may be caused by: tampered aggregatable report shared info, corrupt encrypted report, or other such issues."
                            },
                            {
                                "category": "NUM_REPORTS_WITH_ERRORS",
                                "count": 1,
                                "description": "Total number of reports that had an error. These reports were not considered in aggregation. See additional error messages for details on specific reasons."
                            }
                        ],
                        "error_messages": []
                    }
                }
            
Czek Może to być spowodowane błędami odszyfrowywania, które mogą wynikać z nieprawidłowo wygenerowanych raportów AVRO, zarówno tych z możliwością agregacji, jak i tych dotyczących domeny wyjściowej. Czy raporty AVRO z możliwością agregacji są generowane prawidłowo? Ładunek musi zostać zdekodowany w formacie base64 i przekonwertowany na tablicę bajtów. Sprawdź, czy raport jest w formacie avro. Sprawdź też, czy domena wyjściowa AVRO jest prawidłowa. Nazwy zasobników są konwertowane na format szesnastkowy Unicode z sekwencjami ucieczki, a następnie na tablicę bajtów. Jeśli widzisz więcej niż jedną liczbę błędów, więcej informacji o błędach znajdziesz na stronie usługi agregacji w GitHubie.
Błąd DECRYPTION_KEY_NOT_FOUND
Przykład
                "result_info": {
                    "return_code": "REPORTS_WITH_ERRORS_EXCEEDED_THRESHOLD",
                    "return_message": "Aggregation job failed early because the number of reports excluded from aggregation exceeded threshold.",
                    "error_summary": {
                        "error_counts": [{
                            "category": "DECRYPTION_KEY_NOT_FOUND",
                            "count": 1,
                            "description": "Could not find decryption key on private key endpoint."
                        }, {
                            "category": "NUM_REPORTS_WITH_ERRORS",
                            "count": 1,
                            "description": "Total number of reports that had an error. These reports were not considered in aggregation. See additional error messages for details on specific reasons."
                        }],
                        "error_messages": []
                    }
                }
            
Czek Attribution Reporting API.

W przypadku interfejsu Attribution Reporting API ten błąd może być spowodowany problemem z rejestracją wyzwalacza. Sprawdź, czy zarejestrowali wyzwalacz w odpowiedniej chmurze za pomocą pola aggregation_coordinator_origin (instrukcje znajdziesz tutaj). Możesz też udostępniać zaszyfrowane w AWS raporty wdrożeniu usługi Aggregation Service w Google Cloud lub zaszyfrowane w Google Cloud raporty wdrożeniu w AWS. Poproś ich o potwierdzenie, którego punktu końcowego klucza publicznego użyto do zaszyfrowania raportów z możliwością agregacji. W przypadku Google Cloud pole „aggregation_coordinator_origin” w raporcie z możliwością agregacji powinno mieć wartość https://publickeyservice.msmt.gcp.privacysandboxservices.com. W przypadku AWS powinno mieć wartość https://publickeyservice.msmt.aws.privacysandboxservices.com.

Private Aggregation API

W przypadku interfejsu Private Aggregation API musisz zdefiniować parametr `aggregationCoordinatorOrigin`, korzystając z przykładu w sekcji Wybór koordynatora agregacji w wyjaśnieniu interfejsu Private Aggregation API. Jako aggregationCoordinatorOrigin podaj https://publickeyservice.msmt.gcp.privacysandboxservices.com.

Na przykład:

                sharedStorage.run('someOperation', {'privateAggregationConfig':
                {'aggregationCoordinatorOrigin': ' https://publickeyservice.msmt.gcp.privacysandboxservices.com'}});

            
Błąd DECRYPTION_KEY_FETCH_ERROR
Przykład
                "result_info": {
                        "return_code": "REPORTS_WITH_ERRORS_EXCEEDED_THRESHOLD",
                        "return_message": "Aggregation job failed early because the number of reports excluded from aggregation exceeded threshold.",
                        "error_summary": {
                            "error_counts": [
                                {
                                    "category": "DECRYPTION_KEY_FETCH_ERROR",
                                    "count": 1,
                                    "description": "Fetching the decryption key for report decryption failed. This can happen using an unapproved aggregation service binary, running the aggregation service binary in debug mode, key corruption or service availability issues."
                                },
                                {
                                    "category": "NUM_REPORTS_WITH_ERRORS",
                                    "count": 1,
                                    "description": "Total number of reports that had an error. These reports were not considered in aggregation. See additional error messages for details on specific reasons."
                                }
                            ]
                        }
                }
            
Czek W przypadku problemów z niezatwierdzonym plikiem binarnym lub trybem debugowania użycie właściwego pliku binarnego rozwiąże problem. Aby użyć gotowego obrazu AMI, postępuj zgodnie z instrukcjami podanymi tutaj lub samodzielnie utwórz obraz AMI.

Aby przejść weryfikację:

  1. Za pomocą aggregatable_report_converter możesz przekonwertować raporty możliwe do agregowania zebrane z punktu końcowego .well-known na format AVRO i utworzyć klucze domeny wyjściowej. (Uwaga: pliki domeny wyjściowej powinny być 16-bajtowym ciągiem bajtów w formacie big-endian).

  2. Postępuj zgodnie z instrukcjami w samouczku dotyczącym Twojego dostawcy chmury publicznej, aby zebrać raporty debugowania i uruchomić zadanie usługi do agregacji za pomocą kluczy domeny wyjściowej: a. Google Cloud: wykonaj kroki 3.1.2–3.2.3 w samouczku dotyczącym usługi agregacji w Google Cloud. Amazon Web Services: wykonaj kroki 4.2–5.3 w samouczku dotyczącym usługi agregacji w AWS.

Jeśli otrzymasz odpowiedź SUCCESS, oznacza to, że konwersja działa.

Czy raporty z możliwością agregacji są nienaruszone?

Sprawdź, czy raport zbiorczy, klucze domeny wyjściowej i udostępnione informacje są nienaruszone. Jeśli chcesz uzyskać więcej informacji, zapoznaj się z przykładowymi kodami, aby przekonwertować raporty możliwe do agregowania i utworzyć pliki domen.

Błędy interfejsu API, które mogą się pojawić w związku z tym problemem:

Błąd INPUT_DATA_READ_FAILED
Punkt końcowy createJob
Czek Czy pola input_data_bucket_name, input_data_blob_prefix, output_data_bucket_nameoutput_data_blob_prefix w prośbie createJob są prawidłowe? Czy lokalizacja danych raportu wejściowego zawiera raporty do przetworzenia? Czy masz uprawnienia do odczytu z miejsca przechowywania raportów i domeny wyjściowej?

Aby przejść weryfikację:

  1. Sprawdź raport zbiorczy:

    • Generuj raporty zbiorcze i używaj narzędzia aggregatable_report_converter, aby przekształcać domenę wyjściową w format AVRO.
    • Uruchom żądanie createJob z tym raportem z możliwością agregacji i plikiem domeny wyjściowej.
    • Jeśli zwracana jest wartość SUCCESS, oznacza to, że raport zbiorczy jest nienaruszony. Jeśli pojawi się błąd, oznacza to, że wystąpił problem z raportem z możliwością agregacji lub z raportem i domeną.
    • W następnym kroku sprawdź plik domeny.
  2. Sprawdź plik domeny wyjściowej:

    • Wygeneruj plik domeny wyjściowej i użyj narzędzia aggregatable_report_converter , aby utworzyć raport z możliwością agregacji.
    • Uruchom żądanie createJob z tym raportem z możliwością agregacji i plikiem domeny wyjściowej.
    • Jeśli zwracana jest wartość SUCCESS, oznacza to, że domena wyjściowa jest nienaruszona i w kodzie występuje problem z utworzeniem raportu z możliwością agregacji.
    • Aby sprawdzić shared_info, przejdź do następnego kroku.
  3. Sprawdź udostępnione informacje:

    • Sprawdź, czy masz włączone raporty debugowania. Raporty z włączonym debugowaniem będą zawierać pole debug_cleartext_payload.
    • Utwórz raport debugowania do użycia z lokalnym narzędziem do testowania i użyj debug_cleartext_payload jako ładunku.
    • Uruchom lokalne narzędzie do testowania z plikiem domeny. Jeśli jest to SUCCESS, oznacza to, że plik shared_info został zmodyfikowany.

Jeśli podejrzewasz wystąpienie innych błędów lub manipulacji, zbierz zagregowany raport JSON, klucz domeny, wygenerowany zagregowany raport AVRO i domenę wyjściową, a następnie przejdź do kolejnych kroków.

Sprawdzanie nowej wersji wdrożenia

Sprawdź, czy Twoja wersja usługi Aggregation Service jest nadal obsługiwana. Gdy ustalisz, której wersji używasz, sprawdź listę wersji usługi Aggregation Service i upewnij się, że Twoja wersja nie zawiera ostrzeżenia o zakończeniu wsparcia:This release has reached its end of support on { date }. Poniższe instrukcje dotyczące określania wdrożonej wersji są przeznaczone dla obsługiwanych chmur publicznych.

Czynności w Google Cloud

  1. Otwórz Compute Engine > Instancje maszyn wirtualnych.
  2. Kliknij instancję maszyny wirtualnej, której nazwa zawiera znak -worker-.
  3. Znajdź sekcję Custom Metadata, a potem klucz tee-image-reference.
  4. Wartość tee-image-reference będzie zawierać numer wersji. Na przykład numer wersji ścieżki v2.9.1 to v2.9.1. Są to gotowe obrazy znajdujące się w Artifact Registry projektu Google Cloud.
    • Uwaga: dotyczy to gotowych komponentów. Jeśli ich nie używasz, nazwa powinna być zgodna z nazwą i tagami, które zostały przez Ciebie nadane obrazowi. (przykład: us.docker.pkg.dev/<gcp_project_name>/artifacts:aggregation-service- container-artifacts-worker_mp_go_prod:2.9.1)

Instrukcje dotyczące Amazon Web Services

  1. W konsoli Amazon Web Services otwórz instancje EC2.
  2. Kliknij instancję o nazwie aggregation-service-operator-dev-env.
  3. Na stronie instancji znajdź kolejno Details (Szczegóły) > AMI (Amazon Machine Image).
  4. Nazwa wersji powinna być uwzględniona w ścieżce obrazu. Na przykład numer wersji w przypadku ścieżki v2.9.1 to v2.9.1.
    • Uwaga: dotyczy to gotowych komponentów. Jeśli ich nie używasz, nazwa powinna być zgodna z nazwą i tagami, które zostały przez Ciebie nadane obrazowi. (przykład: aggregation-service-enclave_2.9.1--2024-10-03T01-24-25Z)

Następne kroki

Jeśli nie znajdziesz rozwiązania problemu z usługą agregacji, poinformuj nas o tym, zgłaszając problem w serwisie GitHub lub przesyłając formularz pomocy technicznej.