Устранение ошибок развертывания политики PythonScript

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

InvalidResourceUrlFormat

Сообщение об ошибке

Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:

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.

Пример скриншота

Причина

Если формат URL-адреса ресурса, указанного в элементе <ResourceURL> или <IncludeURL> политики PythonScript , недопустим, развертывание прокси-сервера API завершится неудачей.

Правильный формат показан ниже:

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

Например, если элемент <ResourceURL> указан, как показано ниже, то развертывание API-прокси завершится неудачей, поскольку он не соответствует требуемому шаблону:

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

Диагноз

  1. Определите недопустимый формат URL-адреса ресурса, используемый в политике PythonScript. Эту информацию можно найти в сообщении об ошибке. Например, в следующем сообщении об ошибке недопустимый формат URL-адреса ресурса — py:myscript.py :

    Invalid resource url format. Resource url is py:myscript.py.
  2. Проверьте все политики PythonScript в конкретном API-прокси, где произошла ошибка. Если в какой-либо политике PythonScript URL ресурса, указанный в элементе <ResourceURL> или <IncludeURL> совпадает с недопустимой записью, выявленной на шаге №1 выше, то это и есть причина ошибки.

    Например, следующая политика указывает URL-адрес ресурса как 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>

    Поскольку URL-адрес ресурса указан как py:myscript.py , что недопустимо, развертывание API-прокси завершается с ошибкой:

    Invalid resource url format. Resource url is py:myscript.py.

Разрешение

Убедитесь, что формат URL-адреса ресурса, указанный в элементе <ResourceURL> политики PythonScript, является допустимым. Например:

<?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

Сообщение об ошибке

Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:

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 отображаются в разделе Scripts редактора API-прокси в панели навигатора, как показано ниже:

Вы также можете хранить файлы ресурсов в репозиториях на уровне организации и среды (например, чтобы сделать код PythonScript доступным для всех прокси-серверов в организации или среде). Если какие-либо файлы ресурсов, указанные в политике, не найдены, возникает эта ошибка.

Диагноз

  1. Определите политику PythonScript, в которой произошла ошибка, и недопустимую ссылку на URL-адрес ресурса. Эту информацию можно найти в сообщении об ошибке. Например, в следующем примере имя политики — Python_script , а недопустимая ссылка на URL-адрес ресурса — py://myscript.py :

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
  2. Убедитесь, что указанная в политике, вызвавшей ошибку PythonScript ссылка на URL-адрес ресурса совпадает со значением, указанным в сообщении об ошибке (шаг №1 выше). Например, следующая политика указывает ссылку на URL-адрес ресурса как 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-прокси или существует ли он в рамках организации или среды.

    1. Чтобы проверить, входит ли файл в состав конкретного пакета API-прокси, выполните одно из следующих действий:
      1. В пользовательском интерфейсе Edge проверьте, находится ли этот файл в разделе «Скрипты» API-прокси.
      2. Загрузите пакет API-прокси и проверьте, существует ли этот файл.
    2. Если файл не входит в состав конкретного пакета API-прокси, проверьте, существует ли он на уровне организации или среды. Для этого можно использовать API файлов ресурсов .

    Если файл отсутствует на уровне API-прокси, организации или среды, то это и является причиной ошибки.

    В приведенном выше примере недопустимое имя файла PythonScript — myscript.py. На скриншоте ниже обратите внимание, что файл, указанный в качестве URL-адреса ресурса в политике, не отображается в разделе «Скрипты». Кроме того, файл не существует на уровне организации или среды. Поэтому развертывание API-прокси завершается с ошибкой:

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

Разрешение

Убедитесь, что файлы PythonScript, указанные в элементах <ResourceURL> и <IncludeURL> ссылаются на допустимый файл, существующий на уровне API-прокси, организации или среды.

Чтобы исправить приведенную выше примерную политику PythonScript, добавьте файл myscript.py в пакет API Proxy. На скриншоте ниже видно, что файлы PythonScript, указанные в элементах <ResourceURL> и <IncludeURL> отображаются в разделе Scripts пакета API Proxy: