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

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

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

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

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

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

רזולוציה

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

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