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

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

InvalidResourceUrlFormat

הודעת שגיאה

פריסה של שרת proxy ל-API דרך ממשק המשתמש של Edge או 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 לא תקין, פריסת ה-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, שהיא לא תקינה, הפריסה של שרת ה-proxy של ה-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

הודעת שגיאה

פריסה של שרת proxy ל-API דרך ממשק המשתמש של Edge או 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 שלא קיים, הפריסה של proxy ל-API תיכשל. אם אתם פורסים חבילת proxy ל-API מהמחשב המקומי, קובצי המקור של PythonScript צריכים להיות מאוחסנים בתיקייה /apiproxy/resources/py(בטווח של proxy ל-API).

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

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

אבחון

  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. בממשק המשתמש של Edge, בודקים אם הקובץ נמצא בקטע 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

רזולוציה

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

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