การแก้ปัญหาข้อผิดพลาดในการทำให้นโยบาย 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 ด้านบน นั่นเป็นสาเหตุของข้อผิดพลาด

    เช่น นโยบายต่อไปนี้ระบุ 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 จะล้มเหลวโดยมีข้อผิดพลาด:

    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 UI ไฟล์ต้นฉบับของ PythonScript จะปรากฏภายใต้ py ในส่วนสคริปต์ ของแผงการนำทางของเครื่องมือแก้ไขพร็อกซี API ดังที่แสดงด้านล่าง

นอกจากนี้คุณยังเก็บไฟล์ทรัพยากรในที่เก็บระดับองค์กรและสภาพแวดล้อมได้ด้วย (เช่น เพื่อทำให้โค้ด 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 ที่เฉพาะเจาะจง หรืออยู่ในขอบเขตองค์กรหรือสภาพแวดล้อมหรือไม่

    1. หากต้องการตรวจสอบว่าไฟล์เป็นส่วนหนึ่งของแพ็กเกจพร็อกซี API ที่เจาะจงหรือไม่ ให้ทําตามขั้นตอนใดขั้นตอนหนึ่งต่อไปนี้
      1. ใน Edge UI ให้ตรวจสอบว่าไฟล์นี้อยู่ในส่วนสคริปต์ของพร็อกซี API หรือไม่
      2. ดาวน์โหลดแพ็กเกจพร็อกซี API แล้วค้นหาหากมีไฟล์อยู่
    2. หากไฟล์ไม่ได้เป็นส่วนหนึ่งของกลุ่มพร็อกซี API ที่ระบุ ให้ตรวจสอบว่ามีไฟล์ดังกล่าวอยู่ในระดับองค์กรหรือสภาพแวดล้อมหรือไม่ คุณใช้ Resource Files API ได้สำหรับการตรวจสอบนี้

    หากไม่มีไฟล์ดังกล่าวในระดับพร็อกซี API, องค์กร หรือสภาพแวดล้อม นั่นเป็นสาเหตุของข้อผิดพลาด

    ในตัวอย่างข้างต้น ชื่อไฟล์ PythonScript ที่ไม่ถูกต้องคือ myscript.py ในภาพหน้าจอด้านล่าง จะเห็นว่าไฟล์ที่ระบุเป็น URL ทรัพยากรในนโยบายไม่ปรากฏในส่วน "สคริปต์" และไม่มีไฟล์ดังกล่าวที่ระดับองค์กรหรือสภาพแวดล้อม ดังนั้น การทำให้พร็อกซี API ใช้งานได้ไม่สำเร็จโดยมีข้อผิดพลาดดังนี้

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

ความละเอียด

ตรวจสอบว่าไฟล์ PythonScript ที่ระบุในองค์ประกอบ <ResourceURL> และ <IncludeURL> อ้างอิงไฟล์ที่ถูกต้องที่มีอยู่ในระดับพร็อกซี API องค์กร หรือสภาพแวดล้อม

หากต้องการแก้ไขตัวอย่างนโยบาย PythonScript ที่แสดงด้านบน ให้เพิ่มไฟล์ myscript.py ไปยังกลุ่มพร็อกซี API ในภาพหน้าจอด้านล่าง คุณจะเห็นว่าไฟล์ PythonScript ที่ระบุในองค์ประกอบ <ResourceURL> และ <IncludeURL> แสดงในส่วนสคริปต์ของกลุ่มพร็อกซี API