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
- Rozwiązywanie problemów z konfiguracją źródła raportowania
- Rozwiązywanie problemów z raportami zbiorczymi
- Sprawdzanie wersji wdrożenia
Weryfikowanie konfiguracji interfejsu API pomiarów po stronie klienta
Po sprawdzeniu, czy serwer źródłowy został prawidłowo zarejestrowany, wykonaj te czynności:
Sprawdź, jak wywołujesz raporty. Sprawdź, czy otrzymujesz raport w odpowiednim formacie w zależności od używanego interfejsu API:
- Attribution Reporting API
- W przypadku interfejsu Attribution Reporting API sprawdź, czy źródło zostało zarejestrowane (zdarzenie i podsumowanie). Aby zarejestrować wyzwalacz (zdarzenie i podsumowanie), sprawdź, czy kod JSON przekazywany do funkcji
Attribution-Reporting-Register-Triggerjest prawidłowy, korzystając z narzędzia do weryfikacji nagłówków. (Więcej informacji znajdziesz w artykule Raporty podsumowujące interfejsu Attribution Reporting API)
- W przypadku interfejsu Attribution Reporting API sprawdź, czy źródło zostało zarejestrowane (zdarzenie i podsumowanie). Aby zarejestrować wyzwalacz (zdarzenie i podsumowanie), sprawdź, czy kod JSON przekazywany do funkcji
- Private Aggregation API
- Raportowanie w interfejsie Private Aggregation API można przeprowadzić za pomocą funkcji
contributeToHistogram. Sprawdź, czy przekazujesz klucz i wartość segmentu. Klucz zasobu powinien mieć formatBigInt. (Więcej informacji o interfejsie Private Aggregation API)
- Raportowanie w interfejsie Private Aggregation API można przeprowadzić za pomocą funkcji
- Attribution Reporting API
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 API i interfejsu 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:
Sprawdź, jak wywołujesz raporty. Sprawdź, czy otrzymujesz raport w odpowiednim formacie w zależności od używanego interfejsu API:
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 API i interfejsu 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 APIW 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 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ę:
Za pomocą
aggregatable_report_convertermoż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).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_name i output_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ę:
Sprawdź raport zbiorczy:
- Generuj raporty zbiorcze i używaj narzędzia
aggregatable_report_converter, aby przekształcać domenę wyjściową w formatAVRO. - Uruchom żądanie
createJobz 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.
- Generuj raporty zbiorcze i używaj narzędzia
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
createJobz 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.
- Wygeneruj plik domeny wyjściowej i użyj narzędzia
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_payloadjako ładunku. - Uruchom lokalne narzędzie do testowania z plikiem domeny. Jeśli jest to
SUCCESS, oznacza to, że plikshared_infozostał zmodyfikowany.
- Sprawdź, czy masz włączone raporty debugowania. Raporty z włączonym debugowaniem będą zawierać pole
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
- Otwórz Compute Engine > Instancje maszyn wirtualnych.
- Kliknij instancję maszyny wirtualnej, której nazwa zawiera znak
-worker-. - Znajdź sekcję
Custom Metadata, a potem klucztee-image-reference.- Uwaga: każda maszyna wirtualna udostępniona w Google Cloud przez Terraform powinna mieć te metadane (
tee-image-referencemetadane w module roboczym).
- Uwaga: każda maszyna wirtualna udostępniona w Google Cloud przez Terraform powinna mieć te metadane (
- Wartość
tee-image-referencebędzie zawierać numer wersji. Na przykład numer wersji ścieżkiv2.9.1tov2.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)
- 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:
Instrukcje dotyczące Amazon Web Services
- W konsoli Amazon Web Services otwórz instancje EC2.
- Kliknij instancję o nazwie
aggregation-service-operator-dev-env. - Na stronie instancji znajdź kolejno Details (Szczegóły) > AMI (Amazon Machine Image).
- Nazwa wersji powinna być uwzględniona w ścieżce obrazu. Na przykład numer wersji w przypadku ścieżki
v2.9.1tov2.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)
- 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:
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.