PythonScript नीति के डिप्लॉयमेंट से जुड़ी गड़बड़ी की समस्या हल करना

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

InvalidResourceUrlFormat

गड़बड़ी का मैसेज

इस गड़बड़ी के मैसेज से Edge यूज़र इंटरफ़ेस (यूआई) या Edge मैनेजमेंट एपीआई से एपीआई प्रॉक्सी का डिप्लॉयमेंट नहीं हो पाता:

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.

स्क्रीनशॉट का उदाहरण

वजह

अगर <ResourceURL> में बताए गए रिसॉर्स यूआरएल का फ़ॉर्मैट या PythonScript नीति के <IncludeURL> एलिमेंट में अमान्य वैल्यू दी गई है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता.

सही फ़ॉर्मैट नीचे दिखाया गया है:

<ResourceURL>py://file_name.py</ResourceURL>
<IncludeURL>py://file_name.py</IncludeURL>

उदाहरण के लिए, अगर <ResourceURL> एलिमेंट नीचे दिखाया गया है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकेगा, क्योंकि यह ज़रूरी पैटर्न का पालन नहीं करता:

<ResourceURL>py:myscript.py</ResourceURL>

संक्रमण की जांच

  1. PythonScript नीति में इस्तेमाल किए गए अमान्य रिसॉर्स यूआरएल फ़ॉर्मैट की पहचान करें. आपको यह जानकारी गड़बड़ी के मैसेज से मिल सकती है. उदाहरण के लिए, नीचे दी गई गड़बड़ी में, रिसॉर्स यूआरएल का अमान्य फ़ॉर्मैट py:myscript.py है:

    Invalid resource url format. Resource url is py:myscript.py.
    
  2. उस खास एपीआई प्रॉक्सी में, जहां गड़बड़ी हुई है वहां सभी PythonScript नीतियों की जांच करें. अगर कोई ऐसी PythonScript नीति है जिसमें <ResourceURL> या <IncludeURL> एलिमेंट में दिया गया रिसॉर्स यूआरएल, ऊपर चरण #1 में पहचानी गई अमान्य एंट्री से मेल खाता है, तो यही गड़बड़ी है.

    उदाहरण के लिए, यहां दी गई नीति, संसाधन के यूआरएल को 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>
    

    संसाधन यूआरएल को py:myscript.py के तौर पर बताया गया है, जो कि अमान्य है. इसलिए, इस गड़बड़ी की वजह से एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता:

    Invalid resource url format. Resource url is py:myscript.py.
    

रिज़ॉल्यूशन

पक्का करें कि PythonScript नीति के <ResourceURL> एलिमेंट में दिए गए रिसॉर्स यूआरएल का फ़ॉर्मैट मान्य हो. उदाहरण के लिए:

<?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

गड़बड़ी का मैसेज

इस गड़बड़ी के मैसेज से Edge यूज़र इंटरफ़ेस (यूआई) या Edge मैनेजमेंट एपीआई से एपीआई प्रॉक्सी का डिप्लॉयमेंट नहीं हो पाता:

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 फ़ाइल को रेफ़र करते हैं जो मौजूद नहीं है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता. अगर आपको अपनी लोकल मशीन से प्रॉक्सी बंडल डिप्लॉय करना है, तो PythonScript सोर्स फ़ाइलें /apiproxy/resources/py(एपीआई प्रॉक्सी स्कोप पर) में सेव होनी चाहिए.

Edge यूज़र इंटरफ़ेस (यूआई) में, PythonScript सोर्स फ़ाइलें एपीआई प्रॉक्सी एडिटर के नेविगेटर पैनल के स्क्रिप्ट सेक्शन में py में दिखती हैं, जैसा कि नीचे दिखाया गया है:

आपके पास संगठन और एनवायरमेंट लेवल के डेटा स्टोर करने की जगहों में भी रिसॉर्स फ़ाइलें सेव करने का विकल्प है. उदाहरण के लिए, किसी संगठन या एनवायरमेंट की सभी प्रॉक्सी को PythonScript कोड उपलब्ध कराने के लिए. अगर नीति में दी गई कोई भी संसाधन फ़ाइल नहीं मिलती, तो यह गड़बड़ी होती है.

संक्रमण की जांच

  1. PythonScript की उस नीति की पहचान करें जहां गड़बड़ी हुई थी. साथ ही, रिसॉर्स के अमान्य यूआरएल रेफ़रंस की भी पहचान करें. आपको यह जानकारी गड़बड़ी के मैसेज से मिल सकती है. उदाहरण के लिए, इस गड़बड़ी में नीति का नाम Python_script है और रिसॉर्स के अमान्य यूआरएल का रेफ़रंस, py://myscript.py है:

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
    
  2. पुष्टि करें कि PythonScript नीति में बताए गए रिसॉर्स यूआरएल रेफ़रंस, गड़बड़ी के मैसेज (ऊपर दिया गया चरण #1) में पहचाने गए मान से मेल खाता है. उदाहरण के लिए, इस नीति में रिसॉर्स यूआरएल रेफ़रंस को 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 फ़ाइल में पहचानी गई फ़ाइल, खास एपीआई प्रॉक्सी बंडल का हिस्सा है या संगठन या एनवायरमेंट के दायरे में मौजूद है.

    1. यह देखने के लिए कि फ़ाइल किसी खास एपीआई प्रॉक्सी बंडल का हिस्सा है या नहीं, नीचे दिया गया तरीका अपनाएं:
      1. Edge यूज़र इंटरफ़ेस (यूआई) में, देखें कि यह फ़ाइल एपीआई प्रॉक्सी के स्क्रिप्ट सेक्शन में है या नहीं.
      2. एपीआई प्रॉक्सी बंडल को डाउनलोड करें और खोजें कि फ़ाइल मौजूद है या नहीं.
    2. अगर फ़ाइल किसी खास एपीआई प्रॉक्सी बंडल का हिस्सा नहीं है, तो देखें कि वह संगठन या एनवायरमेंट के लेवल पर मौजूद है या नहीं. इस जांच के लिए, Resource Files API का इस्तेमाल किया जा सकता है.

    अगर फ़ाइल एपीआई प्रॉक्सी, संगठन या एनवायरमेंट के लेवल पर मौजूद नहीं है, तो यही गड़बड़ी है.

    ऊपर दिए गए उदाहरण में, PythonScript फ़ाइल का अमान्य नाम myscript.py है. नीचे दिए गए स्क्रीनशॉट में देखें कि नीति में रिसॉर्स यूआरएल के तौर पर दी गई फ़ाइल, स्क्रिप्ट सेक्शन में नहीं दिखती है. साथ ही, फ़ाइल संगठन या एनवायरमेंट के लेवल पर मौजूद नहीं है. इसलिए, इस गड़बड़ी के साथ एपीआई प्रॉक्सी का डिप्लॉयमेंट काम नहीं करता:

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

रिज़ॉल्यूशन

पक्का करें कि <ResourceURL> और <IncludeURL> एलिमेंट में दी गई PythonScript फ़ाइलें, एक मान्य फ़ाइल के बारे में बताती हैं. यह फ़ाइल एपीआई प्रॉक्सी, संगठन या एनवायरमेंट लेवल पर मौजूद होती है.

ऊपर दिखाई गई उदाहरण PythonScript नीति को ठीक करने के लिए, API प्रॉक्सी बंडल में myscript.py फ़ाइल जोड़ें. नीचे दिए गए स्क्रीनशॉट में आप देख सकते हैं कि <ResourceURL> और <IncludeURL> एलिमेंट में दी गई PythonScript फ़ाइलें, एपीआई प्रॉक्सी बंडल के स्क्रिप्ट सेक्शन में दिखती हैं: