Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
InvalidIndex
Mensagem de erro
A implantação do proxy de API pela interface ou pela API Edge Management 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.
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Captura de tela de exemplo

Causa
Se o índice especificado nos elementos <Copy> e/ou <Remove> da política "Atribuir mensagem" for 0 ou um número negativo, a implantação do proxy da API falhará.
Por exemplo, se você transmitir vários parâmetros de consulta com o mesmo nome, vai poder acessá-los no Edge 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://myorg-test.apigee.net/v1/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 "Atribuir mensagem" 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".
Veja mais informações neste link.
Diagnóstico
Identifique a política "Atribuir mensagem" 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:AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0Verifique se o nome do atributo e o índice usados no XML da política Atribuir mensagem 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 como0, 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 "Atribuir mensagem", quando você acessar vários cabeçalhos, parâmetros de consulta ou outros parâmetros que tenham o mesmo nome, verifique se o índice é sempre maior que zero. Exemplo:
<AssignMessage name="GenerateStudentsReq>uest&<quot;
AssignTo createNew="true&>quot; type="re<quest&quo>t;Stu<dentsInfoRequest/Assi>gnTo
<Copy source>="reques<t"
QueryParams
> Que<ryParam name="scho>ol_name"</
QueryPara>m name="<id.1"/
> QueryPar<am name=&quo>t;id.<2&quo>t<;/
> QueryParam name="id.3"/
/QueryParams
/Copy
/AssignMessage
InvalidVariableName
Mensagem de erro
A implantação do proxy de API pela interface ou pela API Edge Management falha com esta mensagem de erro:
Error Saving Revision [revision_number] The revision is deployed, but traffic cannot flow. AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Exemplo de mensagem de erro
Error Saving Revision 3
AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Captura de tela de exemplo

Causa
Se o elemento filho <Name> estiver vazio ou não for especificado no elemento <AssignVariable>, a implantação do proxy de API falhará porque não há um nome de variável válido para atribuir um valor. Um nome de variável válido é obrigatório.
Diagnóstico
Examine todas as políticas de atribuição de mensagens no proxy de API específico em que a falha ocorreu. Se houver uma política de atribuição de mensagens em que o elemento filho <Name> esteja vazio ou não tenha sido especificado no elemento <AssignVariable>, essa será a causa do erro.
Exemplo 1: a seguinte política "Atribuir mensagem" não tem o elemento <Name> definido.
<AssignMessage async="false" continueOnError="false" enabled="true>"<; name=&quo>t;Assign-Message<-1"
> Disp<layNameAssi>gn Me<ssage-1/Displa>yName
< Prop>erties/
< As>signV<ariable
> Valu<eabcd1234/Value
/Assi>gnVar<iable
IgnoreUnresolved>Varia<blesfalse/IgnoreUnresolvedVariables
AssignTo createNe>w="true&<quot; tra>n<sport="ht>tp" type="request"googleBookReq/AssignTo
/AssignMessage
Exemplo 2: a seguinte política "Atribuir mensagem" tem um elemento <Name> vazio.
<AssignMessage async="false" continueOnError="false" enabled="true>"<; name=&quo>t;Assign-Message<-1"
> Disp<layNameAssi>gn Me<ssage-1/Displa>yName
< Pro><perti>es/
A<ssign>Variable<
> Na<me/Name
> Valu<eabcd1234/Value
/Assi>gnVar<iable
IgnoreUnresolved>Varia<blesfalse/IgnoreUnresolvedVariables
AssignTo createNe>w="true&<quot; tra>n<sport="ht>tp" type="request"googleBookReq/AssignTo
/AssignMessage
Resolução
O elemento filho <Name> precisa ser sempre especificado e não deve estar vazio no elemento <AssignVariable> da política "Atribuir mensagem". Exemplo:
<AssignMessage async="false" continueOnError="false" enabled="true>"<; name=&quo>t;Assign-Message<-1" > Disp<layNameAssi>gn Messag<e-1/DisplayNam>e Pro<pert>ies/ < A>ssignVari<able<>/span> <Nameap>pSecr<et/Name > Valu<eabcd1234/Value /Assi>gnVar<iable IgnoreUnresolved>Varia<blesfalse/IgnoreUnresolvedVariables AssignTo createNe>w="true&<quot; tra>n<sport="ht>tp" type="request"googleBookReq/AssignTo /AssignMessage