Solução de problemas de implantação de política PythonScript

Você está visualizando a documentação do Apigee e do Apigee híbrido .
Veja a documentação do Apigee Edge .

Formato de URL de recurso inválido

Mensagem de erro

A implantação de um proxy de API por meio da interface do usuário ou da API do Apigee 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 no prod.

Causa

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

O formato correto é o mostrado 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 da API falhará porque não segue o padrão necessário:

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

Diagnóstico

  1. Identifique o formato inválido de URL do recurso usado na política PythonScript. Você pode encontrar essa informação na mensagem de erro. Por exemplo, no erro a seguir, o formato inválido de URL do recurso é py:myscript.py :

    Invalid resource url format. Resource url is py:myscript.py.
  2. Examine todas as políticas do PythonScript no Proxy de API específico onde a falha ocorreu. Se houver alguma política do PythonScript na qual a URL do recurso especificada no elemento <ResourceURL> ou <IncludeURL> corresponda à entrada inválida identificada na etapa 1 acima, essa é a causa do erro.

    Por exemplo, a política a seguir 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 a URL do recurso é especificada como py:myscript.py , o que é inválido, a implantação do Proxy de API falha com o erro:

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

Resolução

Certifique-se de que o formato de URL do recurso especificado no elemento <ResourceURL> da política PythonScript seja válido. Por 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>

Referência de URL de recurso inválida

Mensagem de erro

A implantação de um proxy de API por meio da interface do usuário ou da API do Apigee 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 no prod.

Causa

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

Na interface do usuário do Apigee, os arquivos de origem do PythonScript aparecem em py na seção Scripts do painel Navegador do editor de proxy da API, conforme mostrado abaixo:

Painel de navegação do Editor de proxy da API, seção Scripts.

Você também pode 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 for encontrado, este erro ocorrerá.

Diagnóstico

  1. Identifique a política PythonScript onde o erro ocorreu e a referência de URL de recurso inválida. Você pode encontrar 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 de recurso inválida é py://myscript.py :

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
  2. Verifique se a referência de URL do recurso especificada na política PythonScript com falha corresponde ao valor identificado na mensagem de erro (etapa 1 acima). Por exemplo, a política a seguir especifica a referência de 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 do ambiente.

    1. Para verificar se o arquivo faz parte do pacote específico do Proxy de API, siga uma das etapas abaixo:
      1. Na interface do usuário do Apigee, verifique se este arquivo está na seção Scripts do proxy da API.
      2. Baixe o pacote do Proxy da API e verifique se o arquivo existe.
    2. Se o arquivo não fizer parte do pacote específico do Proxy de API, verifique se ele existe no nível do ambiente. Você pode usar a API de Arquivos de Recursos para essa investigação.

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

    No exemplo acima, o nome de 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 de API falha com o erro:

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

URL de recurso inválida.

Resolução

Certifique-se de que os arquivos PythonScript especificados nos elementos <ResourceURL> e <IncludeURL> se referem a um arquivo válido que existe no nível do Proxy da API ou 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, você pode 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.