ヘッダー変換レスポンス・ポリシーの追加

ヘッダー変換レスポンス・ポリシーをAPIデプロイメント仕様に追加するには、コンソールを使用するか、JSONファイルを編集します。

ヘッダー変換ポリシーを使用して、特定の保護されたレスポンス・ヘッダーを変換することはできません。保護されたリクエスト・ヘッダーおよびレスポンス・ヘッダーを参照してください。

コンソールを使用したヘッダー変換レスポンス・ポリシーの追加

コンソールを使用してヘッダー変換レスポンス・ポリシーをAPIデプロイメント仕様に追加するには:

  1. コンソールを使用してAPIデプロイメントを作成または更新したり、「デプロイメントの作成」オプションを選択して、「基本の情報」ページで詳細を入力します。

    詳細は、APIデプロイの作成によるAPIゲートウェイのAPIのデプロイおよびAPIゲートウェイの更新を参照してください

  2. 「次へ」を選択し、「認証」ページで認証オプションを指定します。

    認証オプションの詳細は、APIデプロイメントへの認証と認可の追加に関する項を参照してください。

  3. 「次」を選択して、「ルート」ページのAPIデプロイメント内の個々のルートの詳細を入力します。

  4. 「ルート」ページで、ヘッダー変換レスポンス・ポリシーを指定するルートを選択します。
  5. 「ルート・レスポンス・ポリシーのルーティングを表示」を選択します。
  6. ヘッダー変換の横にある「追加」ボタンを選択して、現在のルートのAPIゲートウェイからのレスポンスに含まれるヘッダーを更新します。
  7. レスポンスに含めるヘッダーを制限するには、次を指定します:

    • アクション: フィルタ。
    • タイプ: 「ブロック」を選択して明示的にリストしたヘッダーをレスポンスから削除するか、「許可」を選択して明示的にリストしたヘッダーのみをレスポンスで許可します(他のヘッダーはレスポンスから削除されます)。
    • ヘッダー名の指定:レスポンスから削除するか、レスポンスで許可するヘッダーのリスト(「タイプ」の設定によって決まります)。指定する名前は大/小文字が区別されず、ルートの他の変換レスポンス・ポリシーに含めることはできません(許可としてフィルタした項目を除く)。たとえば、User-Agentです。
  8. (元の値を保持したまま)レスポンスに含まれるヘッダーの名前を変更するには、次を指定します:

    • アクション: 名前の変更。
    • ヘッダー名:名前を変更するヘッダーの元の名前。指定する名前は大/小文字が区別されず、ルートの他の変換レスポンス・ポリシーに含めることはできません。たとえば、X-Usernameです。
    • 新規ヘッダー名:名前を変更するヘッダーの新規名前。指定する名前は大/小文字が区別されず(大文字の使用は無視されます)、ルートの他の変換レスポンス・ポリシーに含めることはできません(ALLOWリストの項目を除く)。たとえば、X-User-IDです。
  9. レスポンスに新しいヘッダーを追加する(またはレスポンスにすでに含まれている既存のヘッダーの値を変更または保持する)には、次を指定します:

    • アクション: 設定。
    • 動作: ヘッダーがすでに存在する場合は、ヘッダーの既存の値で何を行うかを指定します:

      • 上書き: ヘッダーの既存の値を指定した値に置き換えます。
      • 追加: 指定した値をヘッダーの既存の値に追加します。
      • スキップ: ヘッダーの既存の値を保持します。
    • ヘッダー名:レスポンスに追加する(または値を変更)ヘッダーの名前。指定する名前は大/小文字が区別されず、ルートの他の変換レスポンス・ポリシーに含めることはできません(許可としてフィルタした項目を除く)。たとえば、X-Api-Keyです。
    • 値: 新しいヘッダーの値(または動作の設定に応じて既存のヘッダーの値に置換または追加する値)。指定する値には、単純な文字列を指定することも、${...}デリミタで囲まれたコンテキスト変数を含めることもできます。たとえば、"value": "zyx987wvu654tsu321"です。複数の値を指定できます。
  10. Select Update.
  11. 「更新」を選択し、「次へ」を選択して、個々のルートについて入力した詳細を確認します。
  12. APIデプロイメントを作成または更新する場合は、「作成」または「更新」を選択します。
  13. (オプション) コールしてAPIが正常にデプロイされていることを確認します(APIゲートウェイにデプロイされたAPIのコールを参照)。

ヘッダー変換レスポンス・ポリシーを追加するためのJSONファイルの編集

JSONファイルのAPIデプロイメント仕様にヘッダー変換レスポンス・ポリシーを追加するには:

  1. 任意のJSONエディタを使用して、ヘッダー変換レスポンス・ポリシーを追加する既存のAPIデプロイメント仕様を編集するか、新しいAPIデプロイメント仕様を作成します(APIデプロイメント仕様の作成を参照)。

    たとえば、次の基本的なAPIデプロイメント仕様では、OCI関数の単純なHello Worldサーバーレス・ファンクションを単一のバック・エンドとして定義しています:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  2. ヘッダー変換レスポンス・ポリシーを適用するルートのbackendセクションの後にresponsePoliciesセクションを挿入します。例:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {}
        }
      ]
    }
  3. headerTransformationsセクションをresponsePoliciesセクションに追加します。

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations":{}
          }
        }
      ]
    }
  4. レスポンスに含まれるヘッダーを制限するには、filterHeadersヘッダー変換レスポンス・ポリシーを指定します:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations": {
              "filterHeaders": {
                "type": "<BLOCK|ALLOW>",
                "items": [
                  {
                    "name": "<header-name>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    ここでは:

    • "type": "<BLOCK|ALLOW>"は、"items":[{"name":"<header-name>"}]で指定されたヘッダーに対して実行する処理を示します:
      • BLOCKを使用して、明示的にリストしたヘッダーをレスポンスから削除します。
      • ALLOWを使用して、明示的にリストしたヘッダーのみをレスポンスで許可します(他のヘッダーはレスポンスから削除されます)。
    • "name":"<header-name>は、("type": "<BLOCK|ALLOW>"の設定に応じて)レスポンスから削除またはレスポンスで許可するヘッダーです。指定する名前は大/小文字が区別されず、ルートの他の変換レスポンス・ポリシーに含めることはできません(ALLOWリスト内の項目を除く)。たとえば、User-Agentです。

    filterHeadersヘッダー変換レスポンス・ポリシーでは、最大20個のヘッダーを削除および許可できます。

    例:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations": {
              "filterHeaders": {
                "type": "BLOCK",
                "items": [
                  {
                    "name": "User-Agent"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    この例では、APIゲートウェイはすべての送信レスポンスからUser-Agentヘッダーを削除します。

  5. レスポンスに含まれるヘッダーの名前を(元の値を保持しながら)変更するには、renameHeadersヘッダー変換レスポンス・ポリシーを指定します:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations": {
              "renameHeaders": {
                "items": [
                  {
                    "from": "<original-name>",
                    "to": "<new-name>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    ここでは:

    • "from": "<original-name>"は、名前を変更するヘッダーの元の名前です。指定する名前は大/小文字が区別されず、ルートの他の変換レスポンス・ポリシーに含めることはできません。たとえば、X-Usernameです。
    • "to": "<new-name>"は、名前を変更するヘッダーの新しい名前です。指定する名前は大/小文字が区別されず(大文字の使用は無視されます)、ルートの他の変換レスポンス・ポリシーに含めることはできません(ALLOWリストの項目を除く)。たとえば、X-User-IDです。

    renameHeadersヘッダー変換レスポンス・ポリシーでは、最大20個のヘッダーを名前変更できます。

    例:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations": {
              "renameHeaders": {
                "items": [
                  {
                    "from": "X-Username",
                    "to": "X-User-ID"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    この例では、APIゲートウェイは、ヘッダーの元の値を保持しながら、X-Usernameヘッダーの名前をX-User-IDに変更します。

  6. レスポンスに新しいヘッダーを追加する(またはレスポンスにすでに含まれている既存のヘッダーの値を変更または保持する)には、setHeadersヘッダー変換レスポンス・ポリシーを指定します:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations": {
              "setHeaders": {
                "items": [
                  {
                    "name": "<header-name>",
                    "values": ["<header-value>"],
                    "ifExists": "<OVERWRITE|APPEND|SKIP>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    ここでは:

    • "name":"<header-name>は、レスポンスに追加(または値を変更)するヘッダーの名前です。指定する名前は大/小文字が区別されず、ルートの他の変換レスポンス・ポリシーに含めることはできません(ALLOWリスト内の項目を除く)。たとえば、X-Api-Keyです。
    • "values": ["<header-value>"]は、新しいヘッダーの値(または"ifExists": "<OVERWRITE|APPEND|SKIP>"の設定に応じて既存のヘッダーの値に置換または追加する値)です。指定する値には、単純な文字列を指定することも、${...}デリミタで囲まれたコンテキスト変数を含めることもできます。たとえば、"values": "zyx987wvu654tsu321"です。

      最大10個の値を指定できます。複数の値を指定した場合、APIゲートウェイは値ごとにヘッダーを追加します。

    • "ifExists": "<OVERWRITE|APPEND|SKIP>"は、<header-name>で指定されたヘッダーがすでに存在する場合に、ヘッダーの既存の値に対して実行する処理を示します:

      • ヘッダーの既存の値を指定した値に置き換えるには、OVERWRITEを使用します。
      • 指定した値をヘッダーの既存の値に追加するには、APPENDを使用します。
      • ヘッダーの既存の値を保持するには、SKIPを使用します。

      指定しない場合、デフォルトはOVERWRITEです。

    setHeadersヘッダー変換レスポンス・ポリシーでは、最大20個のヘッダーを追加(またはその値を変更)できます。

    例:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations": {
              "setHeaders": {
                "items": [
                  {
                    "name": "X-Api-Key",
                    "values": ["zyx987wvu654tsu321"],
                    "ifExists": "OVERWRITE"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    この例では、APIゲートウェイはすべての送信レスポンスにX-Api-Key:zyx987wvu654tsu321ヘッダーを追加します。送信レスポンスのX-Api-Keyヘッダーがすでに別の値に設定されている場合、APIゲートウェイは既存の値をzyx987wvu654tsu321に置き換えます。

  7. APIデプロイメント仕様を含むJSONファイルを保存します。
  8. APIデプロイメント仕様は、次の方法でAPIデプロイメントを作成または更新するときに使用します:

    • 「既存のデプロイメントAPIのアップロード」オプションを選択したときに、コンソールでJSONファイルを指定します
    • APIゲートウェイREST APIへのリクエストでJSONファイルを指定します

    詳細は、APIデプロイの作成によるAPIゲートウェイのAPIのデプロイおよびAPIゲートウェイの更新を参照してください

  9. (オプション) コールしてAPIが正常にデプロイされていることを確認します(APIゲートウェイにデプロイされたAPIのコールを参照)。