محیط خود را تشخیص دهید (جدید یا ارتقا یافته)

عوامل متعددی می‌توانند هنگام کار با سرویس تجمیع، از جمله قالب‌بندی گزارش‌ها، مشکلات دامنه خروجی و مشکلات هماهنگ‌کننده، مشکلاتی ایجاد کنند. درک منبع خطا و هرگونه فراداده‌ای که در آن وجود دارد، برای تشخیص دقیق مشکل، مهم است.

مباحث راهنما:

تأیید تنظیمات API اندازه‌گیری کلاینت

پس از اینکه از ثبت صحیح سرور مبدا خود اطمینان حاصل کردید، مراحل زیر را انجام دهید:

  1. بررسی کنید که چگونه گزارش‌ها را فعال می‌کنید. تأیید کنید که قالب گزارش صحیحی را مطابق با API مورد استفاده دریافت می‌کنید:

    • API گزارش‌دهی انتساب
    • API تجمیع خصوصی
      • گزارش‌گیری در API تجمیع خصوصی می‌تواند با استفاده از تابع contributeToHistogram تکمیل شود. تأیید کنید که کلید و مقدار سطل را ارسال می‌کنید. کلید سطل باید به فرمت BigInt باشد. (بیشتر بخوانید API تجمیع خصوصی )
  2. اگر طبق توصیه، گزارش‌ها را فعال می‌کنید، اما هنوز با مشکل مواجه هستید، بررسی کنید که آیا خطاهایی در کنسول توسعه‌دهندگان کروم، در هر دو تب «کنسول» و «شبکه» مشاهده می‌شود یا خیر.

اگر برای این APIهای کلاینت به پشتیبانی عیب‌یابی بیشتری نیاز دارید، به راهنمای اشکال‌زدایی ما برای API گزارش‌دهی انتسابی و API تجمیع خصوصی + ذخیره‌سازی مشترک مراجعه کنید.

عیب‌یابی تنظیمات مبدأ گزارش‌دهی شما

سرور مبدا گزارش‌دهی جایی است که شما نقاط پایانی .well-known صحیح مربوطه را که گزارش‌های قابل جمع‌آوری به آنها ارسال می‌شوند، اعلام کرده‌اید. تأیید کنید که سرور مبدا گزارش‌دهی مستقر شما به درستی ثبت و رجیستر شده است.

آیا منبع گزارش‌دهی شما گزارش‌ها را دریافت می‌کند؟

تأیید کنید که سرور مبدا گزارش‌دهی مستقر شما به درستی ثبت و رجیستر شده است. این سرور جایی است که شما نقاط پایانی .well-known صحیح مربوطه را که گزارش‌های تجمیعی به آنها ارسال می‌شوند، اعلام کرده‌اید.

API اندازه‌گیری سمت کلاینت تطبیق نقطه پایانی قابل جمع
گزارش انتساب POST /.well-known/attribution-reporting/port-aggregate-attribution
تجمیع خصوصی + ذخیره‌سازی مشترک (ترکیبی) POST /.well-known/private-aggregation/report-shared-storage
تجمع خصوصی + مخاطب محافظت‌شده (ترکیبی) POST /.well-known/private-aggregation/report-protected-audience

پس از تأیید ثبت صحیح سرور مبدا، مراحل زیر را انجام دهید:

  1. بررسی کنید که چگونه گزارش‌ها را فعال می‌کنید. تأیید کنید که قالب گزارش صحیحی را مطابق با API مورد استفاده دریافت می‌کنید:

  2. اگر طبق توصیه، گزارش‌ها را فعال می‌کنید اما همچنان با مشکل مواجه هستید، بررسی کنید که آیا خطاهایی در کنسول توسعه‌دهندگان کروم، در هر دو تب «کنسول» و «شبکه» مشاهده می‌شود یا خیر.

اگر برای این APIهای کلاینت به پشتیبانی عیب‌یابی بیشتری نیاز دارید، راهنمای اشکال‌زدایی برای API گزارش‌دهی تخصیصی و API تجمیع خصوصی + ذخیره‌سازی مشترک را ادامه دهید.

عیب‌یابی گزارش‌های کلی شما

گزارش‌های تجمیعی توسط APIهای اندازه‌گیری سمت کلاینت تولید شده و به مبدا گزارش‌دهی شما ارسال می‌شوند. این گزارش‌ها باید توسط نقطه پایانی گزارش‌دهی شما به فرمت AVRO تبدیل شوند. اگر در این تبدیل مشکلی وجود داشته باشد، یا اگر خود گزارش‌ها سالم نباشند، ممکن است در سرویس تجمیعی خطاهایی مشاهده کنید.

آیا گزارش‌های تجمیعی شما به درستی تبدیل می‌شوند؟

تأیید کنید که نقطه پایانی گزارش‌دهی شما ( .well-known/… ) گزارش JSON قابل تجمیع داده شده را به درستی به AVRO تبدیل می‌کند.

خطاهای API که به دلیل این مشکل رخ می‌دهند عبارتند از:

خطا خطای رمزگشایی
مثال
                "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 صحیح است یا خیر. سطل‌ها به قالب hex یونیکد escape شده تبدیل شده و سپس به یک آرایه بایت تبدیل می‌شوند. اگر بیش از یک تعداد خطا مشاهده کردید، می‌توانید اطلاعات بیشتری در مورد خطاها در صفحه GitHub سرویس تجمیع کسب کنید.
خطا رمزگشایی کلید یافت نشد
مثال
                "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": []
                    }
                }
            
بررسی API گزارش‌دهی انتساب

برای API گزارش‌دهی تخصیص، این خطا ممکن است ناشی از مشکلی در ثبت تریگر باشد. بررسی کنید که آنها تریگر خود را با استفاده از فیلد aggregation_coordinator_origin در ابر صحیح ثبت کرده باشند ( دستورالعمل‌ها اینجا ). همچنین ممکن است گزارش‌های رمزگذاری شده AWS را به استقرار Google Cloud از سرویس تجمیع آنها یا گزارش‌های رمزگذاری شده Google Cloud را به استقرار AWS آنها ارائه دهید. از آنها بخواهید تأیید کنند که از کدام نقطه پایانی کلید عمومی برای رمزگذاری گزارش‌های تجمیع استفاده شده است. برای Google Cloud، فیلد `aggregation_coordinator_origin` در گزارش تجمیع باید https://publickeyservice.msmt.gcp.privacysandboxservices.com باشد. برای AWS، این آدرس https://publickeyservice.msmt.aws.privacysandboxservices.com است.

API تجمیع خصوصی

برای API تجمیع خصوصی، باید با استفاده از مثال موجود در بخش انتخاب هماهنگ‌کننده تجمیع در توضیح API تجمیع خصوصی، `aggregationCoordinatorOrigin` را تعریف کنید. لطفاً https://publickeyservice.msmt.gcp.privacysandboxservices.com را به عنوان aggregationCoordinatorOrigin مشخص کنید.

برای مثال:

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

            
خطا رمزگشایی_کلید_دریافت_خطا
مثال
                "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 خود ، دستورالعمل‌های اینجا را دنبال کنید.

برای تأیید، مراحل زیر را انجام دهید:

  1. شما می‌توانید از ابزار aggregatable_report_converter برای تبدیل گزارش‌های تجمیعی که از نقطه پایانی .well-known جمع‌آوری کرده‌اید به AVRO استفاده کنید و کلیدهای دامنه خروجی را ایجاد کنید. (توجه: فایل‌های دامنه خروجی باید یک bytestring 16 بایتی از نوع big-endian باشند.)

  2. مراحل موجود در codelab مربوط به ارائه‌دهنده ابر عمومی خود را برای جمع‌آوری گزارش‌های اشکال‌زدایی و اجرای یک کار سرویس تجمیع با استفاده از کلیدهای دامنه خروجی خود دنبال کنید: الف. Google Cloud: مراحل 3.1.2 تا 3.2.3 سرویس تجمیع Google Cloud Codelab را دنبال کنید. ب. Amazon Web Services: مراحل 4.2 تا 5.3 سرویس تجمیع AWS Codelab را دنبال کنید.

اگر این دستور پاسخ SUCCESS را برگرداند، تبدیل شما به درستی انجام شده است.

آیا گزارش‌های تجمیعی شما دست‌نخورده هستند؟

تأیید کنید که گزارش تجمیعی، کلیدهای دامنه خروجی و اطلاعات اشتراک‌گذاری‌شده شما سالم هستند. در صورت نیاز به اطلاعات بیشتر، برای تبدیل گزارش‌های تجمیعی و ایجاد فایل‌های دامنه، به کدهای نمونه مراجعه کنید.

خطاهای API که ممکن است در رابطه با این مشکل مشاهده کنید، عبارتند از:

خطا ورودی_داده_خوانده_ناموفق
نقطه پایانی ایجاد شغل
بررسی آیا فیلدهای input_data_bucket_name ، input_data_blob_prefix ، output_data_bucket_name و output_data_blob_prefix در درخواست createJob صحیح هستند؟ آیا محل داده‌های گزارش ورودی، گزارش‌هایی را که باید پردازش شوند، در خود جای داده است؟ آیا مجوز خواندن از محل ذخیره‌سازی برای گزارش‌ها و دامنه خروجی را دارید؟

برای تأیید، مراحل زیر را انجام دهید:

  1. گزارش تجمیعی را تأیید کنید:

    • گزارش‌های تجمیعی ایجاد کنید و از ابزار aggregatable_report_converter برای تبدیل دامنه خروجی به فرمت AVRO استفاده کنید.
    • یک درخواست createJob را با این گزارش تجمیعی اجرا کنید و فایل دامنه را خروجی دهید.
    • اگر این دستور SUCCESS را برگرداند، به این معنی است که گزارش تجمیعی سالم است. اگر این دستور خطا برگرداند، یا مشکلی با گزارش تجمیعی خود دارید یا هم گزارش و هم دامنه.
    • در مرحله بعدی، فایل دامنه را بررسی کنید.
  2. فایل دامنه خروجی را تأیید کنید:

    • فایل دامنه خروجی را ایجاد کنید و از ابزار aggregatable_report_converter برای ایجاد گزارش تجمیعی استفاده کنید.
    • یک درخواست createJob را با این گزارش تجمیعی اجرا کنید و فایل دامنه را خروجی دهید.
    • اگر این SUCCESS را برگرداند، به این معنی است که دامنه خروجی سالم است و مشکلی در کد شما برای ایجاد گزارش تجمیعی وجود دارد.
    • برای بررسی shared_info به مرحله بعدی بروید.
  3. اطلاعات اشتراک‌گذاری‌شده را تأیید کنید:

    • تأیید کنید که گزارش‌هایتان اشکال‌زدایی (debug) را فعال کرده‌اید. گزارش‌های دارای اشکال‌زدایی، فیلد debug_cleartext_payload را خواهند داشت.
    • یک گزارش اشکال‌زدایی برای استفاده با ابزار تست محلی ایجاد کنید و debug_cleartext_payload به عنوان payload استفاده کنید.
    • ابزار تست محلی را با فایل دامنه خود اجرا کنید. اگر این SUCCESS بود، به این معنی است که فایل shared_info شما دستکاری شده است.

اگر به هرگونه خطا یا دستکاری بیشتر مشکوک هستید، گزارش تجمیعی JSON، کلید دامنه، گزارش AVRO تجمیعی تولید شده و دامنه خروجی را جمع‌آوری کنید و به مراحل بعدی ادامه دهید.

نسخه جدید استقرار خود را بررسی کنید

تأیید کنید که نسخه سرویس تجمیع شما هنوز پشتیبانی می‌شود. پس از تعیین نسخه‌ای که استفاده می‌کنید، لیست نسخه‌های سرویس تجمیع را بررسی کنید و تأیید کنید که نسخه شما هشدار پایان پشتیبانی را نداشته باشد: This release has reached its end of support on { date } . دستورالعمل‌های زیر برای تعیین نسخه‌ای که مستقر کرده‌اید، برای ابرهای عمومی پشتیبانی‌شده است.

مراحل استفاده از گوگل کلود

  1. به جایی که موتور محاسباتی > نمونه‌های ماشین مجازی شما قرار دارد بروید.
  2. روی نمونه ماشین مجازی که در نام آن -worker- وجود دارد کلیک کنید.
  3. بخش Custom Metadata را پیدا کنید و سپس کلید tee-image-reference پیدا کنید.
  4. مقدار 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 )

مراحل خدمات وب آمازون

  1. در کنسول خدمات وب آمازون خود به EC2 Instances بروید.
  2. روی نمونه‌ای با نام aggregation-service-operator-dev-env کلیک کنید.
  3. در صفحه نمونه، جزئیات > AMI (تصویر دستگاه آمازون) را پیدا کنید.
  4. نام نسخه شما باید در مسیر تصویر گنجانده شود. برای مثال، شماره نسخه مسیر زیر v2.9.1 است.
    • توجه: اگر از فایل‌های از پیش ساخته شده استفاده می‌کنید، این موضوع مرتبط است، اگر نه - این باید با آنچه شخصاً تصویر خود را نامگذاری و برچسب گذاری کرده‌اید، مطابقت داشته باشد. (مثال: aggregation-service-enclave_2.9.1--2024-10-03T01-24-25Z )

مراحل بعدی

اگر راه‌حلی برای مشکل سرویس تجمیع خود مشاهده نکردید، با ثبت مشکل در گیت‌هاب یا ارسال فرم پشتیبانی فنی ، به ما اطلاع دهید.