การแก้ปัญหาข้อผิดพลาดในการทำให้นโยบาย 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 พร้อมใช้งานสำหรับพร็อกซีทั้งหมดในองค์กรหรือ 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 เป็นส่วนหนึ่งของแพ็กเกจพร็อกซี 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