عیب یابی خطای استقرار خط مشی PythonScript

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

قالب آدرس منبع نامعتبر

پیام خطا

استقرار یک پروکسی API از طریق رابط کاربری Edge یا رابط برنامه‌نویسی کاربردی مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Deploying Revision revision_number to environment
Invalid resource url format. Resource url is invalid_URL.

مثال پیام خطا

Error Deploying Revision 2 to prod
Invalid resource url format. Resource url is py:myscript.py.

مثال اسکرین شات

علت

اگر قالب URL منبع مشخص شده در عنصر <ResourceURL> یا <IncludeURL> از خط‌مشی PythonScript نامعتبر باشد، استقرار پروکسی API با شکست مواجه می‌شود.

فرمت صحیح به صورت زیر است:

<ResourceURL>py://file_name.py</ResourceURL>
<IncludeURL>py://file_name.py</IncludeURL>

برای مثال، اگر عنصر <ResourceURL> مطابق شکل زیر مشخص شده باشد، پیاده‌سازی پروکسی API با شکست مواجه می‌شود زیرا از الگوی مورد نیاز پیروی نمی‌کند:

<ResourceURL>py:myscript.py</ResourceURL>

تشخیص

  1. قالب نامعتبر URL منبع مورد استفاده در سیاست PythonScript را شناسایی کنید. می‌توانید این اطلاعات را از پیام خطا پیدا کنید. برای مثال، در خطای زیر، قالب نامعتبر URL منبع py:myscript.py است:

    Invalid resource url format. Resource url is py:myscript.py.
  2. تمام سیاست‌های پایتون‌اسکریپت را در API Proxy خاصی که خطا در آن رخ داده است، بررسی کنید. اگر سیاست پایتون‌اسکریپت وجود داشته باشد که در آن URL منبع مشخص شده در عنصر <ResourceURL> یا <IncludeURL> با ورودی نامعتبر شناسایی شده در مرحله ۱ بالا مطابقت داشته باشد، علت خطا همین است.

    برای مثال، سیاست زیر آدرس منبع را py:myscript.py مشخص می‌کند که با آنچه در پیام خطا آمده است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Script async="false" continueOnError="false" enabled="true" timeLimit="200" name="py-TotalVariable">
        <DisplayName>py-TotalVariable</DisplayName>
        <Properties/>
        <ResourceURL>py:myscript.py</ResourceURL>
    </Script>

    از آنجایی که آدرس منبع به صورت py:myscript.py مشخص شده است که نامعتبر است، پیاده‌سازی API Proxy با خطای زیر با شکست مواجه می‌شود:

    Invalid resource url format. Resource url is py:myscript.py.

وضوح تصویر

مطمئن شوید که قالب URL منبع مشخص شده در عنصر <ResourceURL> از خط‌مشی PythonScript معتبر است. برای مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Script async="false" continueOnError="false" enabled="true" timeLimit="200" name="py-TotalVariable">
    <DisplayName>py-TotalVariable</DisplayName>
    <Properties/>
    <ResourceURL>py://myscript.py</ResourceURL>
</Script>

مرجع نامعتبرResourceUrl

پیام خطا

استقرار یک پروکسی API از طریق رابط کاربری Edge یا رابط برنامه‌نویسی کاربردی مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Deploying Revision revision_number to environment
Invalid resource url ref invalid_reference in policy policy_name in org_name

مثال پیام خطا

Error Deploying Revision 2 to prod
Invalid resource url ref py://myscript.py in policy Python_script in myorg

مثال اسکرین شات

علت

اگر عناصر <ResourceURL> و <IncludeURL> به یک فایل پایتون‌اسکریپت که وجود ندارد اشاره کنند، استقرار پروکسی API با شکست مواجه می‌شود. اگر در حال استقرار یک بسته پروکسی از دستگاه محلی خود هستید، فایل‌های منبع پایتون‌اسکریپت باید در /apiproxy/resources/py (در محدوده پروکسی API) ذخیره شوند.

در رابط کاربری Edge، فایل‌های منبع PythonScript در زیر py در بخش اسکریپت‌ها از پنل Navigator ویرایشگر پروکسی API، مطابق شکل زیر ظاهر می‌شوند:

همچنین می‌توانید فایل‌های منبع را در مخازن سطح سازمان و محیط ذخیره کنید (برای مثال، برای اینکه کد پایتون‌اسکریپت برای همه پروکسی‌ها در یک org یا env در دسترس باشد). اگر هیچ یک از فایل‌های منبع مشخص شده در خط‌مشی پیدا نشوند، این خطا رخ می‌دهد.

تشخیص

  1. خط‌مشی پایتون‌اسکریپت که خطا در آن رخ داده و مرجع نامعتبر URL منبع را شناسایی کنید. می‌توانید این اطلاعات را از پیام خطا پیدا کنید. برای مثال، در خطای زیر، نام خط‌مشی Python_script و مرجع نامعتبر URL منبع py://myscript.py است:

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
  2. تأیید کنید که مرجع URL منبع مشخص شده در خط‌مشی پایتون‌اسکریپت ناموفق با مقدار مشخص شده در پیام خطا (مرحله ۱ در بالا) مطابقت دارد. برای مثال، خط‌مشی زیر مرجع URL منبع را py://myscript.py مشخص می‌کند که با آنچه در پیام خطا آمده است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Script async="false" continueOnError="false" enabled="true" name="Python_script">
        <DisplayName>Python-1</DisplayName>
        <Properties/>
        <ResourceURL>py://myscript.py</ResourceURL>
    </Script>
  3. بررسی کنید که آیا فایل شناسایی‌شده در مرحله ۱ بخشی از بسته خاص API Proxy است یا در محدوده سازمان یا محیط وجود دارد.

    1. برای بررسی اینکه آیا فایل بخشی از بسته خاص API Proxy است، یکی از مراحل زیر را دنبال کنید:
      1. در رابط کاربری Edge، بررسی کنید که آیا این فایل در بخش اسکریپت‌های پروکسی API وجود دارد یا خیر.
      2. بسته‌ی API Proxy را دانلود کنید و بررسی کنید که آیا فایل وجود دارد یا خیر.
    2. اگر فایل بخشی از بسته‌ی خاص API Proxy نیست، بررسی کنید که آیا در سطح سازمان یا محیط وجود دارد یا خیر. می‌توانید از API فایل‌های منبع برای این بررسی استفاده کنید.

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

    در مثال بالا، نام فایل نامعتبر پایتون‌اسکریپت myscript.py است. در تصویر زیر، توجه کنید که فایلی که به عنوان آدرس منبع در پالیسی مشخص شده است، در بخش اسکریپت‌ها نمایش داده نمی‌شود. همچنین این فایل در سطح سازمان یا محیط وجود ندارد. بنابراین، استقرار API Proxy با خطای زیر با شکست مواجه می‌شود:

    Invalid resource url ref py://myscript.py in policy Python_script in myorg

وضوح تصویر

اطمینان حاصل کنید که فایل‌های پایتون‌اسکریپت مشخص‌شده در عناصر <ResourceURL> و <IncludeURL> به یک فایل معتبر که در سطح پروکسی API، سازمان یا محیط وجود دارد، اشاره می‌کنند.

برای اصلاح مثال مربوط به سیاست پایتون‌اسکریپت که در بالا نشان داده شده است، فایل myscript.py را به بسته‌ی API Proxy اضافه کنید. در تصویر زیر می‌توانید ببینید که فایل‌های پایتون‌اسکریپت مشخص شده در عناصر <ResourceURL> و <IncludeURL> در بخش اسکریپت‌های بسته‌ی API Proxy قابل مشاهده هستند: