Apigee に関する既知の問題

Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントに移動
情報

以降のセクションでは、Apigee の既知の問題について説明します。これらの問題は今後のリリースで修正される予定です。

Edge のその他の既知の問題

以降のセクションでは、Edge のその他の既知の問題について説明します。

地域 既知の問題
キャッシュの有効期限が切れると cachehit 値が正しくない

cachehit フロー変数が LookupCache ポリシーの後に使用されている場合、非同期動作のデバッグポイントがディスパッチされる方法が原因で、LookupPolicy はコールバックが実行される前に DebugInfo オブジェクトにデータを入力し、エラーが発生します。

回避策: 1 回目の呼び出しの直後に、このプロセスを繰り返して(2 回目の呼び出しを実行します)。

InvalidateCache ポリシーの PurgeChildEntries を true に設定しても正しく機能しない

InvalidateCache ポリシーで PurgeChildEntries を設定すると、KeyFragment 要素の値のみがパージされますが、キャッシュ全体が消去されます。

回避策: KeyValueMapOperations ポリシーを使用してキャッシュのバージョニングを反復処理し、キャッシュの無効化を回避します。

SharedFlow または API プロキシの同時デプロイ リクエストを行うと、Management Server で一貫性のない状態になり、複数のリビジョンがデプロイ済みとして表示されることがあります。

これは、異なるリビジョンを使用して CI/CD デプロイ パイプラインの同時実行が行われた場合などに発生することがあります。この問題を回避するには、現在のデプロイが完了する前に API プロキシまたは SharedFlow をデプロイしないようにします。

回避策: API プロキシまたは SharedFlow の同時デプロイを回避します。

Edge UI の既知の問題

以下のセクションでは、Edge UI の既知の問題について説明します。

領域 既知の問題
組織が ID ゾーンにマッピングされると、ナビゲーション バーから [Edge SSO Zone Administration] ページにアクセスできなくなります。 組織を ID ゾーンに接続すると、左側のナビゲーション バーから [管理者] > [SSO] を選択しても、[Edge SSO Zone Administration] ページにアクセスできなくなります。回避策として、https://apigee.com/sso から直接ページに移動します。

統合ポータルの既知の問題

以下のセクションでは、統合ポータルの既知の問題について説明します。

地域 既知の問題
SmartDocs
  • Apigee Edge は、仕様エディタを使用して仕様を作成する場合や、ポータルで SmartDocs を使用して API を公開する場合に OpenAPI 仕様 3.0 をサポートしていますが、一部の機能は、現時点ではサポートされていません。

    たとえば、OpenAPI 仕様 3.0 の次の機能は現時点ではサポートされていません。

    • スキーマを結合して拡張するための allOf プロパティ
    • リモート参照

    サポートされていない機能が OpenAPI 仕様で参照されると、ツールはその機能を無視し、API リファレンス ドキュメントをレンダリングする場合があります。それ以外の場合、サポートされていない機能によってエラーが発生し、API リファレンス ドキュメントの正常なレンダリングができないようにします。いずれの場合も、今後のリリースでサポートされるまで、OpenAPI 仕様を変更して、サポートされていない機能の使用を避ける必要があります。

    : 仕様エディタは API リファレンス ドキュメントのレンダリング時に SmartDocs よりも制限が少ないため、ツールによって結果が異なる場合があります。

  • ポータルでこの API を試しに使用すると、OpenAPI 仕様の consumes に設定されている値に関係なく、Accept ヘッダーが application/json に設定されます。
  • 138438484: 複数のサーバーはサポートされていません。
SAML ID プロバイダ SAML ID プロバイダを使用したシングル ログアウト(SLO)は、カスタム ドメインではサポートされていません。SAML ID プロバイダでカスタム ドメインを有効にするには、SAML 設定を構成するときに、[ログアウト URL] フィールドを空白のままにします。
ポータル管理者
  • 現時点では、複数のユーザーによる同時のポータルの更新(ページ、テーマ、CSS、スクリプトの編集など)はサポートされていません。
  • API リファレンス ドキュメントのページをポータルから削除した場合、再作成する方法はありません。API プロダクトを削除して再度追加し、API リファレンス ドキュメントを再生成する必要があります。
  • コンテンツ セキュリティ ポリシーを構成するときには、変更が完全に適用されるまで最大で 15 分かかることがあります。
  • ポータルのテーマをカスタマイズするときには、変更が完全に適用されるまで最大で 5 分かかることがあります。
ポータルの機能
  • 今後のリリースで、検索は統合ポータルに統合される予定です。

Edge for Private Cloud の既知の問題

以降のセクションでは、Edge for Private Cloud の既知の問題について説明します。

地域 既知の問題
Edge for Private Cloud 4.52.02 および 4.53.00

SetOauthV2Info ポリシーを使用する場合、AccessToken を変数に解決できない場合や null の場合、ポリシーによってデータストア エラーが発生します。

{
              "fault": {
                "faultstring": "Error while accessing datastore;Please retry later",
                "detail": {
                  "errorcode": "datastore.ErrorWhileAccessingDataStore"
                }
              }
            }
            

この動作は、このようなシナリオで "invalid_access_token" 障害がトリガーされる以前の Apigee バージョンとは異なります。

{
              "fault": {
                "faultstring": "Invalid Access Token",
                "detail": {
                  "errorcode": "keymanagement.service.invalid_access_token"
                }
              }
            }
            

この問題を軽減するには、プロキシに RaiseFault ポリシーを追加して、以前のエラー メッセージをシミュレートします。この RaiseFault ポリシーは、アクセス トークン変数が null の場合に実行できます。下記の例をご覧ください。

<!-- Sample Raise Fault Policy --->
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RaiseFault async="false" continueOnError="false" enabled="true" name="RaiseFault-MissingAccessToken">
    <DisplayName>RaiseFault-MissingAccessToken</DisplayName>
    <Properties/>
    <FaultResponse>
        <Set>
            <Headers/>
            <Payload contentType="application/json">{"fault":{"faultstring":"Invalid Access Token","detail":{"errorcode":"keymanagement.service.invalid_access_token"}}}</Payload>
            <StatusCode>500</StatusCode>
            <ReasonPhrase>Internal Server Error</ReasonPhrase>
        </Set>
    </FaultResponse>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</RaiseFault>

次の例に示すように、RaiseFault ポリシーは、プロキシフローの SetOauthV2Info ポリシーの前に条件付きで追加できます。

<Step>
  <!-- Execute RaiseFault policy if access_token flow variable is null -->
  <Condition>access_token = null</Condition>
  <Name>RaiseFault-MissingAccessToken</Name>
</Step>
<Step>
  <!-- Execute SetOAuthV2Info policy if access_token flow variable is null -->
  <Condition>access_token != null</Condition>
  <Name>SetOAuthV2Info</Name>
</Step>

Apigee は、Edge for Private Cloud バージョン 4.52.02 と 4.53.00 で上記の動作を復元するパッチをリリースします。

Edge for Private Cloud 4.52.02 アップデート

Edge for Private Cloud をバージョン 4.51.00、4.52.00、4.52.01 から 4.52.02 に更新すると、ランタイム API と Management API に追加の影響が予想されます。

この影響は、Cassandra ノードが更新された後に発生し、すべての Message Processor ノードと Management Server ノードが更新されるまで続きます。

この場合、次のいずれかの領域に影響が及ぶ可能性があります。

  • ランタイム API による OAuth トークンの更新
  • デベロッパー アプリを一覧表示する管理 API
  • プロダクトをリストする管理 API

Apigee は、この問題に対処する Edge for Private Cloud 4.52.02 の更新ドキュメントを改訂して公開します。

Edge for Private Cloud 4.52.01 Mint アップデート

この問題は、MINT を使用している場合、または Edge for Private Cloud のインストールで MINT が有効になっている場合にのみ発生します。

影響を受けるコンポーネント: edge-message-processor

問題: 収益化が有効になっている状態で、4.52.01 を新規インストールまたは以前の Private Cloud バージョンからアップグレードすると、メッセージ プロセッサに関する問題が発生します。開いているスレッド数が徐々に増加し、リソースが枯渇します。edge-message-processor system.log に次の例外が表示されます。

Error injecting constructor, java.lang.OutOfMemoryError: unable to create new native thread
Apigee HTTP/2 の脆弱性

先ごろ、サービス拒否攻撃(DoS)の脆弱性が HTTP/2 プロトコル(CVE-2023-44487)の複数の実装で発見されました(Apigee Edge for Private Cloud を含む)。この脆弱性により、Apigee API 管理機能の DoS が発生する可能性があります。詳細については、Apigee セキュリティに関する公開情報 GCP-2023-032 をご覧ください。

Edge for Private Cloud のルーター管理サーバーのコンポーネントはインターネットに公開されているため、脆弱になる可能性があります。HTTP/2 は、Edge for Private Cloud のその他の Edge 固有のコンポーネントの管理ポートで有効になっていますが、これらのコンポーネントはインターネットに公開されていません。Cassandra や Zookeeper などの Edge 以外のコンポーネントでは、HTTP/2 は有効になっていません。Edge for Private Cloud の脆弱性に対処するには、次の手順を実施することをおすすめします。

Edge Private Cloud バージョン 4.51.00.11 以降を使用している場合は、次の手順に沿って操作します。

  1. 管理サーバーを更新します。

    1. 各 Management Server ノードで /opt/apigee/customer/application/management-server.properties を開きます。
    2. プロパティ ファイルに次の行を追加します。
      conf_webserver_http2.enabled=false
    3. Management Server コンポーネントを再起動します。
      apigee-service edge-management-server restart
  2. メッセージ プロセッサを更新します。

    1. 各 Message Processor ノードで /opt/apigee/customer/application/message-processor.properties を開きます。
    2. プロパティ ファイルに次の行を追加します。
      conf_webserver_http2.enabled=false
    3. Message Processor コンポーネントを再起動します。
      apigee-service edge-message-processor restart
  3. ルーターを更新する:

    1. 各ルータノードで /opt/apigee/customer/application/router.properties を開きます。
    2. プロパティ ファイルに次の行を追加します。
      conf_webserver_http2.enabled=false
    3. Message Processor コンポーネントを再起動します。
      apigee-service edge-router restart
  4. QPID を更新する:

    1. 各 QPID ノードで /opt/apigee/customer/application/qpid-server.properties を開きます。
    2. プロパティ ファイルに次の行を追加します。
      conf_webserver_http2.enabled=false
    3. Message Processor コンポーネントを再起動します。
      apigee-service edge-qpid-server restart
  5. Postgres を更新します。

    1. 各 Postgres ノードで /opt/apigee/customer/application/postgres-server.properties を開きます。
    2. プロパティ ファイルに次の行を追加します。
      conf_webserver_http2.enabled=false
    3. Message Processor コンポーネントを再起動します。
      apigee-service edge-postgres-server restart

4.51.00.11 より前のバージョンの Edge for Private Cloud を使用している場合は、次の手順を行います。

  1. 管理サーバーを更新します。

    1. 各 Management Server ノードで /opt/apigee/customer/application/management-server.properties を開きます。
    2. プロパティ ファイルに次の 2 行を追加します。
      conf_webserver_http2.enabled=false
      conf/webserver.properties+http2.enabled=false
    3. Management Server コンポーネントを再起動します。
      apigee-service edge-management-server restart
  2. メッセージ プロセッサを更新します。

    1. 各 Message Processor ノードで /opt/apigee/customer/application/message-processor.properties を開きます。
    2. プロパティ ファイルに次の 2 行を追加します。
      conf_webserver_http2.enabled=false
      conf/webserver.properties+http2.enabled=false
    3. Message Processor コンポーネントを再起動します。
      apigee-service edge-message-processor restart
  3. ルーターを更新する:

    1. 各ルータノードで /opt/apigee/customer/application/router.properties を開きます。
    2. プロパティ ファイルに次の 2 行を追加します。
      conf_webserver_http2.enabled=false
      conf/webserver.properties+http2.enabled=false
    3. Message Processor コンポーネントを再起動します。
      apigee-service edge-router restart
  4. QPID を更新する:

    1. 各 QPID ノードで /opt/apigee/customer/application/qpid-server.properties を開きます。
    2. プロパティ ファイルに次の 2 行を追加します。
      conf_webserver_http2.enabled=false
      conf/webserver.properties+http2.enabled=false
    3. Message Processor コンポーネントを再起動します。
      apigee-service edge-qpid-server restart
  5. Postgres を更新します。

    1. 各 Postgres ノードで /opt/apigee/customer/application/postgres-server.properties を開きます。
    2. プロパティ ファイルに次の 2 行を追加します。
      conf_webserver_http2.enabled=false
      conf/webserver.properties+http2.enabled=false
    3. Message Processor コンポーネントを再起動します。
      apigee-service edge-postgres-server restart
バージョン 4.52 に更新する際の Postgresql のアップグレード

Apigee-postgresql で、Edge for Private Cloud バージョン 4.50 または 4.51 からバージョン 4.52 へのアップグレードに問題が発生しています。この問題は、テーブル数が 500 を超えている場合に主に発生します。

Postgres のテーブルの合計数を確認するには、次の SQL クエリを実行します。

select count(*) from information_schema.tables

回避策: Apigee Edge 4.50.00 または 4.51.00 を 4.52.00 に更新する場合は、Apigee-postgresql をアップグレードする前に、 事前ステップを必ず行ってください。

LDAP ポリシー

149245401: LDAP リソースで構成された JNDI の LDAP 接続プール設定が反映されず、JNDI のデフォルトにより、毎回 1 回限りの接続が発生します。その結果、接続が 1 回限りで開閉され、LDAP サーバーへの接続が 1 時間あたり数多く作成されます。

回避策:

LDAP 接続プールのプロパティを変更するには、次の手順ですべての LDAP ポリシーにグローバルな変更を設定します。

  1. 構成プロパティ ファイルが存在しない場合は作成します。
    /opt/apigee/customer/application/message-processor.properties
  2. ファイルに次の行を追加します(LDAP リソース構成の要件に応じて Java Naming and Directory Interface(JNDI)プロパティの値を置き換えます)。
    bin_setenv_ext_jvm_opts="-Dcom.sun.jndi.ldap.connect.pool.maxsize=20
    -Dcom.sun.jndi.ldap.connect.pool.prefsize=2
    -Dcom.sun.jndi.ldap.connect.pool.initsize=2
    -Dcom.sun.jndi.ldap.connect.pool.timeout=120000
    -Dcom.sun.jndi.ldap.connect.pool.protocol=ssl"
  3. ファイル /opt/apigee/customer/application/message-processor.properties の所有者が apigee:apigee であることを確認します。
  4. 各 Message Processor を再起動します。

接続プールの JNDI プロパティが有効になっていることを確認するには、tcpdump を実行して、LDAP 接続プールの動作の経時的な変化を観察します。

リクエスト処理のレイテンシが高い

139051927: Message Processor で発生したプロキシ処理のレイテンシが高いため、すべての API プロキシに影響しています。症状としては、通常の API レスポンス時間よりも処理時間が 200 ~ 300 ミリ秒遅延し、TPS が低い場合でもランダムに発生することがあります。これは、Message Processor が接続するターゲット サーバーが 50 台を超えている場合に発生することがあります。

根本原因:メッセージ プロセッサは、ターゲット サーバーへのアウトバウンド接続用に、ターゲット サーバー URL を HTTPClient オブジェクトにマッピングするキャッシュを保持します。この設定はデフォルトで 50 に設定されていますが、ほとんどのデプロイでは低すぎる可能性があります。デプロイメントの設定に複数の org/env の組み合わせがあり、ターゲット サーバーの数が合計で 50 を超える場合、ターゲット サーバー URL がキャッシュから常に強制排除され、レイテンシが発生します。

検証: ターゲット サーバー URL の強制排除がレイテンシの問題の原因かどうかを判断するには、Message Processor の system.log でキーワード「onEvict」または「Eviction」を検索します。ログにこれらのエラーが記録されている場合は、キャッシュサイズが小さすぎるために、ターゲット サーバー URL が HTTPClient キャッシュから強制排除されていることを示します。

回避策: Edge for Private Cloud バージョン 19.01 と 19.06 では、HTTPClient キャッシュ /opt/apigee/customer/application/message-processor.properties を編集して構成できます。

conf/http.properties+HTTPClient.dynamic.cache.elements.size=500

その後、Message Processor を再起動します。すべての Message Processor に同じ変更を加えます。

値 500 が例です。設定の最適な値は、メッセージ プロセッサが接続するターゲット サーバーの数よりも大きくする必要があります。このプロパティを大きく設定しても副作用はなく、唯一の影響はメッセージ プロセッサ プロキシ リクエストの処理時間が短縮されることです。

注: Edge for Private Cloud バージョン 50.00 のデフォルト設定は 500 です。

Key-Value マップの複数のエントリ

157933959: 組織レベルまたは環境レベルにスコープ設定された同じ Key-Value マップ(KVM)への挿入と更新が同時に行われると、データの整合性が失われ、更新が失われます。

注: この制限は Edge for Private Cloud にのみ適用されます。Edge for Public Cloud と Edge for Hybrid にはこの制限はありません。

Edge for Private Cloud で回避策を講じるには、apiproxy スコープで KVM を作成します。