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

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

InvalidResourceUrlFormat

پیغام خطا

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

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. تمام خط مشی های PythonScript را در پروکسی API خاصی که در آن شکست رخ داده است، بررسی کنید. اگر خط‌مشی PythonScript وجود داشته باشد که در آن URL منبع مشخص‌شده در <ResourceURL> یا عنصر <IncludeURL> با ورودی نامعتبر شناسایی‌شده در مرحله 1 در بالا مطابقت داشته باشد، این دلیل خطا است.

    به عنوان مثال، خط مشی زیر نشانی اینترنتی منبع را به صورت 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>
    

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

    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>

InvalidResourceUrlReference

پیغام خطا

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

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> به یک فایل PythonScript اشاره می کنند که وجود ندارد، در این صورت استقرار پروکسی API با شکست مواجه می شود. اگر یک بسته پروکسی را از دستگاه محلی خود مستقر می کنید، فایل های منبع PythonScript باید در /apiproxy/resources/py (در محدوده پروکسی API) ذخیره شوند.

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

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

تشخیص

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

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
    
  2. بررسی کنید که مرجع URL منبع مشخص شده در خط مشی شکست خورده PythonScript با مقدار مشخص شده در پیام خطا مطابقت دارد (مرحله شماره 1 در بالا). به عنوان مثال، خط مشی زیر مرجع 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. بررسی کنید که آیا فایل شناسایی شده در فایل مرحله شماره 1 بخشی از بسته API Proxy خاص است یا در محدوده سازمان یا محیطی وجود دارد.

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

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

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

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

قطعنامه

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

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