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

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

पर क्लिक करें.

InvalidResourceUrlFormat

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

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.

उदाहरण के तौर पर दिया गया स्क्रीनशॉट

वजह

अगर PythonScript नीति के <ResourceURL> या <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> एलिमेंट में दिया गया संसाधन यूआरएल, ऊपर दिए गए पहले चरण में पहचानी गई अमान्य एंट्री से मेल खाता है, तो गड़बड़ी की वजह यही है.

    उदाहरण के लिए, यहां दी गई नीति में संसाधन के यूआरएल को 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 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 फ़ाइल को रेफ़र करते हैं जो मौजूद नहीं है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकेगा. अगर आपको अपनी लोकल मशीन से कोई प्रॉक्सी बंडल डिप्लॉय करना है, तो 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 नीति के उल्लंघन की वजह से अस्वीकार किए गए संसाधन के यूआरएल का रेफ़रंस, गड़बड़ी के मैसेज (ऊपर दिया गया पहला चरण) में बताई गई वैल्यू से मेल खाता हो. उदाहरण के लिए, यहां दी गई नीति में, संसाधन के यूआरएल का रेफ़रंस 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. Edge के यूज़र इंटरफ़ेस (यूआई) में जाकर देखें कि यह फ़ाइल, एपीआई प्रॉक्सी के Scripts सेक्शन में मौजूद है या नहीं.
      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 नीति के उदाहरण को ठीक करने के लिए, myscript.py फ़ाइल को एपीआई प्रॉक्सी बंडल में जोड़ें. नीचे दिए गए स्क्रीनशॉट में देखा जा सकता है कि <ResourceURL> और <IncludeURL> एलिमेंट में बताई गई PythonScript फ़ाइलें, एपीआई प्रॉक्सी बंडल के स्क्रिप्ट सेक्शन में दिख रही हैं: