リソースの管理

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

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

ここでは、リソースの概要と管理方法について説明します。

リソースについて

多くのポリシータイプはリソースに依存しています。リソースとは、API プロキシへの接続時に、ポリシーで実行すべきコードまたは構成を実装するファイルです。JavaScript や JavaCallout で見られるように、ポリシーが単にいくつかのコードを実行すべき接続ポイントを API プロキシ内で定義するだけのものである場合があります。JavaScript または JavaCallout ポリシーは、リソースへのポインタです。

リソースタイプ

次の表にリソースタイプをまとめています。

リソースの種類 説明
GraphQL (graphql) GraphQL ポリシーから参照される GraphQL スキーマ ファイル。
JAR (java) JavaCallout ポリシーから参照される JAR ファイル内の Java クラス。
JavaScript (js) JavaScript ポリシーで参照される JavaScript。
JavaScript (jsc) JavaScript ポリシーで参照されるコンパイル済みの JavaScript。
OpenAPI Specification (oas) JSON 型または YAML 型のリクエスト メッセージとレスポンス メッセージを検証するために使用する OpenAPI 仕様。
Property Set (properties) API プロキシのプロパティ セットで参照可能な Key-Value ペアのコレクション。
Python (py) PythonScript ポリシーで参照される Python スクリプト。リソースは pure Python(Python 言語のみ)で実装する必要があります。
Security policy (securityPolicy) JavaCallout ポリシーから参照されるカスタム セキュリティ ポリシー。
WSDL (wsdl) SOAPMessageValidation ポリシーから参照される WSDL ファイル。
XSD (xsd) SOAPMessageValidation ポリシーで参照される XML スキーマ。
XSL Transformations (xsl) XSLTransform ポリシーで参照される XSLT 変換。

リソースの保存場所

以下の場所にリソースを保存できます。リソース ファイルを組織に保存することはできません。

  • API プロキシ リビジョン: リソースは、そのリソースが含まれる API プロキシ リビジョンでのみ使用できます。たとえば、API プロキシのリビジョン 1 に JavaScript リソースを追加してから、プロキシのリビジョン 2 で Python スクリプトを使用するように実装を変更したとします。リビジョン 1 は JavaScript リソースにのみアクセスでき、リビジョン 2 は Python リソースにのみアクセスできます。
  • 環境: 環境(testprod など)に保存されている場合、リソースは同じ環境にデプロイされたすべての API プロキシで使用可能です。

環境リポジトリは、API リソース ファイルの一覧表示API を使用したリソースの管理で説明されているように、次の URI で使用できます。 /organizations/$ORG/environments/$ENV/resourcefiles

次の表に、各リポジトリに対するリソースの作成、更新、削除に使用できるメソッドを示します。

リポジトリ 作成 表示 更新 削除
API UI API UI API UI API UI
API プロキシ リビジョン
環境

たとえば、test 環境で使用できるすべての JavaScript ファイルは、次のリポジトリに保存され、test 環境で実行される API プロキシで使用できます。

/organizations/$ORG/environments/test/resourcefiles/jsc

リソースの名前解決

最も詳細な範囲から最も広い範囲へリソース名を解決します。リソース名は、API プロキシ リビジョン レベルから環境レベルまで「チェーンの上位」で解決されます。

API プロキシ リビジョンと prod 環境の 2 つの異なるリポジトリに同じリソースを保存したとします。

次のポリシーで構成される API プロキシについて考えてみましょう。

<Javascript name='PathSetterPolicy' timeLimit='200'>
    <ResourceURL>jsc://pathSetter.js</ResourceURL>
</Javascript>

ポリシー参照は、明示的にリポジトリに解決できません。ポリシー内のリソース名と一致する名前を持つリソースのうち、最も詳細な対象を持つものが使用されます。

したがって、API プロキシが環境 prod にデプロイされる場合、ポリシーは環境スコープの pathSetter.js リソースに解決されます。

環境 test にデプロイされる場合、ポリシーは API プロキシ リビジョンをスコープとしたリソースに解決されます。環境スコープのリソースは test 環境ではなく prod 環境に含まれるからです。

Java リソース ガイドライン

-T--data-binary-F オプション(-d オプションではない)など、複数のオプションを curl で使用することで、コンパイルした Java リソースを JAR ファイルとして追加できます。例:

curl "http://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles?name={jar_file}&type=java" \  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @{jar_file}
curl "http://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles?name={jar_file}&type=java" \  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/octet-stream" \
  -T "{jar_file}"
curl "http://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles?name={jar_file}&type=java" \  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/octet-stream" \
  -F "file=@{jar_file}"

関連情報:

UI でリソースを管理する

次のセクションで説明するように、UI を使用して API プロキシ リビジョンをスコープとするリソースを管理します。

UI でリソースを表示する

新しいプロキシ エディタ

新しいプロキシ エディタを使用してリソースを表示するには:

  1. Google Cloud コンソールの Apigee UI を使用している場合: [プロキシ開発] > [API プロキシ] を選択します。

    従来の Apigee UI を使用している場合: [Develop] > [API Proxies] を選択して、[Proxies] ペインでリソースを表示するプロキシの環境を選択します。

  2. リソースを表示する API プロキシを選択します。プロキシ エディタの [概要] ビューが表示されます。

  3. [開発] タブをクリックします。
  4. 左側のペインで [リソース] までスクロールします。その下に現在のリソースが表示されます。

従来のプロキシ エディタ

従来のプロキシ エディタを使用して API プロキシ リビジョンをスコープとするリソースを表示するには:

  1. Apigee UI にログインします。
  2. 左側のナビゲーション バーで [Develop] > [API Proxies] を選択します。
  3. リソースを作成する API プロキシをリストから選択します。
    API プロキシ エディタが開き、デフォルトで [Overview] タブが表示されます。
  4. [Develop] タブをクリックします。
  5. 必要に応じて、[Revision] プルダウンでリビジョンを選択します。

    API プロキシ リビジョンをスコープとするリソースは、[Navigator] ビューの [Resources] セクションに表示されます。

UI でリソースを作成する

新しいプロキシ エディタ

新しいプロキシ エディタを使用してリソースを作成するには:

  1. Google Cloud コンソールの Apigee UI を使用している場合: [プロキシ開発] > [API プロキシ] を選択します。

    従来の Apigee UI を使用している場合: [Develop] > [API Proxies] を選択して、[Proxies] ペインでリソースを表示するプロキシの環境を選択します。

  2. リソースを表示する API プロキシを選択します。プロキシ エディタの [概要] ビューが表示されます。

  3. [開発] タブをクリックします。
  4. 左側のペインで、[リソース] まで下にスクロールし、右側の [+] ボタンをクリックします。
  5. [リソースを追加] ダイアログで、次のように入力します。
    • リソースの種類: リソースのファイルの種類を選択します。
    • [ソース] で、[Create a new file] または [Import file] を選択します。[Import file] を選択した場合は、[ファイル] フィールドでインポートするファイルも選択します。
    • リソース名: リソースの名前を入力します。
  6. [追加] をクリックします。

従来の Apigee

従来の Apigee UI を使用して、API プロキシ リビジョンにスコープを設定するリソースを作成するには:

  1. API プロキシ リビジョンをスコープとするリソースを表示します
  2. [Navigator] ビューの [Resources] セクションで + をクリックします。[New Resource] ダイアログが表示されます。
  3. 次のように入力します。
    フィールド 説明
    ソース 新しいファイルを作成するか、ファイルをインポートします。
    ファイル形式 プルダウン リストからリソースタイプを選択します。
    ファイル名 ファイルの名前。ファイル名の拡張子は、選択したファイルタイプに対して有効である必要があります。

UI でリソースを更新する

API プロキシ リビジョンをスコープとするリソースは、リビジョンがデプロイされていない場合にのみ更新します。API プロキシ リビジョンがデプロイされた後は変更できません。

UI を使用して、API プロキシ リビジョンをスコープとするリソースを、次のように更新します。

  1. API プロキシ リビジョンをスコープとするリソースを表示します
  2. [Navigator] ビューの [リソース] で、更新するリソースをクリックします。
    注: JAR ファイルの場合、編集するリソースにカーソルを合わせて、編集アイコンの画像。 をクリックします。
  3. 必要に応じてリソースを更新します。
    注: 新しい JAR ファイルをアップロードしたら、[更新] をクリックしてください。

UI でリソースを削除する

API プロキシ リビジョンをスコープとするリソースは、リビジョンがデプロイされていない場合にのみ削除します。API プロキシ リビジョンがデプロイされた後は変更できません。

UI を使用して、API プロキシ リビジョンをスコープとするリソースを、次のように削除します。

  1. API プロキシ リビジョンをスコープとするリソースを表示します
  2. [Navigator] ビューの [リソース] で、削除するリソースにカーソルを合わせて、操作メニューを表示します。
  3. [削除アイコンの画像。] をクリックします。
  4. [削除] をクリックして操作を確定します。

API でリソースを管理する

ここでは、API を使用したリソースの管理方法について説明します。

API でリソースを作成する

以下のセクションで説明しているように、API プロキシ リビジョンまたは環境をスコープとするリソースを作成します。

API を使用して API プロキシ リビジョンをスコープとするリソースを作成する

以下のセクションで説明するように、API を使用して、API プロキシ リビジョンをスコープとするリソースを作成します。

API を使用して API プロキシ リビジョンをスコープとするリソースを作成するには:

  1. リソース ファイルを作成します。
  2. API プロキシ構成バンドルにリソース ファイルを追加します。
  3. 次のいずれかの API を使用して、バンドルをアップロードします。

API を使用して環境をスコープとするリソースを作成する

API を使用して環境をスコープとするリソースを作成するには、POST リクエストをリソース /organizations/$ORG/environments/$ENV/resourcefiles に発行します。

リクエストには次の情報を含めます。

  • name クエリ パラメータをリソース名に設定する
  • type クエリ パラメータを必要なリソースタイプに設定する
  • リソース ファイルの内容を application/octet-stream または multipart/form-data として渡す。

次の例は、リクエスト本文にコンテンツを渡すことで JavaScript リソースを作成する方法を示しています。

curl -X POST https://apigee.googleapis.com/v1/organizations/myorg/environments/test/resourcefiles?name=pathSetter.js&type=jsc
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type:application/octet-stream" \
  -d 'request.headers["RequestPath"] = context.getVariable("proxy.basepath");'

ここで、OAuth 2.0 アクセス トークンの取得で説明されているように、$TOKEN は OAuth 2.0 アクセス トークンに設定されます。この例で使用されている curl オプションの詳細については、curl の使用をご覧ください。使用される環境変数の説明については、Apigee API リクエストの環境変数の設定をご覧ください。

次の例で、リソースをローカルマシンからファイルとしてアップロードする方法を示します。環境または組織をスコープとする JavaScript ファイルに JavaScript ポリシーでアクセスできるようにするには、curl のバイナリ アップロードに -F を使用することが重要です。

curl -X POST https://apigee.googleapis.com/v1/organizations/myorg/environments/test/resourcefiles?name=pathSetter.js&type=jsc
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type:multipart/form-data" \
  -F file=@pathSetter.js

レスポンスの例を次に示します。

{
  "name" : "pathSetter.js",
  "type" : "jsc"
}

API でリソースを表示する

ここでは、API を使用してリソースを表示する方法について説明します。

API ですべてのリソースを表示する

次のセクションで説明するように、API を使用して環境をスコープとするすべてのリソースを表示します。

API を使用して、環境をスコープとするリソースのみを表示できます。

API を使用して環境内のすべてのリソースを表示するには、リソース https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefilesGET リクエストを送信します。

次の例では、test 環境内のすべてのリソースを一覧表示します。

curl -X GET https://apigee.googleapis.com/v1/organizations/myorg/environments/test/resourcefiles
  -H "Authorization: Bearer $TOKEN"

ここで、OAuth 2.0 アクセス トークンの取得で説明されているように、$TOKEN は OAuth 2.0 アクセス トークンに設定されます。この例で使用されている curl オプションの詳細については、curl の使用をご覧ください。使用される環境変数の説明については、Apigee API リクエストの環境変数の設定をご覧ください。

詳細については、List environment resource files API をご覧ください。

レスポンスの例を次に示します。

{
  "resourceFile": [
{
  "name" : "pathSetter.js",
  "type" : "jsc"
}
  ]
}

API でリソースのコンテンツを表示する

API を使用して環境内のリソースの内容を表示するには、リソース /organizations/$ORG/environments/$ENV/resourcefiles/$TYPE/$NAMEGET リクエストを送信します。

次の例は、test 環境での pathSetter.js JavaScript(jsc)ファイルの内容を示しています。

curl -X GET https://apigee.googleapis.com/v1/organizations/myorg/environments/test/resourcefiles/jsc/pathSetter.js
  -H "Authorization: Bearer $TOKEN"

ここで、OAuth 2.0 アクセス トークンの取得で説明されているように、$TOKEN は OAuth 2.0 アクセス トークンに設定されます。この例で使用されている curl オプションの詳細については、curl の使用をご覧ください。使用される環境変数の説明については、Apigee API リクエストの環境変数の設定をご覧ください。

レスポンスの例を次に示します。

request.headers["RequestPath"] = context.getVariable("proxy.basepath");

API でリソースを更新する

以下のセクションで説明しているように、API プロキシ リビジョンまたは環境をスコープとするリソースを更新します。

API を使用して API プロキシ リビジョンをスコープとするリソースを更新する

API を使用して API プロキシ リビジョンをスコープとするリソースを更新するには:

  1. Get API proxy revision API を使用して次のオプションを設定し、API プロキシ構成バンドルをダウンロードします。
    • format クエリ パラメータを bundle に設定します。
    • Accept ヘッダーを application/zip に設定します。
  2. API プロキシ構成バンドルのリソース ファイルを更新します。
  3. Update API proxy revision API を使用して、API プロキシ構成バンドルをアップロードします。

API を使用して環境をスコープとするリソースを更新する

API を使用して環境をスコープとするリソースを更新するには、リソース /organizations/$ORG/environments/$ENV/resourcefiles/$TYPE/$NAMEPUT リクエストを送信します。

リソース ファイルの内容を application/octet-stream または multipart/form-data として渡します。

次の例は、リクエスト本文に内容を渡して、JavaScript リソースを更新する方法を示しています。

curl -X PUT https://apigee.googleapis.com/v1/organizations/myorg/environments/test/resourcefiles/jsc/pathSetter.js
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type:application/octet-stream" \
  -d 'request.headers["RequestPath"] = context.getVariable("proxy.basepath");'

ここで、OAuth 2.0 アクセス トークンの取得で説明されているように、$TOKEN は OAuth 2.0 アクセス トークンに設定されます。この例で使用されている curl オプションの詳細については、curl の使用をご覧ください。使用される環境変数の説明については、Apigee API リクエストの環境変数の設定をご覧ください。

次の例は、ローカルマシンのファイルを使用してリソース ファイルを更新する方法を示しています。環境または組織をスコープとする JavaScript ファイルに JavaScript ポリシーでアクセスできるようにするには、curl のバイナリ アップロードに -F を使用することが重要です。

curl -X PUT https://apigee.googleapis.com/v1/organizations/myorg/environments/test/resourcefiles/jsc/pathSetter.js
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type:multipart/form-data" \
  -F file=@pathSetter.js

レスポンスの例を次に示します。

{
  "name" : "pathSetter.js",
  "type" : "jsc"
}

API でリソースを削除する

以下のセクションで説明しているように、API プロキシ リビジョンまたは環境をスコープとするリソースを削除します。

API を使用して API プロキシ リビジョンをスコープとするリソースを削除する

ハイブリッドでは、API を使用して API プロキシをスコープとするリソースを削除します。

  1. Get API proxy revision API を使用して次のオプションを設定し、API プロキシ構成バンドルをダウンロードします。
    • format クエリ パラメータを bundle に設定します。
    • Accept ヘッダーを application/zip に設定します。
  2. API プロキシ構成バンドルからリソース ファイルを削除します。
  3. Update API proxy revision API を使用して、API プロキシ構成バンドルをアップロードします。

API を使用して環境をスコープとするリソースを削除する

以下のセクションに従って、API を使用して環境をスコープとするリソースを削除します。

API を使用して環境をスコープとするリソースを削除するには、リソース https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles/$TYPE/$NAMEDELETE リクエストを発行します。

次の例では、test 環境から pathSetter.js JavaScript リソース ファイルを削除します。

curl -X DELETE https://apigee.googleapis.com/v1/organizations/my-organization/environments/test/resourcefiles/jsc/pathSetter.js \
  -H "Authorization: Bearer $TOKEN"
  

ここで、OAuth 2.0 アクセス トークンの取得で説明されているように、$TOKEN は OAuth 2.0 アクセス トークンに設定されます。この例で使用されている curl オプションの詳細については、curl の使用をご覧ください。使用される環境変数の説明については、Apigee API リクエストの環境変数の設定をご覧ください。

詳細については、Delete resource file API をご覧ください。

レスポンスの例を次に示します。

{
  "name" : "pathSetter.js",
  "type" : "jsc"
}

リソースにアクセスする

リソースへのアクセス方法は、リソースタイプによって異なります。詳細については、ポリシー リファレンスの概要をご覧ください。

このセクションの例では、pathSetter.js という名前の JavaScript リソースを作成して管理し、それを JavaScript 型のポリシーから参照できるようにする方法を示しています。

JavaScript をリクエスト PostFlow に適用するには、ファイル pathSetter.js を参照する PathSetterPolicy.xml というポリシーを作成します。

<Javascript name='PathSetterPolicy' timeLimit='200'>
    <ResourceURL>jsc://pathSetter.js</ResourceURL>
</Javascript>

次に、エンドポイント構成でポリシーを参照します。

<PostFlow>
  <Request>
    <Step><Name>PathSetterPolicy</Name></Step>
  </Request>
<PostFlow>

詳細については、JavaScript ポリシーをご覧ください。