InvalidIndex
エラー メッセージ
Edge UI または Edge 管理 API で API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。
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
スクリーンショットの例

原因
Assign Message ポリシーの <Copy> または <Remove> 要素に指定されたインデックスが 0 か負の数の場合、API プロキシのデプロイに失敗します。
たとえば、同じ名前の複数のクエリ パラメータを渡すと、Edge ではインデックス付きのフロー変数として、これらのパラメータにアクセスできます。たとえば、クエリ パラメータとして 3 人の学生の ID を渡す場合、次のようになります。
https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3
Assign Message ポリシーでインデックス番号 0、1、2 を使用して、これらのクエリ パラメータにアクセスすると、次のようになります。
id.0
id.1 and
id.2
この場合、インデックスが 1 から開始していないため、プロキシのデプロイに失敗します。最初のクエリ パラメータ "id=1" を "id.1" とするとアクセスできます。2 番目のクエリ パラメータ "id=2" にアクセスするには、インデクス番号 2("id.2")を使用します。同様に、3 番目のクエリ パラメータ "id=3" にアクセスするには、"id.3" を使用します。
詳細については、こちらをご覧ください。
診断
エラーが発生した Assign Message ポリシーと属性名、無効なインデックスを特定します。これらはすべてエラー メッセージで確認できます。たとえば、エラー メッセージの場合、
GeneratingGeocodingRequestがポリシー名、idが属性名、0がインデックスです。AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0エラーが発生した Assign Message ポリシーの XML で使用されている属性名とインデックスが、エラー メッセージ(上の手順 1)にある属性名とインデックスに一致しているかどうか確認します。たとえば、次のポリシーでは属性
idとインデックス0が指定されていますが、これらはエラー メッセージの内容と一致します。<AssignMessage name="GenerateStudentsReq>uest&qu<ot; AssignTo createNew="true&>quot; type="re<quest&quo>t;Stude<ntsInfoRequest/Assign>To Co<py source=&>quot;request&qu<ot; QueryParams > Query<Param name="school>_name"/ < QueryParam >name="id.0<"/ Q>ueryParam n<ame="id>.1"<;/ > < QueryPa>ram name="id.2"/ /QueryParams /Copy /AssignMessage
指定されたインデックスが 0 または負の数の場合、これがエラーの原因です。
上の Assign Message ポリシーの例では、インデックス 0 を使用してクエリ パラメータ "id" の最初の値にアクセスしようとしています。このため、API プロキシのデプロイが失敗し、次のエラーが返されます。
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
解決策
Assign Message ポリシーで複数のヘッダー、クエリ パラメータまたは同じ名前を共有するパラメータにアクセスする場合は、常に 0 より大きいインデックスを指定します。例:
<AssignMessage name="GenerateStudentsReq>uest"<;
AssignTo createNew="true&>quot; type="re<quest&quo>t;Student<sInfoRequest/AssignTo>
Copy< source=&qu>ot;request"
< QueryParams
> QueryPa<ram name="school_n>ame"/
< QueryParam na>me="id.1&quo<t;/
Que>ryParam name=<"id.2&q>uot;/
< > < QueryParam >name="id.3"/
/QueryParams
/Copy
/AssignMessage
InvalidVariableName
エラー メッセージ
Edge UI または Edge 管理 API で API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。
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.
スクリーンショットの例

原因
<AssignVariable> 要素の子要素 <Name> が空か、指定されていない場合、値を割り当てる有効な変数名が存在しないため、API プロキシのデプロイに失敗します。有効な変数名が必要です。
診断
特定の API プロキシで、エラーが発生した Assign Message ポリシーをすべて調べます。<AssignVariable> 要素の子要素 <Name> が空か、指定されていない Assign Message ポリシーが存在する場合、これがエラーの原因です。
例 1: 次の Assign Message ポリシーに <Name> 要素が定義されていない。
<AssignMessage async="false" continueOnError="false" enabled="true>" na<me="As>sign-Message-1&q<uot;
> DisplayN<ameAssign M>essage-1/<DisplayName
> Propert<ies/
> <Assign>Variable
< Val>ueabcd123<4/Value
/AssignVa>riabl<e
IgnoreUnresolved>Variables<false/IgnoreUnresolvedVariables
AssignTo createNe>w="true&<quot; tra>nspor<t="http&q>uot; type="request"googleBookReq/AssignTo
/AssignMessage
例 2: 次の Assign Message ポリシーの <Name> 要素が空になっている。
<AssignMessage async="false" continueOnError="false" enabled="true>" na<me="As>sign-Message-1&q<uot;
> DisplayN<ameAssign M>essage-1/<DisplayName
> Propert<ies/><
> AssignVar<iable>
< N>ame/Name
< Val>ueabcd123<4/Value
/AssignVa>riabl<e
IgnoreUnresolved>Variables<false/IgnoreUnresolvedVariables
AssignTo createNe>w="true&<quot; tra>nspor<t="http&q>uot; type="request"googleBookReq/AssignTo
/AssignMessage
解決策
Assign Message ポリシーで子要素 <Name> を常に指定し、<AssignVariable> 要素に空でない値を指定します。例:
<AssignMessage async="false" continueOnError="false" enabled="true>" na<me="As>sign-Message-1&q<uot; > DisplayN<ameAssign M>essage-1/Disp<layName > Properties/< > <Assig>nVariable < > Name<appSec>ret/Name < Val>ueabcd123<4/Value /AssignVa>riabl<e IgnoreUnresolved>Variables<false/IgnoreUnresolvedVariables AssignTo createNe>w="true&<quot; tra>nspor<t="http&q>uot; type="request"googleBookReq/AssignTo /AssignMessage