<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
InvalidResourceUrlFormat
错误消息
通过 Edge 界面或 Edge Management API 部署 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>
元素中指定的资源网址格式无效,则 API 代理的部署将失败。
正确格式如下所示:
<ResourceURL>py://file_name.py</ResourceURL> <IncludeURL>py://file_name.py</IncludeURL>
例如,如果按如下所示指定 <ResourceURL>
元素,则 API 代理的部署将失败,因为它未遵循所需的格式:
<ResourceURL>py:myscript.py</ResourceURL>
诊断
标识 PythonScript 政策中使用的无效资源网址格式。您可以从错误消息中找到此信息。例如,在以下错误中,无效的资源网址格式为
py:myscript.py
:Invalid resource url format. Resource url is py:myscript.py.
检查出现错误的特定 API 代理中的所有 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 代理的部署失败并显示以下错误: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 部署 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 界面中,PythonScript 源文件显示在“脚本”部分的 py 下 进入 API 代理编辑器的 Navigator 窗格,如下所示:
您还可以将资源文件存储在组织和环境级代码库中(例如,使 PythonScript 代码可供组织或环境中的所有代理使用)。如果找不到政策中指定的任何资源文件,则会发生此错误。
诊断
标识发生错误的 PythonScript 政策以及无效的资源网址引用。您可以从错误消息中找到此信息。例如,在以下错误中,政策名称为
Python_script
,无效资源网址引用为py://myscript.py
:Invalid resource url ref py://myscript.py in policy Python_script in myorg
验证失败的 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>
检查第 1 步中确定的文件是否属于特定 API 代理软件包,或是否存在于组织或环境范围内。
- 要检查文件是否是特定 API 代理软件包的一部分,请执行以下步骤之一:
- 在 Edge 界面中,检查此文件是否在 API 代理的“脚本”部分。
- 下载 API 代理软件包并搜索文件是否存在。
- 如果该文件不是特定 API 代理软件包的一部分,请检查它在组织级别或环境级别是否存在。您可以使用 Resource Files API 开展调查。
如果该文件在 API 代理、组织或环境级别中不存在,那么这就是导致错误的原因。
在上述示例中,无效的 PythonScript 文件名是 myscript.py。在以下屏幕截图中,请注意在政策中指定为资源网址的文件没有出现在脚本部分中。此外,该文件在组织或环境级别不存在。因此,API 代理的部署失败并显示以下错误:
Invalid resource url ref py://myscript.py in policy Python_script in myorg
- 要检查文件是否是特定 API 代理软件包的一部分,请执行以下步骤之一:
分辨率
确保 <ResourceURL>
和 <IncludeURL>
元素中指定的 PythonScript 文件引用的是 API 代理、组织或环境级别中存在的有效文件。
要更正上面所示的示例 PythonScript 政策,请将文件 myscript.py 添加到 API 代理软件包。在下面的屏幕截图中,您可以看到 <ResourceURL>
和 <IncludeURL>
元素中指定的 PythonScript 文件显示在 API 代理软件包的脚本部分: