排解 PythonScript 政策部署錯誤

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

InvalidResourceUrlFormat

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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> 元素中指定的資源網址格式無效,API Proxy 部署作業就會失敗。

正確格式如下:

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

舉例來說,如果指定 <ResourceURL> 元素如下所示,API Proxy 的部署就會失敗,因為該 Proxy 未遵循所需的模式:

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

診斷

  1. 找出 PythonScript 政策中使用的無效資源網址格式。您可以在錯誤訊息中找到這項資訊。舉例來說,在下列錯誤中,無效的資源網址格式為 py:myscript.py

    Invalid resource url format. Resource url is py:myscript.py.
    
  2. 檢查發生錯誤的特定 API Proxy 中的所有 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 無效,因此 API Proxy 部署作業會失敗並發生以下錯誤:

    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 UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 Proxy 的部署作業就會失敗。如要從本機電腦部署 Proxy 組合,則 PythonScript 來源檔案必須儲存在 /apiproxy/resources/py 底下(API Proxy 範圍)。

在 Edge UI 中,API Proxy 編輯器導覽器窗格內「Scripts」區段的 py 下方會顯示 PythonScript 來源檔案,如下所示:

您也可以將資源檔案儲存在機構和環境層級存放區中 (例如讓機構或環境中的所有 Proxy 都能使用 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 中識別的檔案是否屬於特定 API Proxy 套件,或者位於機構或環境範圍內。

    1. 如要確認檔案是否屬於特定 API Proxy 套裝組合,請執行下列任一步驟:
      1. 在 Edge UI 中,檢查這個檔案是否位於 API Proxy 的「Scripts」(指令碼) 部分。
      2. 下載 API Proxy 套件,並搜尋檔案是否存在。
    2. 如果檔案不屬於特定 API Proxy 套件的一部分,請檢查該檔案是否存在於機構或環境層級。您可以使用 Resource Files API 進行調查。

    如果檔案不存在於 API Proxy、機構或環境層級,就是發生錯誤的原因。

    在上述範例中,無效的 PythonScript 檔案名稱為 myscript.py。請注意,在下方螢幕截圖中,在政策中指定為資源網址的檔案,不會顯示在「指令碼」部分。此外,該檔案不在機構或環境層級,因此,API Proxy 的部署失敗並顯示以下錯誤:

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

解析度

請確認 <ResourceURL><IncludeURL> 元素中指定的 PythonScript 檔案參照的是 API Proxy、機構或環境層級的有效檔案。

如要修正上述 PythonScript 範例政策,請將 myscript.py 檔案加入 API Proxy 軟體包中。在下方螢幕截圖中,API Proxy 套件的「Scripts」部分會顯示 <ResourceURL><IncludeURL> 元素中指定的 PythonScript 檔案: