פתרון בעיות בפריסת המדיניות של 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 שבחלונית הניווט של עורך ה-API של Python, כפי שמוצג בהמשך:

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

אבחון

  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 הוא חלק מהחבילה הספציפית של שרת proxy ל-API, או אם הקובץ קיים ברמת הארגון או הסביבה.

    1. כדי לבדוק אם הקובץ הוא חלק מחבילה ספציפית של שרת proxy ל-API, פועלים לפי אחד השלבים הבאים:
      1. בממשק המשתמש של Edge, צריך לבדוק אם הקובץ נמצא בקטע Scripts של שרת ה-API של שרת ה-proxy.
      2. יש להוריד את חבילת ה-API של שרת ה-proxy ולחפש אם הקובץ קיים.
    2. אם הקובץ לא נכלל בחבילה הספציפית של שרת ה-proxy של ה-API, צריך לבדוק אם הוא קיים ברמת הארגון או הסביבה. לביצוע החקירה הזו, תוכלו להשתמש ב-Resource Files API.

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

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

    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> מופיעים בקטע 'סקריפטים' של חבילת ה-API Proxy: