您正在查看 Apigee 和 Apigee Hybrid 文档。
查看 Apigee Edge 文档。
InvalidResourceUrlFormat
错误消息
通过 Apigee 界面或 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
错误消息
通过 Apigee 界面或 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 代理范围)。
在 Apigee 界面中,PythonScript 源文件会显示在 API 代理编辑器的导航工具窗格的“脚本”部分中的 py 下,如下所示:
您还可以将资源文件存储在环境级代码库中(例如,使 Python 代码可用于环境中的所有代理)。如果找不到政策中指定的任何资源文件,则会发生此错误。
诊断
标识发生错误的 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 代理软件包的一部分,请执行以下步骤之一:
- 在 Apigee 界面中,检查此文件是否在 API 代理的 Scripts 部分。
- 下载 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 代理软件包的脚本部分: