You're viewing Apigee Edge documentation.
Go to the
Apigee X documentation. info
InvalidResourceUrlFormat
Error message
Deployment of an API proxy through either the Edge UI or Edge management API fails with this error message:
Error Deploying Revision revision_number to environment Invalid resource url format. Resource url is invalid_URL.
Example error message
Error Deploying Revision 2 to prod Invalid resource url format. Resource url is py:myscript.py.
Example screenshot
Cause
If the format of the resource URL specified within the <ResourceURL>
or the <IncludeURL>
element of the
PythonScript policy is invalid, then the deployment of the API proxy fails.
The correct format is as shown below:
<ResourceURL>py://file_name.py</ResourceURL> <IncludeURL>py://file_name.py</IncludeURL>
For example, if the <ResourceURL>
element is specified as shown below, then the
deployment of the API proxy fails because it does not follow the required pattern:
<ResourceURL>py:myscript.py</ResourceURL>
Diagnosis
Identify the invalid resource URL format used in the PythonScript policy. You can find this information from the error message. For example, in the following error, the invalid resource URL format is
py:myscript.py
:Invalid resource url format. Resource url is py:myscript.py.
Examine all the PythonScript policies in the specific API Proxy where the failure has occurred. If there is any PythonScript policy in which the resource URL specified in the
<ResourceURL>
or the<IncludeURL>
element matches the invalid entry identified in step #1 above, then that's the cause of the error.For example, the following policy specifies the resource URL as
py:myscript.py
, which matches what's in the error message:<?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>
Since the resource URL is specified as
py:myscript.py
, which is invalid, the deployment of the API Proxy fails with the error:Invalid resource url format. Resource url is py:myscript.py.
Resolution
Ensure that the resource URL format specified in the <ResourceURL>
element of the PythonScript policy is valid. For example:
<?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
Error message
Deployment of an API proxy through either the Edge UI or Edge management API fails with this error message:
Error Deploying Revision revision_number to environment Invalid resource url ref invalid_reference in policy policy_name in org_name
Example error message
Error Deploying Revision 2 to prod Invalid resource url ref py://myscript.py in policy Python_script in myorg
Example screenshot
Cause
If the <ResourceURL>
and <IncludeURL>
elements refer to a PythonScript file
that does not exist, then the deployment of the API proxy fails.
If you are deploying a proxy bundle from your local machine, then the PythonScript
source files must be stored under /apiproxy/resources/py
(at the API proxy scope).
In the Edge UI, the PythonScript source files appear under py in the Scripts section of the API proxy editor's Navigator pane as shown below:
You can also store resource files in organization and environment level repositories (to make PythonScript code available to all proxies in an org or env, for example). If any resource files specified in the policy cannot be found, then this error occurs.
Diagnosis
Identify the PythonScript policy where the error occurred and the invalid resource URL reference. You can find this information from the error message. For example, in the following error, the policy name is
Python_script
and the invalid resource URL reference ispy://myscript.py
:Invalid resource url ref py://myscript.py in policy Python_script in myorg
Verify that the resource URL reference specified in the failed PythonScript policy matches with the value identified in the error message (step #1 above). For example, the following policy specifies the resource URL reference as
py://myscript.py
, which matches what's in the error message:<?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>
Check if the file identified in step #1 file is part of the specific API Proxy bundle, or exists at the organization or environment scope.
- To check if the file is part of the specific API Proxy bundle, follow one of the below steps:
- In the Edge UI, check if this file is in the Scripts section of the API proxy.
- Download the API Proxy bundle and search if the file exists.
- If the file is not part of the specific API Proxy bundle, then check if it exists at the organization or environment level. You can use the Resource Files API for this investigation.
If the file does not exist at the API Proxy, organization, or environment level, then that's the cause of the error.
In the example above, the invalid PythonScript filename is myscript.py. In the screenshot below, notice that the file specified as a resource URL in the policy does not appear in the Scripts section. Also the file does not exist at the organization or environment level. Therefore, the deployment of the API Proxy fails with the error:
Invalid resource url ref py://myscript.py in policy Python_script in myorg
- To check if the file is part of the specific API Proxy bundle, follow one of the below steps:
Resolution
Ensure that the PythonScript files specified in <ResourceURL>
and <IncludeURL>
elements refer to a valid file that exists at the API Proxy, organization, or environment level.
To correct the example PythonScript policy shown above, add the file myscript.py to the API Proxy bundle. In the screenshot below you can see that the PythonScript files specified in <ResourceURL>
and <IncludeURL>
elements are visible in the Scripts section of the API Proxy bundle: