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

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

موضوعات راهنما:

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

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

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

  2. اگر گزارش‌ها را همانطور که توصیه می‌شود راه‌اندازی می‌کنید، اما همچنان مشکل را مشاهده می‌کنید، بررسی کنید که آیا خطاهایی در کنسول برنامه‌نویس 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

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

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

  2. اگر گزارش‌ها را همانطور که توصیه می‌شود راه‌اندازی می‌کنید اما همچنان مشکل را مشاهده می‌کنید، بررسی کنید که آیا خطاهایی در کنسول برنامه‌نویس 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 را به عنوان aggregationCoordinatorOrigin مشخص کنید.

به عنوان مثال:

                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 خود را بسازید .

برای تایید مراحل زیر را کامل کنید:

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

  2. برای جمع‌آوری گزارش‌های اشکال‌زدایی و اجرای یک کار سرویس جمع‌آوری با استفاده از کلیدهای دامنه خروجی، مراحل موجود در نرم‌افزار کد را برای ارائه‌دهنده ابر عمومی خود دنبال کنید: الف. 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 صحیح است؟ آیا محل داده های گزارش ورودی گزارش هایی برای پردازش دارد؟ آیا اجازه خواندن از محل ذخیره گزارش ها و دامنه خروجی را دارید؟

برای تایید مراحل زیر را کامل کنید:

  1. تایید گزارش کل:

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

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

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

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

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

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

مراحل برای Google Cloud

  1. به جایی بروید که Compute Engine > نمونه‌های VM .
  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 )

مراحل بعدی

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