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

このページは ApigeeApigee ハイブリッドに適用されます。

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

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

ポリシーによって、セキュリティ、レート制限、変換、メディエーションの機能などが提供され、自身でコーディングやメンテナンスを行う必要がなくなります。Apigee が提供する一連のポリシータイプのだけに限定されません。API プロキシの機能を拡張して、Apigee のポリシーによってサポートされている基本的な管理機能を基に、イノベーションを実現するカスタム スクリプトとコード(JavaScript アプリケーションなど)を作成することもできます。

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

ポリシーの作成

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

  1. [Apigee] セクションで、ポリシーの接続場所に基づいて、次のいずれかの操作を行います。

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

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

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

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

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

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

フローにポリシーを接続する

ポリシーは、フローに接続されるまで実行されません。以下のトピックで説明しているように、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>