Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
InvalidIndex
Сообщение об ошибке
Развертывание прокси-сервера API через интерфейс Edge или API управления Edge завершается неудачно с сообщением об ошибке:
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]
Пример сообщения об ошибке
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
Пример скриншота

Причина
Если индекс, указанный в элементах <Copy> и/или <Remove> правила "Назначить сообщение", равен 0 или отрицательному числу, развертывание прокси API завершится неудачно.
Например, если вы передаете несколько параметров запроса с одинаковым названием, то в Edge сможете получить к ним доступ как к индексированным переменным потока. Предположим, вы хотите передать идентификаторы трех учащихся в качестве параметров запроса. Это можно сделать следующим образом:
https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3
Предположим, вы пытаетесь получить доступ к этим параметрам запроса с помощью индексов 0, 1 и 2 в правиле "Назначить сообщение" следующим образом:
id.0
id.1 and
id.2
В этом случае развертывание прокси-сервера завершится неудачно, поскольку индекс должен начинаться с 1. Это означает, что вы можете получить доступ к первому параметру запроса "id=1" как "id.1". Чтобы получить доступ ко второму параметру запроса "id=2", нужно использовать индекс 2, то есть "id.2". Аналогично, чтобы получить доступ к третьему параметру запроса "id=3", можно использовать "id.3".
Более подробную информацию вы найдете в Справочном центре.
диагностика;
Определите правило Assign Message, в котором произошла ошибка, название атрибута и недопустимый индекс. Все эти элементы можно найти в сообщении об ошибке. Например, в следующем сообщении об ошибке название правила –
GeneratingGeocodingRequest, название атрибута –id, а индекс –0:AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0Убедитесь, что название атрибута и индекс, используемые в XML-файле невыполненного правила "Назначить сообщение", совпадают с названием атрибута и индексом, указанными в сообщении об ошибке (шаг 1 выше). Например, в следующем правиле указан атрибут
idи индекс0, которые соответствуют информации в сообщении об ошибке:<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>
Если указанный индекс равен 0 или отрицательному числу, это и является причиной ошибки.
В примере правила "Назначить сообщение", показанном выше, вы пытаетесь получить доступ к первому значению параметра запроса "id", используя индекс 0. Поэтому развертывание прокси API завершается неудачно с ошибкой:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Разрешение
В Assign Message, когда вы обращаетесь к нескольким заголовкам, параметрам запроса или другим параметрам с одинаковым названием, убедитесь, что индекс всегда больше нуля. Пример:
<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>
InvalidVariableName
Сообщение об ошибке
Развертывание прокси-сервера API через интерфейс Edge или API управления Edge завершается неудачно с сообщением об ошибке:
Error Saving Revision [revision_number] The revision is deployed, but traffic cannot flow. AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Пример сообщения об ошибке
Error Saving Revision 3
AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Пример скриншота

Причина
Если дочерний элемент <Name> пуст или не указан в элементе <AssignVariable>, развертывание прокси-сервера API завершится неудачно, поскольку не будет действительного имени переменной, которой можно присвоить значение. Укажите допустимое имя переменной.
диагностика;
Проверьте все правила Assign Message в определенном прокси API, где произошел сбой. Если в каком-либо правиле назначения сообщений дочерний элемент <Name> пуст или не указан в элементе <AssignVariable>, это и является причиной ошибки.
Пример 1. В следующем правиле Assign Message не определен элемент <Name>.
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>Assign Message-1</DisplayName>
<Properties/>
<AssignVariable>
<Value>abcd1234</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
Пример 2. В следующем правиле "Назначить сообщение" элемент <Name> пуст.
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>Assign Message-1</DisplayName>
<Properties/>
<AssignVariable>
<Name></Name>
<Value>abcd1234</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
Разрешение
Убедитесь, что дочерний элемент <Name> всегда указан и не является пустым в элементе <AssignVariable> правила "Назначить сообщение". Пример:
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <AssignVariable> <Name>appSecret</Name> <Value>abcd1234</Value> </AssignVariable> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo> </AssignMessage>