פתרון בעיות בפריסת מדיניות של PythonScript

הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge

InvalidResourceUrlFormat

הודעת השגיאה

פריסת proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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.

דוגמה לצילום מסך

שגיאה בפריסת גרסה 2 בסביבת הייצור.

מטרה

אם הפורמט של כתובת ה-URL של המשאב שצוין ברכיב <ResourceURL> או ברכיב <IncludeURL> של מדיניות PythonScript לא תקין, הפריסה של proxy ל-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 Proxy הספציפי שבו התרחשה השגיאה. אם יש מדיניות PythonScript שבה כתובת ה-URL של המשאב שצוינה באלמנט <ResourceURL> או באלמנט <IncludeURL> תואמת לרשומה הלא תקינה שזוהתה בשלב 1 למעלה, זו הסיבה לשגיאה.

    לדוגמה, במדיניות הבאה כתובת ה-URL של המשאב היא 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 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>

InvalidResourceUrlReference

הודעת השגיאה

פריסת proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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

דוגמה לצילום מסך

שגיאה בפריסת גרסה 2 בסביבת הייצור.

מטרה

אם הרכיבים <ResourceURL> ו-<IncludeURL> מפנים לקובץ PythonScript שלא קיים, ה-Deployment (פריסה) של ה-proxy ל-API תיכשל. אם אתם פורסים חבילת proxy מהמחשב המקומי, קובצי המקור של PythonScript צריכים להיות מאוחסנים בתיקייה /apiproxy/resources/py (במסגרת ה-proxy ל-API).

בממשק המשתמש של Apigee, קובצי המקור של PythonScript מופיעים בקטע Scripts שמתחת ל-py בחלונית Navigator של עורך ה-proxy ל-API, כמו שמוצג בהמשך:

API Proxy Editor Navigation pane Scripts section.

אפשר גם לאחסן קובצי משאבים במאגרי מידע ברמת הסביבה (לדוגמה, כדי להפוך קוד PythonScript לזמין לכל ה-proxy בסביבה). השגיאה הזו מתרחשת אם לא ניתן למצוא קובץ משאבים כלשהו שצוין במדיניות.

אבחון

  1. מזהים את מדיניות PythonScript שבה התרחשה השגיאה ואת ההפניה לכתובת URL של משאב לא חוקי. אפשר למצוא את המידע הזה בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Python_script וההפניה לכתובת ה-URL של המשאב הלא חוקי היא 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. בממשק המשתמש של Apigee, בודקים אם הקובץ נמצא בקטע Scripts של proxy ל-API.
      2. מורידים את חבילת ה-API Proxy ומחפשים אם הקובץ קיים.
    2. אם הקובץ לא נכלל בחבילת ה-API Proxy הספציפית, צריך לבדוק אם הוא קיים ברמת הסביבה. אפשר להשתמש ב-Resource Files API כדי לבצע את הבדיקה הזו.

    אם הקובץ לא קיים ברמת ה-API Proxy או הסביבה, זו הסיבה לשגיאה.

    בדוגמה שלמעלה, שם קובץ ה-PythonScript הלא תקין הוא myscript.py. בצילום המסך שלמטה, אפשר לראות שהקובץ שצוין ככתובת URL של משאב במדיניות לא מופיע בקטע Scripts. בנוסף, הקובץ לא קיים ברמת הסביבה. לכן, הפריסה של שרת ה-API Proxy נכשלת עם השגיאה:

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

כתובת ה-URL של המשאב לא תקינה.

רזולוציה

מוודאים שקובצי ה-PythonScript שצוינו ברכיבים <ResourceURL> ו-<IncludeURL> מפנים לקובץ תקין שקיים ברמת ה-API Proxy או הסביבה.

כדי לתקן את מדיניות PythonScript שמוצגת בדוגמה שלמעלה, צריך להוסיף את הקובץ myscript.py לחבילת ה-API Proxy. בצילום המסך שלמטה אפשר לראות שקובצי PythonScript שצוינו ברכיבים <ResourceURL> ו-<IncludeURL> גלויים בקטע Scripts של חבילת ה-API Proxy:

הקטע Scripts בחבילת API Proxy.