Amazon API Gateway
開発者ガイド

Amazon API Gateway 既知の問題

Amazon API Gateway REST および WebSocket API の既知の問題

  • API Gateway では、ワイルドカードサブドメイン名 (*.domain 形式の) をサポートしません。ただし、ワイルドカードの証明書 (ワイルドカードサブドメイン名の証明書) はサポートされます。

  • API Gateway では、REST および WebSocket API 間のカスタムドメイン名の共有はサポートされません。

  • /ping および /sping のパスは、サービスのヘルスチェック専用です。カスタムドメインを使用した API ルートレベルでの使用は良い結果を生みません。

  • API Gateway は現在、ログイベントを 1024 バイトに制限しています。リクエストやレスポンスの本文など、1024 バイトを超えるログイベントは、CloudWatch Logs への送信前に API ゲートウェイによって切り捨てられます。

  • 現在、CloudWatch メトリクスではディメンション名と値が 255 文字の有効な XML 文字に制限されています(詳細については、「CloudWatch ユーザーガイド」を参照してください)。 ディメンション値は、API 名、ラベル (ステージ) 名、およびリソース名を含む、ユーザーが定義した名前の関数です。これらの名前を選択する際は、CloudWatch メトリクスの制限を超えないように注意してください。

Amazon API Gateway での WebSocket API の既知の問題

  • API Gateway は最大 128 KB までのメッセージペイロードをサポートし、最大フレームサイズは 32 KB です。メッセージが 32 KB を超えた場合は、それぞれが 32 KB 以下の複数のフレームに分割する必要があります。大きなメッセージが受信された場合、接続は 1009 コードで閉じられます。

Amazon API Gateway での REST API の既知の問題

  • プレーンテキストパイプ文字 (|) はリクエスト URL クエリ文字列にサポートされておらず、URL エンコードされている必要があります。

  • セミコロン文字 (;) はリクエスト URL クエリ文字列に対してサポートされておらず、この結果、データが分割されます。

  • API Gateway コンソールを使用して API をテストする場合、バックエンドに自己署名証明書が存在すると「不明なエンドポイントのエラー」レスポンスが返される、中間証明書が証明書チェーンにない、または他の認識されない証明書関連の例外がバックエンドからスローされることがあります。

  • プライベート統合の API Resource または Method エンティティの場合は、VpcLink のハードコーディングされた参照を削除した後で、それを削除する必要があります。それ以外の場合は、ダングリング統合があり、Resource または Method エンティティが削除されても VPC リンクがまだ使用中であることを示すエラーが表示されます。プライベート統合がステージ変数を通じて VpcLink を参照する場合、この動作は適用されません。

  • 以下のバックエンドでは、API Gateway と互換性のある方法では SSL クライアント認証がサポートされない場合があります。

  • API Gateway は、ほとんどの OpenAPI 2.0 仕様OpenAPI 3.0 仕様をサポートしますが、次の例外があります。

    • API Gateway モデルは、OpenAPI が使用する JSON スキーマではなく、JSON スキーマのドラフト 4 を使用して定義されます。

    • additionalProperties フィールドは、モデルではサポートされません。

    • discriminatorパラメータは、どのスキーマオブジェクトでもサポートされません。

    • example タグはサポートされません。

    • exclusiveMinimum は API Gateway によってサポートされていません

    • 単純なリクエストの検証には maxItems タグと minItems タグが含まれません。この問題を回避するには、インポートした後で、検証を行う前にモデルを更新します。

    • oneOf は API Gateway によってサポートされていません

    • pattern は API Gateway によってサポートされていません

    • readOnly フィールドはサポートされません。

    • "500": {"$ref": "#/responses/UnexpectedError"} フォームのレスポンス定義は、OpenAPI ドキュメントルートではサポートされません。回避策として、参照をインラインスキーマに置き換えます。

    • Int32 タイプまたは Int64 タイプの数値はサポートされません。例を以下に示します。

      "elementId": { "description": "Working Element Id", "format": "int32", "type": "number" }
    • 10 進数型 ("format": "decimal") は、スキーマ定義でサポートされません。

    • メソッドレスポンスでは、スキーマ定義をオブジェクト型にする必要があり、プリミティブ型にすることはできません。たとえば、"schema": { "type": "string"} はサポートされません。ただし、回避策として次のオブジェクト型を使用できます。

      "schema": { "$ref": "#/definitions/StringResponse" } "definitions": { "StringResponse": { "type": "string" } }
  • API Gateway は、Lambda 統合または HTTP 統合を使用した処理方法に以下の制約と制限を設定しています。

    • ヘッダー名とクエリパラメータは大文字と小文字を区別する方法で処理されます。

    • 以下のヘッダーは、統合エンドポイントに送信されたり、統合エンドポイントから戻ったりしたときに、ドロップされたり、再マップされたり、それ以外の場合は変更されることがあります。

      ヘッダー名 リクエスト (http/http_proxy/lambda) レスポンス (http/http_proxy/lambda)
      Age パススルー パススルー
      Accept パススルー 除外/[Passthrough]/[Passthrough]
      Accept-Charset パススルー パススルー
      Accept-Encoding パススルー パススルー
      Authorization 除外 (400) Remapped
      Connection パススルー/パススルー/除外 Remapped
      Content-Encoding パススルー/除外/パススルー パススルー
      Content-Length パススルー (本文に基づいて生成された) パススルー
      Content-MD5 除外 Remapped
      Content-Type パススルー パススルー
      Date パススルー 上書きされ再マッピングされた
      Expect 除外 除外
      Host 5XX/5XX/Lambda により上書き 除外
      Max-Forwards 除外 Remapped
      Pragma パススルー パススルー
      Proxy-Authenticate 除外 除外
      Range パススルー パススルー
      Referer パススルー パススルー
      Server 除外 上書きされ再マッピングされた
      TE 除外 除外
      Transfer-Encoding 除外/除外/例外 除外
      Trailer 除外 除外
      Upgrade 除外 除外
      User-Agent パススルー Remapped
      Via 除外/除外/パススルー パススルー/除外/除外
      Warn パススルー パススルー
      WWW-Authenticate 除外 Remapped
  • API Gateway で生成された API の Android SDK では、java.net.HttpURLConnection クラスを使用します。このクラスは、Android 4.4 以前を実行するデバイスでは、WWW-Authenticate ヘッダーから X-Amzn-Remapped-WWW-Authenticate への再マッピングに伴う 401 レスポンスに対して、処理されない例外をスローします。

  • API Gateway で生成された Java や、API の Android および iOS SDK とは異なり、API Gateway で生成された API の JavaScript SDK では、500 レベルのエラーの再試行はサポートされていません。

  • メソッドのテスト呼び出しでは、application/json のデフォルトコンテンツタイプを使用し、その他のコンテンツタイプの使用は無視されます。