Você está
    vendo a documentação da Apigee X.
    Veja a documentação da Apigee Edge.
  
InvalidIndex
Mensagem de erro
A implantação do proxy de API por meio da IU da Apigee ou da API falha com esta mensagem de erro:
Error in deployment for environment [environment] The revision is deployed, but traffic cannot flow. AssignMessage[policy_name]: index must be greater than zero in [attribute].[index]
Exemplo de mensagem de erro
Error in deployment for environment test.
The revision is deployed, but traffic cannot flow.
HTTPModifier[GenerateStudentsRequest]: index must be greater than zero in id.0
Causa
Se o índice especificado nos elementos <Copy> e/ou <Remove> da política HTTPModifier for 0 ou um número negativo, a implantação do proxy de API falhará.
Por exemplo, se você passar vários parâmetros de consulta com o mesmo nome, poderá acessá-los como variáveis de fluxo indexadas. Digamos que você queira passar os IDs de três alunos como parâmetros de consulta. Faça isso da seguinte maneira:
https://$EXTERNAL_IP/$PROXY_BASEPATH?school_name=NPS&id=1&id=2&id=3
Digamos que você tente acessar esses parâmetros de consulta com os números de índice 0, 1 e 2 na política HTTPModifier da seguinte maneira:
id.0
id.1 and
id.2
Nesse caso, a implantação do proxy falha porque o índice precisa começar com 1. Isso significa que você pode acessar o primeiro parâmetro de consulta "id=1" como "id.1". Para acessar o segundo parâmetro de consulta "id=2", você precisa usar o índice 2, ou seja, "id.2". Da mesma forma, para acessar o terceiro parâmetro de consulta "id=3", é possível usar "id.3".
Para mais informações, consulte a documentação do elemento Copy da política AssignMessage.
Diagnóstico
- Identifique a política HTTPModifier em que o erro ocorreu, o nome do atributo e o índice inválido. Você pode encontrar todos esses itens na mensagem de erro. Por exemplo, no erro a seguir, o nome da política é - GeneratingGeocodingRequest, o nome do atributo é- ide o índice é- 0:- HTTPModifier[GenerateStudentsRequest]: index must be greater than zero in id.0
- Verifique se o nome do atributo e o índice usados no XML da política HTTPModifier com falha correspondem ao nome do atributo e ao índice identificados na mensagem de erro (etapa 1 acima). Por exemplo, a política a seguir especifica o atributo - ide o índice como- 0, que corresponde ao que está na mensagem de erro:- <AssignMessage name="GenerateStudentsRequest"> <AssignTo createNew="true" type="request">StudentsInfoRequest</AssignTo> <Copy source="request"> <QueryParams> <QueryParam name="school_name"/> <QueryParam name="id.0"/> <QueryParam name="id.1"/> <QueryParam name="id.2"/> </QueryParams> </Copy> </AssignMessage> 
- Se o índice especificado for 0 ou um número negativo, essa será a causa do erro. - No exemplo da política "Atribuir mensagem" mostrada acima, você está tentando acessar o primeiro valor do parâmetro de consulta "id" usando o índice 0. Portanto, a implantação do proxy de API falha com o erro: - AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Resolução
Em HTTPModifier, ao acessar vários cabeçalhos, parâmetros de consulta ou outros parâmetros com o mesmo nome, verifique se o índice é sempre maior que zero. Exemplo:
<AssignMessage name="GenerateStudentsRequest">
    <AssignTo createNew="true" type="request">StudentsInfoRequest</AssignTo>
    <Copy source="request">
        <QueryParams>
            <QueryParam name="school_name"/>
            <QueryParam name="id.1"/>
            <QueryParam name="id.2"/>
            <QueryParam name="id.3"/>
        </QueryParams>
    </Copy>
</AssignMessage>