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

Esta é a documentação da Apigee e da Apigee híbrida.
Confira a documentação da Apigee Edge.

InvalidResourceUrlFormat

Mensagem de erro

A implantação de um proxy de API por meio da IU da Apigee ou da API 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

Erro ao implantar a revisão 2 para prod.

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 por meio da IU da Apigee ou da API 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

Erro ao implantar a revisão 2 para prod.

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 IU da Apigee, os arquivos de origem PythonScript aparecem em py, na seção "Scripts" do painel de navegação do editor de proxy da API, conforme mostrado abaixo:

Seção de scripts do painel de navegação do editor da API.

Também é possível armazenar arquivos de recursos em repositórios de nível de ambiente (para disponibilizar o código PythonScript para todos os proxies em 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 é parte do pacote específico do proxy da API ou se existe no escopo do ambiente.

    1. Para verificar se o arquivo faz parte do pacote de proxy de API específico, siga uma das etapas abaixo:
      1. Na IU da Apigee, verifique se esse arquivo está na seção "Scripts" do proxy da 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 de proxy de API específico, verifique se ele existe no nível do ambiente. Use a API Resource Files nessa investigação.

    Se o arquivo não existir no nível do proxy de API ou do ambiente, essa será 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 do ambiente. Portanto, a implantação do proxy da API falha com o erro:

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

URL de recurso inválido.

Resolução

Verifique se os arquivos PythonScript especificados em elementos <ResourceURL> e <IncludeURL> se referem a um arquivo válido que existe no proxy da API ou no nível do ambiente.

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:

Seção de scripts do pacote de proxy de API.