عوامل متعددی میتوانند در حین کار با Aggregation Service مشکلاتی را ایجاد کنند، از جمله قالببندی گزارشها، مشکلات دامنه خروجی و مشکلات هماهنگکننده. برای تشخیص دقیق مشکل، درک منبع خطا و هر ابرداده ای که در آن وجود دارد، مهم است.
موضوعات راهنما:
- تنظیم API اندازه گیری مشتری را تأیید کنید
- عیب یابی تنظیم مبدا گزارش شما
- عیب یابی گزارش های انبوه شما
- نسخه استقرار خود را بررسی کنید
تنظیم API اندازه گیری مشتری را تأیید کنید
پس از اینکه تأیید کردید سرور اصلی شما به درستی ثبت شده است، مراحل زیر را انجام دهید:
بررسی کنید که چگونه گزارشها را راهاندازی میکنید. تأیید کنید که فرمت گزارش صحیحی را دریافت می کنید که بر اساس آن API استفاده می شود:
- Attribution Reporting API
- برای Attribution Reporting API، مطمئن شوید که منبع را با موفقیت ثبت کرده اید ( رویداد و خلاصه ). برای انجام ثبت Trigger ( رویداد و خلاصه )، مطمئن شوید که JSON ارسال شده به
Attribution-Reporting-Register-Trigger
با استفاده از ابزار اعتبارسنجی هدر صحیح است. ( گزارشهای خلاصه API گزارش Attribution Reporting را بیشتر بخوانید)
- برای Attribution Reporting API، مطمئن شوید که منبع را با موفقیت ثبت کرده اید ( رویداد و خلاصه ). برای انجام ثبت Trigger ( رویداد و خلاصه )، مطمئن شوید که JSON ارسال شده به
- Private Aggregation API
- گزارش دهی در Private Aggregation API را می توان با استفاده از تابع
contributeToHistogram
تکمیل کرد. مطمئن شوید که کلید سطل و مقدار را ارسال می کنید. کلید سطل باید در قالبBigInt
باشد. (بیشتر بخوانید Private Aggregation API )
- گزارش دهی در Private Aggregation API را می توان با استفاده از تابع
- Attribution Reporting API
اگر گزارشها را همانطور که توصیه میشود راهاندازی میکنید، اما همچنان مشکل را مشاهده میکنید، بررسی کنید که آیا خطاهایی در کنسول برنامهنویس Chrome در تب «کنسول» و «شبکه» مشاهده شده است یا خیر.
اگر به پشتیبانی عیبیابی بیشتری برای این APIهای سرویس گیرنده نیاز دارید، به راهنمای رفع اشکال ما برای API Reporting Attribute و API Aggregation خصوصی + ذخیرهسازی مشترک ادامه دهید.
عیب یابی تنظیم مبدا گزارش شما
سرور مبدأ گزارش جایی است که شما نقاط پایانی .well-known
متناظر صحیح را اعلام کردهاید که گزارشهای جمعآوریشده به آنجا ارسال میشوند. بررسی کنید که سرور مبدا گزارش مستقر شما به درستی ثبت و ثبت شده است.
آیا منبع گزارش شما گزارش هایی دریافت می کند؟
بررسی کنید که سرور مبدا گزارش مستقر شما به درستی ثبت و ثبت شده است. این سرور جایی است که شما نقاط پایانی .well-known
مربوطه را به درستی اعلام کردهاید که گزارشهای جمعآوریشده به آنها ارسال میشود.
API اندازه گیری سمت مشتری | نقطه پایانی قابل تطبیق |
---|---|
گزارش اسناد | POST /.well-known/Atribution-reporting/report-Aggregate-Atribution |
تجمیع خصوصی + فضای ذخیرهسازی مشترک (ترکیب) | POST /.well-known/private-aggregation/report-shared-storage |
تجمیع خصوصی + مخاطب محافظت شده (ترکیب) | POST /.well-known/private-aggregation/report-protected-audience |
پس از اینکه تأیید کردید سرور اصلی شما به درستی ثبت شده است، مراحل زیر را انجام دهید:
بررسی کنید که چگونه گزارشها را راهاندازی میکنید. تأیید کنید که فرمت گزارش صحیحی را دریافت می کنید که بر اساس آن API استفاده می شود:
اگر گزارشها را همانطور که توصیه میشود راهاندازی میکنید اما همچنان مشکل را مشاهده میکنید، بررسی کنید که آیا خطاهایی در کنسول برنامهنویس Chrome در تب «کنسول» و «شبکه» مشاهده شده است یا خیر.
اگر به پشتیبانی عیبیابی بیشتری برای این APIهای سرویس گیرنده نیاز دارید، دستورالعملهای اشکالزدایی را برای API گزارش Attribute و API Aggregation خصوصی + ذخیرهسازی مشترک ادامه دهید.
عیب یابی گزارش های انبوه شما
گزارشهای انبوه توسط APIهای اندازهگیری سمت مشتری تولید میشوند و به منبع گزارش شما ارسال میشوند. این گزارش ها باید توسط نقطه پایانی گزارش شما به فرمت AVRO
تبدیل شوند. اگر مشکلاتی در این تبدیل وجود داشته باشد، یا اگر خود گزارشها دست نخورده نباشند، ممکن است خطاهایی را در سرویس تجمع مشاهده کنید.
آیا گزارش های جمع آوری شما به درستی تبدیل می شوند؟
بررسی کنید که نقطه پایانی گزارش شما ( .well-known/…
) گزارش JSON قابل جمع آوری داده شده را به درستی به AVRO
تبدیل می کند.
خطاهای API که به دلیل این مشکل ظاهر می شوند عبارتند از:
خطا | DECRYPTION_ERROR |
---|---|
مثال | "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": []
}
}
|
بررسی کنید | این می تواند به دلیل خطاهای رمزگشایی رخ دهد، که می تواند ناشی از گزارش های AVRO باشد که به درستی تولید نشده اند، چه گزارش های AVRO جمع آوری یا AVRO دامنه خروجی. آیا گزارش های AVRO جمع آوری شده به درستی تولید شده اند؟ پیلود باید از نوع base64 رمزگشایی شده و به آرایه بایتی تبدیل شود. اطمینان حاصل کنید که گزارش در قالب avro است. علاوه بر این، بررسی کنید که آیا دامنه خروجی AVRO درست است یا خیر. سطل ها به فرمت هگز یونیکد فراری تبدیل می شوند و سپس به یک آرایه بایت تبدیل می شوند. اگر بیش از یک خطا مشاهده کردید، میتوانید در مورد خطاها در صفحه GitHub سرویس تجمع اطلاعات بیشتری کسب کنید. |
خطا | DECRYPTION_KEY_NOT_FOUND |
---|---|
مثال | "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": []
}
}
|
بررسی کنید | Attribution Reporting API برای Attribution Reporting API، این خطا ممکن است به دلیل مشکل در ثبت ماشه ایجاد شود. با استفاده از قسمت aggregation_coordinator_origin ( دستورالعملها در اینجا ) بررسی کنید که ماشه خود را با ابر صحیح ثبت کرده باشند. همچنین ممکن است گزارشهای رمزگذاریشده با AWS را برای استقرار سرویس Aggregation Google Cloud یا گزارشهای رمزگذاریشده با Google Cloud برای استقرار AWS آنها ارائه دهید. از آنها بخواهید اعتبار سنجی کنند که کدام نقطه پایانی کلید عمومی برای رمزگذاری گزارش های انباشته استفاده شده است. برای Google Cloud، قسمت «aggregation_coordinator_origin» در گزارش قابل جمعآوری باید https://publickeyservice.msmt.gcp.privacysandboxservices.com باشد. برای AWS، https://publickeyservice.msmt.aws.privacysandboxservices.com است. Private Aggregation API برای API Private Aggregation، باید «aggregationCoordinatorOrigin» را با استفاده از مثال در بخش انتخاب هماهنگکننده تجمع در توضیحدهنده API Aggregation خصوصی تعریف کنید. لطفاً https://publickeyservice.msmt.gcp.privacysandboxservices.com را به عنوان به عنوان مثال: sharedStorage.run('someOperation', {'privateAggregationConfig':
{'aggregationCoordinatorOrigin': ' https://publickeyservice.msmt.gcp.privacysandboxservices.com'}});
|
خطا | DECRYPTION_KEY_FETCH_ERROR |
---|---|
مثال | "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."
}
]
}
}
|
بررسی کنید | در صورت عدم تایید مشکلات حالت باینری یا اشکال زدایی، استفاده از باینری مناسب مشکل را برطرف می کند. دستورالعمل های اینجا را دنبال کنید تا از AMI از پیش ساخته شده استفاده کنید یا AMI خود را بسازید . |
برای تایید مراحل زیر را کامل کنید:
میتوانید از ابزار
aggregatable_report_converter
برای تبدیل گزارشهای جمعآوریشده از نقطه پایانی .well-known به AVRO و ایجاد کلیدهای دامنه خروجی استفاده کنید. (توجه: فایلهای دامنه خروجی باید یک بایت تست 16 بایتی باشند.)برای جمعآوری گزارشهای اشکالزدایی و اجرای یک کار سرویس جمعآوری با استفاده از کلیدهای دامنه خروجی، مراحل موجود در نرمافزار کد را برای ارائهدهنده ابر عمومی خود دنبال کنید: الف. Google Cloud: مراحل 3.1.2 تا 3.2.3 سرویس Aggregation Google Cloud Codelab b را دنبال کنید. خدمات وب آمازون: مراحل 4.2 تا 5.3 سرویس تجمیع AWS Codelab را دنبال کنید.
اگر این یک پاسخ SUCCESS
را برگرداند، تبدیل شما کار می کند.
آیا گزارش های انبوه شما دست نخورده است؟
بررسی کنید که گزارش انبوه، کلیدهای دامنه خروجی و اطلاعات مشترک دست نخورده باشند. در صورت تمایل به اطلاعات بیشتر، برای تبدیل گزارش های جمع آوری و ایجاد فایل های دامنه به کدهای نمونه مراجعه کنید.
خطاهای API که ممکن است مشاهده کنید که با این مشکل مطابقت دارند به شرح زیر است:
خطا | INPUT_DATA_READ_FAILED |
---|---|
نقطه پایانی | ایجاد شغل |
بررسی کنید | آیا فیلدهای input_data_bucket_name ، input_data_blob_prefix ، output_data_bucket_name و output_data_blob_prefix در درخواست createJob صحیح است؟ آیا محل داده های گزارش ورودی گزارش هایی برای پردازش دارد؟ آیا اجازه خواندن از محل ذخیره گزارش ها و دامنه خروجی را دارید؟ |
برای تایید مراحل زیر را کامل کنید:
تایید گزارش کل:
- گزارش های انبوه تولید کنید و از ابزار
aggregatable_report_converter
برای تبدیل دامنه خروجی به فرمتAVRO
استفاده کنید. - یک درخواست
createJob
را با این گزارش جمع آوری و فایل دامنه خروجی اجرا کنید. - اگر
SUCCESS
را برگرداند، به این معنی است که گزارش جمعآوری شده دست نخورده است. اگر این یک خطا را برمی گرداند، یا با گزارش انبوه خود مشکل دارید یا هر دو گزارش و دامنه. - در مرحله بعد فایل دامنه را بررسی کنید.
- گزارش های انبوه تولید کنید و از ابزار
بررسی فایل دامنه خروجی:
- فایل دامنه خروجی را ایجاد کنید و از ابزار
aggregatable_report_converter
برای ایجاد گزارش جمعآوری استفاده کنید. - یک درخواست
createJob
را با این گزارش جمع آوری و فایل دامنه خروجی اجرا کنید. - اگر
SUCCESS
را برگرداند، به این معنی است که دامنه خروجی دست نخورده است و کد شما برای ایجاد گزارش جمعآوری مشکل دارد. - برای بررسی
shared_info
به مرحله بعدی بروید.
- فایل دامنه خروجی را ایجاد کنید و از ابزار
تأیید اطلاعات مشترک:
- مطمئن شوید که گزارشهای اشکال زدایی را فعال کردهاید. گزارشهای فعالشده اشکالزدایی دارای یک فیلد
debug_cleartext_payload
در دسترس خواهند بود. - یک گزارش اشکال زدایی برای استفاده با ابزار تست محلی ایجاد کنید و
debug_cleartext_payload
به عنوان بار استفاده کنید. - ابزار تست محلی را با فایل دامنه خود اجرا کنید. اگر این یک
SUCCESS
است، به این معنی است که فایلshared_info
شما دستکاری شده است.
- مطمئن شوید که گزارشهای اشکال زدایی را فعال کردهاید. گزارشهای فعالشده اشکالزدایی دارای یک فیلد
اگر مشکوک به هرگونه خطا یا دستکاری بیشتر هستید، گزارش جمعآوری JSON، کلید دامنه، گزارش AVRO
جمعآوریشده و دامنه خروجی را جمعآوری کنید و به مراحل بعدی ادامه دهید.
نسخه استقرار جدید خود را بررسی کنید
بررسی کنید که نسخه خدمات جمع آوری شما همچنان پشتیبانی می شود. هنگامی که مشخص کردید از کدام نسخه استفاده میکنید، فهرست نسخههای خدمات جمعآوری را بررسی کنید و تأیید کنید که نسخه شما دارای اخطار پایان پشتیبانی نیست: This release has reached its end of support on { date }
. دستورالعمل های زیر برای تعیین نسخه ای که مستقر کرده اید برای ابرهای عمومی پشتیبانی شده است.
مراحل برای Google Cloud
- به جایی بروید که Compute Engine > نمونههای VM .
- روی نمونه ماشین مجازی با
-worker-
در نام کلیک کنید. - بخش
Custom Metadata
پیدا کنید و سپس کلیدtee-image-reference
پیدا کنید.- توجه: هر VM ارائه شده در Google Cloud توسط Terraform باید این ابرداده را داشته باشد ( متاداده
tee-image-reference
در ماژول کارگر ).
- توجه: هر VM ارائه شده در Google Cloud توسط Terraform باید این ابرداده را داشته باشد ( متاداده
- مقدار
tee-image-reference
حاوی شماره نسخه خواهد بود. به عنوان مثال، شماره نسخه مسیر زیرv2.9.1
است. اینها تصاویر از پیش ساخته شده ای هستند که در رجیستری مصنوع پروژه Google Cloud زندگی می کنند.- توجه: اگر از داراییهای از پیش ساخته شده استفاده میکنید، این موضوع مرتبط است، اگر از آن استفاده نمیکنید - این باید با آنچه شما شخصاً نامگذاری کردهاید و تصویر خود را برچسبگذاری کردهاید مطابقت داشته باشد. (مثال:
us.docker.pkg.dev/<gcp_project_name>/artifacts:aggregation-service- container-artifacts-worker_mp_go_prod:2.9.1
)
- توجه: اگر از داراییهای از پیش ساخته شده استفاده میکنید، این موضوع مرتبط است، اگر از آن استفاده نمیکنید - این باید با آنچه شما شخصاً نامگذاری کردهاید و تصویر خود را برچسبگذاری کردهاید مطابقت داشته باشد. (مثال:
مراحل خدمات وب آمازون
- در کنسول خدمات وب آمازون خود به EC2 Instances بروید.
- روی نمونه با نام
aggregation-service-operator-dev-env
کلیک کنید. - در صفحه نمونه، جزئیات > AMI (تصویر ماشین آمازون) را پیدا کنید
- نام نسخه شما باید در مسیر تصویر درج شود. به عنوان مثال، شماره نسخه مسیر زیر
v2.9.1
است.- توجه: اگر از داراییهای از پیش ساخته شده استفاده میکنید، این موضوع مرتبط است، اگر از آن استفاده نمیکنید - این باید با آنچه شما شخصاً نامگذاری کردهاید و تصویر خود را برچسبگذاری کردهاید مطابقت داشته باشد. (مثال:
aggregation-service-enclave_2.9.1--2024-10-03T01-24-25Z
)
- توجه: اگر از داراییهای از پیش ساخته شده استفاده میکنید، این موضوع مرتبط است، اگر از آن استفاده نمیکنید - این باید با آنچه شما شخصاً نامگذاری کردهاید و تصویر خود را برچسبگذاری کردهاید مطابقت داشته باشد. (مثال:
مراحل بعدی
اگر راهحلی برای مشکل سرویس تجمیع خود نمیبینید، با ثبت مشکل GitHub یا ارسال فرم پشتیبانی فنی به ما اطلاع دهید.