Response Cache ポリシーのデプロイエラーのトラブルシューティング

現在、ApigeeApigee ハイブリッドのドキュメントを表示しています。
Apigee Edge のドキュメントを表示する

InvalidTimeout

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

Error Saving Revision revision_number
CacheLookupTimeoutInSeconds value value should be greater than zero.

エラー メッセージの例

Error Saving Revision 2
CacheLookupTimeoutInSeconds -1 value should be greater than zero.

エラーのスクリーンショットの例

リビジョン 2 の保存エラー。

原因

ResponseCache ポリシー<CacheLookupTimeoutInSeconds> 要素が負の数に設定されている場合、API プロキシのデプロイは失敗します。

たとえば、<CacheLookupTimeoutInSeconds>-1 である場合、API プロキシのデプロイは失敗します。

診断

  1. ResponseCache ポリシーで <CacheLookupTimeoutInSeconds> 要素に使用されている無効な値を識別します。この情報はエラー メッセージにあります。たとえば、次のエラーでは、<CacheLookupTimeoutInSeconds> 要素の無効な値は -1 です。

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. エラーが発生した特定の API プロキシで、すべての ResponseCache ポリシーを調べます。<CacheLookupTimeoutInSeconds> 要素が指定された ResponseCache ポリシーが 1 つ以上存在する可能性があります。

    たとえば、次のポリシー構成では、<CacheLookupTimeoutInSeconds>-1 に設定されます。これは、エラー メッセージの内容と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
        <DisplayName>Response Cache-1</DisplayName>
        <Properties/>
        <CacheKey>
            <Prefix/>
            <KeyFragment ref="request.uri" type="string"/>
        </CacheKey>
        <Scope>Exclusive</Scope>
        <ExpirySettings>
            <ExpiryDate/>
            <TimeOfDay/>
            <TimeoutInSec ref="">3600</TimeoutInSec>
        </ExpirySettings>
        <CacheLookupTimeoutInSeconds>-1</CacheLookupTimeoutInSeconds>
    </ResponseCache>
    
  3. <CacheLookupTimeoutInSeconds> が負の整数として指定されている場合、それがエラーの原因です。

解決策

ResponseCache ポリシーの <CacheLookupTimeoutInSeconds> 要素の値を、必ず負でない整数として指定するようにします。

上に示した ResponseCache ポリシーの例を修正するには、<CacheLookupTimeoutInSeconds> element30 に変更します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
    <DisplayName>Response Cache-1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref="request.uri" type="string"/>
    </CacheKey>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <ExpiryDate/>
        <TimeOfDay/>
        <TimeoutInSec ref="">3600</TimeoutInSec>
    </ExpirySettings>
    <CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>
</ResponseCache>

InvalidCacheResourceReference

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

Error Deploying Revision revision_number to environment
Invalid cache resource reference cache_resource in Step definition response_cache_policy_name. Context Revision:revision_number;APIProxy:ResponseCache;Organization:organization;Environment:environment

エラー メッセージの例

Error Deploying Revision 2 to prod
Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod

エラーのスクリーンショットの例

リビジョン 2 を本番環境にデプロイ中にエラーが発生しました。

原因

このエラーは、API プロキシがデプロイされている環境に存在しない名前が ResponseCache ポリシー<CacheResource> 要素に設定されている場合に発生します。

診断

  1. Response Cache ポリシーの <CacheResource> 要素で使用されている無効なキャッシュと、エラーが発生した環境を特定します。どちらの項目もエラー メッセージで確認できます。たとえば、次のエラーでは、無効なキャッシュの名前は itemscache、環境名は prod です。

    Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod
    
  2. エラーが発生した特定の API プロキシで、すべての ResponseCache ポリシーを調べます。<CacheResource> 要素で無効なキャッシュ(ステップ 1 で特定)が指定されている特定の ResponseCache ポリシーを特定します。

    たとえば、次のポリシーでは <CacheResource> の値を itemscache として指定します。これはエラー メッセージの内容と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ResponseCache async="false" continueOnError="false" enabled="true" name="ItemsResponseCache">
      <DisplayName>ItemsResponseCache</DisplayName>
      <Properties/>
      <CacheKey>
          <Prefix/>
          <KeyFragment ref="request.uri" type="string"/>
      </CacheKey>
      <CacheResource>itemscache</CacheResource>
      <Scope>Exclusive</Scope>
      <ExpirySettings>
          <ExpiryDate/>
          <TimeOfDay/>
          <TimeoutInSec ref="">3600</TimeoutInSec>
      </ExpirySettings>
      <SkipCacheLookup/>
      <SkipCachePopulation/>
    </ResponseCache>
    
  3. ステップ 2 で確認したキャッシュが、ステップ 1 で特定された固有の環境で定義されているかどうかを確認します。

    Apigee UI で、[API] > [Environment] > [Configuration] に移動し、特定の環境の [Caches] タブにキャッシュが存在するかどうかを確認します。キャッシュが存在しない場合、それがエラーの原因です。

    たとえば、次のスクリーンショットでは、itemscache という名前のキャッシュは存在しません。

    [Environment Configuration Caches] タブ。

    itemscache という名前のキャッシュが prod 環境で定義されていないため、次のエラーが発生します。

    Invalid cache resource reference does_not_exist in Step definition Response-Cache-1. Context Revision:2;APIProxy:ResponseCache;Organization:kkalckstein-eval;Environment:prod
    

解決策

API プロキシをデプロイする環境で、<CacheResource> 要素で指定されたキャッシュ名が作成されていることを確認します。

ResponseCacheStepAttachmentNotAllowedReq

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

Error Deploying Revision revision_number to environment
Response cache step definition response_cache_policy_name can not be attached more than once in the request path.

エラー メッセージの例

Error Deploying Revision 2 to test
Response cache step definition Response-Cache-1 can not be attached more than once in the request path.

エラーのスクリーンショットの例

テストするリビジョン 2 のデプロイエラー。

原因

このエラーは、同じ ResponseCache ポリシーが API プロキシの任意のフロー内の複数のリクエストパスに接続された場合に発生します。

たとえば、同じ ResponseCache ポリシーをプロキシ エンドポイントとターゲット エンドポイントの両方のリクエスト Preflow に接続すると、このエラーが発生します。

診断

  1. 複数回接続されている ResponseCache ポリシーの名前を特定します。この情報はエラー メッセージにあります。たとえば、次のエラーでは、ResponseCache ポリシーの名前は Response‑Cache‑1 です。

    Error Deploying Revision 2 to test
    Response cache step definition Response-Cache-1 can not be attached more than once in the request path.
    
  2. エラーが発生した API プロキシのプロキシ エンドポイントおよびターゲット エンドポイント内のすべてのリクエスト フローを調べます。同じ ResponseCache ポリシーが 2 つ以上のリクエスト フローに接続されている場合、それがエラーの原因です。

    次の例では、デフォルトのプロキシ エンドポイント PreFlow と、デフォルトのターゲット エンドポイント PreFlow のリクエストパスで、同じ ResponseCache ポリシー Response-Cache-1 が構成されています。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ProxyEndpoint name="default">
        <Description/>
        <FaultRules/>
        <PreFlow name="PreFlow">
            <Request>
                <Step>
                    <Name>Response-Cache-1</Name>
                </Step>
            </Request>
        ...
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <TargetEndpoint name="default">
        <Description/>
        <FaultRules/>
        <PreFlow name="PreFlow">
            <Request/>
            <Response/>
        </PreFlow>
        <PostFlow name="PostFlow">
            <Request>
                <Step>
                    <Name>Response-Cache-1</Name>
                </Step>
            </Request>
        ...
    

解決策

1 つの ResponseCache ポリシーが、API プロキシのすべてのフローにわたり必ず 1 つのリクエストパスにのみ接続されているようにします。

上記の例を修正するには、2 つのリクエスト フローのいずれか 1 つから ResponseCache ポリシー Response-Cache-1 を削除します。

ResponseCacheStepAttachmentNotAllowedResp

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

Error Deploying Revision revision_number to environment
Response cache step definition response_cache_policy_name can not be attached more than once in the response path.

エラー メッセージの例

Error Deploying Revision 2 to test
Response cache step definition Response-Cache-1 can not be attached more than once in the response path.

エラーのスクリーンショットの例

テストするリビジョン 2 のデプロイエラー。

原因

このエラーは、同じ ResponseCache ポリシーが API プロキシの任意のフロー内の複数のレスポンスパスに接続されている場合に発生します。

たとえば、同じ ResponseCache ポリシーをプロキシ エンドポイントとターゲット エンドポイントの両方のレスポンス Preflow に接続すると、このエラーが発生します。

診断

  1. 複数回接続されている ResponseCache ポリシーの名前を特定します。この情報はエラー メッセージにあります。たとえば、次のエラーでは、ResponseCache ポリシーの名前は Response-Cache-1 です。

    Error Deploying Revision 2 to test
    Response cache step definition Response-Cache-1 can not be attached more than once in the response path.
    
  2. エラーが発生した API プロキシのプロキシ エンドポイントおよびターゲット エンドポイント内のすべてのリクエスト フローを調べます。同じ ResponseCache ポリシーが 2 つ以上のレスポンス フローに接続されている場合、それがエラーの原因です。

    次の例では、デフォルトのプロキシ エンドポイント PreFlow とデフォルトのターゲット エンドポイント PreFlow のレスポンスパスに同じ ResponseCache ポリシー Response-Cache-1 が構成されています。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ProxyEndpoint name="default">
        <Description/>
        <FaultRules/>
        <PreFlow name="PreFlow">
            <Request>
                <Step>
                    <Name>Response-Cache</Name>
                </Step>
            </Request>
            <Response>
                <Step>
                    <Name>Response-Cache-1</Name>
                </Step>
            </Response>
        </PreFlow>
        ...
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <TargetEndpoint name="default">
        <Description/>
        <FaultRules/>
        <PreFlow name="PreFlow">
            <Request/>
            <Response/>
        </PreFlow>
        <PostFlow name="PostFlow">
            <Request/>
            <Response>
                <Step>
                    <Name>Response-Cache-1</Name>
                </Step>
            </Response>
        </PostFlow>
        ...
    

解決策

1 つの ResponseCache ポリシーが、API プロキシのすべてのフローにわたり必ず 1 つのレスポンスパスにのみ接続されているようにします。

上記の例を修正するには、2 つのレスポンスパスのいずれか 1 つから ResponseCache ポリシー Response-Cache-1 を削除します。

InvalidMessagePatternForErrorCode

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージのいずれかが表示されます。

Error Deploying Revision revision_number to environment
Invalid message pattern found for error code steps.cache.InvalidSkipCacheLookUpCondition.

または

Error Deploying Revision revision_number to environment
Invalid message pattern found for error code steps.cache.InvalidSkipCachePopulationCondition.

エラー メッセージの例

Error Deploying Revision 2 to prod
Invalid message pattern found for error code steps.cache.InvalidSkipCacheLookUpCondition.

または

Error Deploying Revision 2 to prod
Invalid message pattern found for error code steps.cache.InvalidSkipCachePopulationCondition.

エラーのスクリーンショットの例

リビジョン 2 を本番環境にデプロイ中にエラーが発生しました - LookUp。

または

リビジョン 2 を本番環境にデプロイ中にエラーが発生しました - Population。

原因

このエラーは、ResponseCache ポリシー<SkipCacheLookup> 要素と <SkipCachePopulation> 要素のいずれかに無効な条件が含まれている場合に発生します。

診断

  1. エラーが発生した API プロキシのすべての ResponseCache ポリシーを調べ、<SkipCacheLookup> 要素または <SkipCachePopulation> 要素に条件が指定されているポリシーがあるかどうかを確認します。

  2. <SkipCacheLookup> 要素または <SkipCachePopulation> 要素に指定された条件が無効であるかどうかを確認します。呼び出している場合は、それがエラーの原因です。

    次の例では、<SkipCachePopulation> 要素で JavaScript 演算子 === を使用し、無効な等しい値と等しい種類を確認します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
        <DisplayName>Response Cache-1</DisplayName>
        <Properties/>
        <CacheKey>
            <Prefix/>
            <KeyFragment ref="request.uri" type="string"/>
        </CacheKey>
        <Scope>Exclusive</Scope>
        <ExpirySettings>
            <ExpiryDate/>
            <TimeOfDay/>
            <TimeoutInSec ref="">3600</TimeoutInSec>
        </ExpirySettings>
        <CacheLookupTimeoutInSeconds>2</CacheLookupTimeoutInSeconds>
        <SkipCacheLookup>request.header.bypass-cache === "true"</SkipCacheLookup>
    </ResponseCache>
    

    演算子 === が無効なため、次のエラーが発生します。

    Invalid message pattern found for error code steps.cache.InvalidSkipCacheLookUpCondition.
    

解決策

<SkipCacheLookup> 要素や <SkipCachePopulation> 要素に指定された条件が常に有効であることを確認します。

上に示した ResponseCache ポリシーの例を修正するには、= 演算子を使用するように <SkipCacheLookup> を変更します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
    <DisplayName>Response Cache-1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref="request.uri" type="string"/>
    </CacheKey>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <ExpiryDate/>
        <TimeOfDay/>
        <TimeoutInSec ref="">3600</TimeoutInSec>
    </ExpirySettings>
    <CacheLookupTimeoutInSeconds>2</CacheLookupTimeoutInSeconds>
    <SkipCacheLookup>request.header.bypass-cache = "true"</SkipCacheLookup>
</ResponseCache>

CacheNotFound

エラー メッセージ

Apigee UI または API による API プロキシのデプロイで、次のようなエラー メッセージが表示され、API プロキシのデプロイ ステータスは部分的にデプロイされたものとしてマークされます。

Error: Cache : cache_resource, not found in organization : organization__environment.

エラー メッセージの例

Error Cache : Response-Cache-1, not found in organization : kkalckstein-eval__prod

原因

このエラーは、エラー メッセージに記述されているキャッシュが、特定の Message Processor コンポーネント上に作成されていない場合に発生します。

解決策

Apigee サポートまでお問い合わせください。