Podczas pracy z usługą agregacji może wystąpić wiele problemów, w tym związanych z formatowaniem raportów, problemami z domeną wyjściową i problemami z koordynatorem. Aby dokładnie zdiagnozować problem, musisz znać źródło błędu i zawierające się w nim metadane.
Tematy przewodnika:
- Sprawdzanie konfiguracji interfejsu API pomiarów 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 klienta
Po zweryfikowaniu, czy serwer źródłowy jest prawidłowo zarejestrowany, wykonaj te czynności:
Sprawdź, jak uruchamiasz zgłoszenia. Sprawdź, czy otrzymujesz raport w odpowiednim formacie, w zależności od tego, którego interfejsu API używasz:
- Attribution Reporting API
- W przypadku interfejsu Attribution Reporting API sprawdź, czy źródło zostało zarejestrowane (Event i Summary). Aby przeprowadzić rejestrację reguły (zdarzenia i podsumowania), sprawdź za pomocą narzędzia do weryfikacji nagłówków, czy kod JSON przekazany do
Attribution-Reporting-Register-Trigger
jest poprawny. (więcej informacji znajdziesz w artykule Raporty zbiorcze Attribution Reporting API).
- W przypadku interfejsu Attribution Reporting API sprawdź, czy źródło zostało zarejestrowane (Event i Summary). Aby przeprowadzić rejestrację reguły (zdarzenia i podsumowania), sprawdź za pomocą narzędzia do weryfikacji nagłówków, czy kod JSON przekazany do
- Interfejs Private Aggregation API
- Raportowanie w interfejsie Private Aggregation API można przeprowadzać za pomocą funkcji
contributeToHistogram
. Sprawdź, czy przekazujesz klucz i wartość puli. Klucz zasobnika powinien mieć formatBigInt
. (więcej informacji znajdziesz w dokumentacji Private Aggregation API)
- Raportowanie w interfejsie Private Aggregation API można przeprowadzać za pomocą funkcji
- Attribution Reporting API
Jeśli uruchamiasz raporty zgodnie z zaleceniami, ale problem nadal występuje, sprawdź, czy w konsoli Chrome dla programistów na karcie „Konsola” i „Sieć” występują błędy.
Jeśli potrzebujesz dodatkowej pomocy w rozwiązywaniu problemów z tymi interfejsami API klienta, zapoznaj się z naszą przewodnikiem po debugowaniu interfejsu Attribution Reporting API i Private Aggregation API + Shared Storage API.
Rozwiązywanie problemów z konfiguracją źródła danych raportowania
Na serwerze źródłowym raportów musisz zadeklarować odpowiednie punkty końcowe .well-known
, do których będą wysyłane raporty podlegające agregacji. Sprawdź, czy wdrożony serwer źródłowy raportów został prawidłowo zarejestrowany i zarejestrowany.
Czy źródło raportów otrzymuje zgłoszenia?
Sprawdź, czy wdrożony serwer źródłowy raportowania został prawidłowo zarejestrowany i zarejestrowany. Na tym serwerze masz zadeklarowane odpowiednie punkty końcowe .well-known
, do których będą wysyłane raporty podlegające agregacji.
Pomiarowy interfejs API po stronie klienta | Punkt końcowy z możliwością agregacji dopasowania |
---|---|
Raportowanie atrybucji | 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 jest prawidłowo zarejestrowany, wykonaj te czynności:
Sprawdź, jak uruchamiasz zgłoszenia. Sprawdź, czy otrzymujesz raport w odpowiednim formacie, w zależności od tego, którego interfejsu API używasz:
Jeśli uruchamiasz raporty zgodnie z zaleceniami, ale problem nadal występuje, sprawdź, czy w konsoli Chrome dla deweloperów na karcie „Konsola” i „Sieć” występują błędy.
Jeśli potrzebujesz dodatkowej 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 API.
Rozwiązywanie problemów z raportami zbiorczymi
Raporty zbiorcze są generowane przez interfejsy API pomiaru po stronie klienta i wysyłane do źródła raportowania. Te raporty powinny być konwertowane na format AVRO
przez punkt końcowy raportowania. Jeśli wystąpią problemy z tą konwersją lub jeśli same raporty są niekompletne, w usłudze agregacji mogą wystąpić błędy.
Czy raporty podlegające agregacji są prawidłowo konwertowane?
Sprawdź, czy punkt końcowy raportowania (.well-known/…
) prawidłowo konwertuje dany agregowalny raport w formacie JSON na AVRO
.
Błędy interfejsu API, które mogą wystąpić z powodu tego problemu:
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ą być spowodowane nieprawidłowym generowaniem raportów AVRO, niezależnie od tego, czy są to agregowane raporty AVRO, czy raporty AVRO domeny wyjściowej. Czy generowane są prawidłowo agregowane raporty AVRO? Dane będą musiały zostać zdekodowane z formatu Base64 i przekształcone w tablicę bajtów. Upewnij się, że raport jest w formacie avro. Sprawdź też, czy domena wyjściowa AVRO jest prawidłowa. Zbiory są konwertowane na format ucieczki w formacie szesnastkowym Unicode, a potem na tablicę bajtów.
Jeśli widzisz więcej niż 1 liczbę błędów, więcej informacji o błędach znajdziesz na stronie usługi agregacji w GitHubu.
|
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 błąd ten może być spowodowany problemem z rejestracją reguły. Sprawdź, czy zarejestrowały one swój element wyzwalający w prawidłowej chmurze za pomocą pola aggregation_coordinator_origin (instrukcje tutaj). Możesz też dostarczać zaszyfrowane przez AWS raporty do wdrożenia usługi agregacji w Google Cloud lub zaszyfrowane przez Google Cloud raporty do wdrożenia AWS. Poproś ich o sprawdzenie, który punkt końcowy klucza publicznego został użyty do zaszyfrowania raportów podlegających agregacji. W przypadku Google Cloud pole „aggregation_coordinator_origin” w raporcie możliwym do zsumowania powinno mieć wartość https://publickeyservice.msmt.gcp.privacysandboxservices.com. W przypadku AWS będzie to 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 opisie 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 binarnym lub trybem debugowania rozwiązaniem jest użycie odpowiedniego binarnego. Aby użyć gotowego AMI lub samodzielnie skompilować AMI, wykonaj podane tutaj instrukcje. |
Aby przejść weryfikację:
Za pomocą narzędzia
aggregatable_report_converter
możesz przekształcić zebrane z punktu końcowego .well-known raporty, które można agregować, w format AVRO, i utworzyć klucze domeny wyjściowej. (Uwaga: pliki wyjściowe domeny powinny być 16-bajtowym ciągiem bajtów w systemie big-endian).Wykonaj czynności w laboratorium kodu dla swojego dostawcy chmury publicznej, aby zebrać raporty debugowania i uruchomić zadanie usługi do agregacji za pomocą kluczy domeny wyjściowej: a. Google Cloud: wykonaj czynności opisane w krokach 3.1.2–3.2.3 Codelab Google Cloud dotyczącego usługi agregacji. Amazon Web Services: wykonaj czynności opisane w krokach 4.2–5.3 Codelab usługi agregacji AWS.
Jeśli zwróci odpowiedź SUCCESS
, oznacza to, że konwersja działa prawidłowo.
Czy raporty podlegające agregacji są nienaruszone?
Sprawdź, czy raport zbiorczy, klucze domen wyjściowych i informacje udostępnione są nienaruszone. Aby uzyskać więcej informacji, zapoznaj się z przykładowymi kodami, które umożliwiają konwertowanie raportów podlegających agregacji i tworzenie plików domen.
Błędy interfejsu API, które mogą odpowiadać temu problemowi:
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 w danej lokalizacji danych raportów wejściowych znajdują się raporty, które mają zostać przetworzone? Czy masz uprawnienia do odczytu z lokalizacji magazynu dla raportów i domeny wyjściowej?
|
Aby przejść weryfikację:
Weryfikacja raportu zbiorczego:
- Wygeneruj raporty zbiorcze i użyj narzędzia
aggregatable_report_converter
, aby przekonwertować domenę wyjściową na formatAVRO
. - Wykonaj żądanie
createJob
z tym raportem umożliwiającym agregację i z wynikiem w pliku domeny. - Jeśli zwróci wartość
SUCCESS
, oznacza to, że raport z możliwością agregacji jest nienaruszony. Jeśli zwróci on błąd, oznacza to, że wystąpił problem z raportami możliwymi do zsumowania lub z raportami i domenami. - W następnym kroku sprawdź plik domeny.
- Wygeneruj raporty zbiorcze i użyj narzędzia
Sprawdź plik domeny wyjściowej:
- Wygeneruj plik domeny wyjściowej i użyj narzędzia
aggregatable_report_converter
do utworzenia raportu z możliwością agregacji. - Wykonaj żądanie
createJob
z tym raportem umożliwiającym agregację i z wynikiem w pliku domeny. - Jeśli zwraca wartość
SUCCESS
, oznacza to, że domena wyjściowa jest nienaruszona, a problem występuje w kodzie, który tworzy raport do zagregowania. - Aby sprawdzić
shared_info
, przejdź do następnego kroku.
- Wygeneruj plik domeny wyjściowej i użyj narzędzia
Sprawdź udostępnione informacje:
- Upewnij się, że masz włączone raporty debugowania. W raportach z włączonym debugowaniem będzie dostępne pole
debug_cleartext_payload
. - Utwórz raport debugowania na potrzeby lokalnego narzędzia do testowania i użyj jako ładunku danych
debug_cleartext_payload
. - Uruchom narzędzie do testowania lokalnego z plikiem domeny. Jeśli jest to plik
SUCCESS
, oznacza to, że plikshared_info
został zmodyfikowany.
- Upewnij się, że masz włączone raporty debugowania. W raportach z włączonym debugowaniem będzie dostępne pole
Jeśli podejrzewasz, że wystąpiły dalsze błędy lub próba manipulacji, pobierz raport zbiorczy w formacie JSON, klucz domeny, wygenerowany zagregowany raport AVRO
oraz domenę wyjściową, a potem wykonaj kolejne czynności.
Sprawdzanie nowej wersji wdrożenia
Sprawdź, czy Twoja wersja usługi agregacji jest nadal obsługiwana. Po ustaleniu wersji, której używasz, sprawdź listę wersji usługi Aggregation i upewnij się, że w Twojej wersji nie ma ostrzeżenia o zakończeniu obsługi:This release has reached its end of support on { date }
. Poniższe instrukcje dotyczące określania wersji, która została wdrożona, dotyczą obsługiwanych publicznych chmur.
czynności w Google Cloud,
- Otwórz Compute Engine > Instancje maszyn wirtualnych.
- Kliknij instancję maszyny wirtualnej o nazwie zawierającej
-worker-
. - Znajdź sekcję
Custom Metadata
, a potem klucztee-image-reference
.- Uwaga: każda maszyna wirtualna utworzona w Google Cloud przez Terraform powinna mieć te metadane (metadane
tee-image-reference
w module worker).
- Uwaga: każda maszyna wirtualna utworzona w Google Cloud przez Terraform powinna mieć te metadane (metadane
- Wartość parametru
tee-image-reference
będzie zawierać numer wersji. Na przykład numer wersji tej ścieżki tov2.9.1
. Są to wstępnie utworzone obrazy, które znajdują się w Artifact Registry w projekcie Google Cloud.- Uwaga: ta opcja jest istotna, jeśli używasz gotowych komponentów. Jeśli nie, nazwa powinna być zgodna z nazwą i tagami, które zostały dodane przez Ciebie do obrazu.
(na przykład
us.docker.pkg.dev/<gcp_project_name>/artifacts:aggregation-service- container-artifacts-worker_mp_go_prod:2.9.1
)
- Uwaga: ta opcja jest istotna, jeśli używasz gotowych komponentów. Jeśli nie, nazwa powinna być zgodna z nazwą i tagami, które zostały dodane przez Ciebie do obrazu.
(na przykład
czynności 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ź Szczegóły > AMI (obraz Amazon Machine Image).
- W ścieżce obrazu powinna być uwzględniona nazwa wersji. Na przykład numer wersji tej ścieżki to
v2.9.1
.- Uwaga: ta opcja jest istotna, jeśli używasz wstępnie utworzonych komponentów. Jeśli nie, nazwa powinna być zgodna z nazwą i tagami, które zostały dodane przez Ciebie do obrazu.
(na przykład
aggregation-service-enclave_2.9.1--2024-10-03T01-24-25Z
)
- Uwaga: ta opcja jest istotna, jeśli używasz wstępnie utworzonych komponentów. Jeśli nie, nazwa powinna być zgodna z nazwą i tagami, które zostały dodane przez Ciebie do obrazu.
(na przykład
Następne kroki
Jeśli nie widzisz rozwiązania problemu z usługą agregacji, poinformuj nas o tym, przesyłając problem do GitHuba lub wypełniając formularz pomocy technicznej.