Solução de problemas de erros na implantação da política PythonScript

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

InvalidResourceUrlFormat

Mensagem de erro

A implantação de um proxy de API pela IU do Edge ou pela API Edge Management falha com esta mensagem de erro:

Error Deploying Revision revision_number to environment
Invalid resource url format. Resource url is invalid_URL.

Exemplo de mensagem de erro

Error Deploying Revision 2 to prod
Invalid resource url format. Resource url is py:myscript.py.

Exemplo de captura de tela

Causa

Se o formato do URL do recurso especificado no <ResourceURL> ou no elemento <IncludeURL> da política PythonScript for inválido, a implantação do proxy da API falhará.

Veja o formato correto abaixo:

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

Por exemplo, se o elemento <ResourceURL> for especificado conforme mostrado abaixo, a implantação do proxy de API falhará porque não segue o padrão necessário:

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

Diagnóstico

  1. Identifique o formato de URL do recurso inválido usado na política PythonScript. Você encontra essas informações na mensagem de erro. Por exemplo, no seguinte erro, o formato de URL do recurso inválido é py:myscript.py:

    Invalid resource url format. Resource url is py:myscript.py.
    
  2. Analise todas as políticas do PythonScript no proxy da API específica em que ocorreu a falha. Se houver alguma política PythonScript em que o URL do recurso especificado no elemento <ResourceURL> ou no elemento <IncludeURL> corresponda à entrada inválida identificada na etapa 1 acima, essa será a causa do erro.

    Por exemplo, a seguinte política especifica o URL do recurso como py:myscript.py, que corresponde ao que está na mensagem de erro:

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

    Como o URL do recurso é especificado como py:myscript.py, o que é inválido, a implantação do proxy da API falha com o erro:

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

Resolução

Verifique se o formato do URL do recurso especificado no elemento <ResourceURL> da política PythonScript é válido. Exemplo:

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

Mensagem de erro

A implantação de um proxy de API pela IU do Edge ou pela API Edge Management falha com esta mensagem de erro:

Error Deploying Revision revision_number to environment
Invalid resource url ref invalid_reference in policy policy_name in org_name

Exemplo de mensagem de erro

Error Deploying Revision 2 to prod
Invalid resource url ref py://myscript.py in policy Python_script in myorg

Exemplo de captura de tela

Causa

Se os elementos <ResourceURL> e <IncludeURL> se referirem a um arquivo PythonScript que não existe, a implantação do proxy da API falhará. Se você estiver implantando um pacote de proxy a partir da máquina local, os arquivos de origem do PythonScript precisam ser armazenados em /apiproxy/resources/py(no escopo do proxy da API).

Na interface do Edge, os arquivos de origem PythonScript aparecem em py na seção "Scripts" do painel "Navigator" do editor de proxy de API, conforme mostrado abaixo:

Também é possível armazenar arquivos de recursos em repositórios no nível da organização e do ambiente para disponibilizar o código PythonScript para todos os proxies em uma organização ou um ambiente, por exemplo. Se algum arquivo de recurso especificado na política não puder ser encontrado, esse erro ocorrerá.

Diagnóstico

  1. Identifique a política do PythonScript em que o erro ocorreu e a referência inválida do URL do recurso. Você encontra essas informações na mensagem de erro. Por exemplo, no erro a seguir, o nome da política é Python_script e a referência de URL do recurso inválido é py://myscript.py:

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
    
  2. Verifique se a referência do URL do recurso especificada na política com falha do PythonScript corresponde ao valor identificado na mensagem de erro (etapa 1 acima). Por exemplo, esta política especifica a referência do URL do recurso como py://myscript.py, que corresponde ao que está na mensagem de erro:

    <?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. Verifique se o arquivo identificado na etapa 1 faz parte do pacote específico do proxy de API ou existe no escopo da organização ou do ambiente.

    1. Para verificar se o arquivo faz parte do pacote específico de proxy de API, siga uma das etapas abaixo:
      1. Na interface do Edge, verifique se esse arquivo está na seção "Scripts" do proxy de API.
      2. Faça o download do pacote de proxy da API e pesquise se o arquivo existe.
    2. Se o arquivo não fizer parte do pacote específico de proxy de API, verifique se ele existe no nível da organização ou do ambiente. Use a API Resource Files nessa investigação.

    Se o arquivo não existir no nível do proxy de API, da organização ou do ambiente, essa é a causa do erro.

    No exemplo acima, o nome do arquivo PythonScript inválido é myscript.py. Na captura de tela abaixo, observe que o arquivo especificado como URL de recurso na política não aparece na seção "Scripts". Além disso, o arquivo não existe no nível da organização ou do ambiente. Portanto, a implantação do proxy de API falha com o erro:

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

Resolução

Verifique se os arquivos PythonScript especificados nos elementos <ResourceURL> e <IncludeURL> se referem a um arquivo válido no nível do proxy, da organização ou do ambiente da API.

Para corrigir o exemplo de política PythonScript mostrado acima, adicione o arquivo myscript.py ao pacote do proxy da API. Na captura de tela abaixo, é possível ver que os arquivos PythonScript especificados nos elementos <ResourceURL> e <IncludeURL> estão visíveis na seção "Scripts" do pacote do proxy da API: