Sie lesen die Dokumentation zu Apigee X.
Apigee Edge-Dokumentation aufrufen
InvalidIndex
Fehlermeldung
Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder die API schlägt mit der folgenden Fehlermeldung fehl:
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]
Beispiel für Fehlermeldung
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
Ursache
Wenn der in den Elementen <Copy>
und/oder <Remove>
der HTTPModifier-Richtlinie angegebene Wert 0 oder eine negative Zahl ist, schlägt die Bereitstellung des API-Proxys fehl.
Wenn Sie beispielsweise mehrere Abfrageparameter mit demselben Namen übergeben, können Sie auf diese als indexierte Ablaufvariablen zugreifen. Wenn Sie die IDs von drei Studenten als Abfrageparameter übergeben möchten, gehen Sie so vor:
https://$EXTERNAL_IP/$PROXY_BASEPATH?school_name=NPS&id=1&id=2&id=3
Nehmen wir außerdem an, Sie möchten auf die folgenden Abfrageparameter mit den Indexnummern 0, 1 und 2 in der HTTPModifier-Richtlinie zugreifen:
id.0
id.1 and
id.2
In diesem Fall schlägt die Bereitstellung des Proxys fehl, da der Index mit 1 beginnen muss. Sie können also auf den ersten Abfrageparameter "id=1" als "id.1" zugreifen. Für den Zugriff auf den zweiten Abfrageparameter "id=2" müssen Sie Index 2, also "id.2", verwenden. In ähnlicher Weise können Sie "id.3" verwenden, um auf den dritten Abfrageparameter "id=3" zuzugreifen.
Weitere Informationen finden Sie in der Dokumentation AssignMessage-Richtlinie Copy Element.
Diagnose
Geben Sie die HTTPModifier-Richtlinie, in der der Fehler aufgetreten ist, den Namen des Attributs und den ungültigen Index an. Sie finden alle diese Elemente in der Fehlermeldung. Beispiel: Im folgenden Fehler lautet der Richtlinienname
GeneratingGeocodingRequest
, der Name des Attributsid
und der Index0
:HTTPModifier[GenerateStudentsRequest]: index must be greater than zero in id.0
Überprüfen Sie, ob der Attributname und der Index in der fehlgeschlagenen HTTPModifier-Richtlinie mit dem Attributnamen und dem in der Fehlermeldung angegebenen Index übereinstimmen (Schritt 1 oben). Die folgende Richtlinie gibt beispielsweise das Attribut
id
und den Index als0
an, was dem Inhalt der Fehlermeldung entspricht:<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>
Wenn der angegebene Wert 0 oder eine negative Zahl ist, ist dies die Ursache des Fehlers.
In dem oben gezeigten Beispiel Assign Message-Richtlinie versucht man, mit dem Index 0 auf den ersten Wert des Abfrageparameters "id" zuzugreifen. Daher schlägt die Bereitstellung des API-Proxys mit folgendem Fehler fehl:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Lösung
Wenn Sie unter „HTTPModifier“ auf mehrere Header, Abfrageparameter oder andere Parameter mit dem gleichen Namen zugreifen, achten Sie darauf, dass der Index immer größer als null ist. Beispiel:
<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>