Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
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> политики Assign Message, равен 0 или отрицательному числу, то развертывание API-прокси завершится неудачей.
Например, если вы передаете несколько параметров запроса с одинаковым именем, вы можете получить к ним доступ в Edge как к индексированным переменным потока. Допустим, вы хотите передать идентификаторы 3 студентов в качестве параметров запроса, тогда вы можете сделать это следующим образом:
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".
Более подробную информацию можно найти здесь .
Диагноз
Укажите политику назначения сообщений, в которой произошла ошибка, имя атрибута и недопустимый индекс. Все эти данные можно найти в сообщении об ошибке. Например, в следующем примере ошибки имя политики —
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-прокси завершится неудачей, поскольку отсутствует допустимое имя переменной, которой можно присвоить значение. Требуется допустимое имя переменной.
Диагноз
Проверьте все политики назначения сообщений в конкретном API-прокси, где произошла ошибка. Если в какой-либо политике назначения сообщений дочерний элемент <Name> пуст или не указан в элементе <AssignVariable> , то это и является причиной ошибки.
Пример 1: В следующей политике назначения сообщений отсутствует элемент <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>