ポリシーを使用した機能の追加

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示する。

Apigee では、ポリシーを使用することにより、コードを記述することなく API の動作をプログラムできます。policiesポリシーは、特定の限定的な管理機能を実装するモジュールに似ています。ポリシーは、一般的な管理機能を API に効率的かつ確実に追加できるように設計されています。

ポリシーには、セキュリティ、レート制限、変換、メディエーションなどの機能が備わっているため、コードを独自に構築して維持する必要がありません。Apigee が提供している一連のポリシータイプだけに限りません。API プロキシの機能を拡張し、Apigee のポリシーが対応する基本的な管理機能を基にイノベーションを実現するカスタム スクリプトとコード(JavaScript アプリケーションなど)を作成することもできます。

以降のセクションで説明するように、Cloud Code の Apigee を使用して、API プロキシと共有フローにポリシーを作成して接続します。ポリシーの種類によっては、リソースの管理の説明に沿って、リソースを作成する必要がある場合があります。Apigee ワークスペースでのフォルダとファイルの管理もご覧ください。

ポリシーの作成

Apigee in Cloud Code を使用してポリシーを作成するには:

  1. Apigee ワークスペースで、ポリシーの接続場所に基づいて、次のいずれかの操作を行います。

    接続先 対応
    API プロキシ 次のいずれかの操作を行います。
    • 次のいずれかのフォルダにカーソルを合わせて、[Apigee ポリシーの作成アイコン] をクリックし、[Create policy] を選択します。
      • apiproxy-name プロキシ バンドル
      • apiproxy-name/apiproxy
    • API プロキシの apiproxy-name/apiproxy/policies フォルダにカーソルを合わせ、API プロキシの作成アイコン をクリックします。
    共有フロー 次のいずれかの操作を行います。
    • 次のいずれかのフォルダにカーソルを合わせて、[共有フロー アイコンを作成する] をクリックし、[Create policy] を選択します。
      • sharedflow-name 共有フローバンドル
      • sharedflow-name/sharedflowbundle
    • 共有フローの sharedflow-name/sharedflowbundle/policies フォルダにカーソルを合わせて、[共有フロー アイコンを作成する] をクリックします。

[Create policy] ウィザードが開きます。

  1. リストから、作成するポリシーのカテゴリを選択します。 ポリシーのカテゴリについては、ポリシー リファレンスの概要をご覧ください。

  2. ポリシーの一意の名前を入力して、Enter キーを押します。[Apigee] セクションで API プロキシまたは共有フローの /policies フォルダにポリシーが追加され、エディタで開きます。

  3. 必要に応じてファイルを編集し、[File] > [Save] を選択するか ⌘+S キーを押して、編集内容を保存します。 ポリシーの構成の詳細については、ポリシー リファレンスの概要をご覧ください。

  4. リソースの管理で説明されているとおり、ポリシー タイプによって必要な場合は、リソースを作成します。

フローへのポリシーの接続

ポリシーは、フローに接続されるまで実行されません。以下のトピックで説明しているように、ProxyEndpoint 構成または TargetEndpoint 構成で、適切なリクエスト フロー要素またはレスポンス フロー要素に <Step> 要素を追加することで、ポリシーをフローに接続できます。

たとえば、次の構成では、QuotaPolicy を ProxyEndpoint の <PreFlow> にアタッチし、API プロキシで一定期間内に許可されるリクエスト メッセージの数を構成します。

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>QuotaPolicy</Name></Step>
    </Request>
  </PreFlow>
  <HTTPProxyConnection>
    <BasePath>/weather</BasePath>
  </HTTPProxyConnection>
  <RouteRule name="default">
    <TargetEndpoint>default</TargetEndpoint>
  </RouteRule>
</ProxyEndpoint>