このページは Apigee と Apigee ハイブリッドに適用されます。
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 リソースにのみアクセスできます。
- 環境: 環境(
test
、prod
など)に保存されている場合、リソースは同じ環境にデプロイされたすべての 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}"
関連情報:
- Java のベスト プラクティス: API プロキシの設計と開発のベスト プラクティス
- Java クックブックの例: XSL Transform ポリシー
UI でリソースを管理する
次のセクションで説明するように、UI を使用して API プロキシ リビジョンをスコープとするリソースを管理します。
UI でリソースを表示する
新しいプロキシ エディタ
新しいプロキシ エディタを使用してリソースを表示するには:
Cloud コンソールの Apigee UI を使用している場合: [プロキシ開発] > [API プロキシ] を選択します。
従来の Apigee UI を使用している場合: [Develop] > [API Proxies] を選択して、[Proxies] ペインでリソースを表示するプロキシの環境を選択します。
リソースを表示する API プロキシを選択します。プロキシ エディタの [概要] ビューが表示されます。
- [開発] タブをクリックします。
- 左側のペインで [リソース] までスクロールします。その下に現在のリソースが表示されます。
従来のプロキシ エディタ
従来のプロキシ エディタを使用して API プロキシ リビジョンをスコープとするリソースを表示するには:
- Apigee UI にログインします。
- 左側のナビゲーション バーで [Develop] > [API Proxies] を選択します。
- リソースを作成する API プロキシをリストから選択します。
API プロキシ エディタが開き、デフォルトで [Overview] タブが表示されます。 - [Develop] タブをクリックします。
- 必要に応じて、[Revision] プルダウンでリビジョンを選択します。
API プロキシ リビジョンをスコープとするリソースは、[Navigator] ビューの [Resources] セクションに表示されます。
UI でリソースを作成する
新しいプロキシ エディタ
新しいプロキシ エディタを使用してリソースを作成するには:
Cloud コンソールの Apigee UI を使用している場合: [プロキシ開発] > [API プロキシ] を選択します。
従来の Apigee UI を使用している場合: [Develop] > [API Proxies] を選択して、[Proxies] ペインでリソースを表示するプロキシの環境を選択します。
リソースを表示する API プロキシを選択します。プロキシ エディタの [概要] ビューが表示されます。
- [開発] タブをクリックします。
- 左側のペインで、[リソース] まで下にスクロールし、右側の [+] ボタンをクリックします。
- [リソースを追加] ダイアログで、次のように入力します。
- リソースの種類: リソースのファイルの種類を選択します。
- [ソース] で、[Create a new file] または [Import file] を選択します。[Import file] を選択した場合は、[ファイル] フィールドでインポートするファイルも選択します。
- リソース名: リソースの名前を入力します。
- [追加] をクリックします。
従来の Apigee
従来の Apigee UI を使用して、API プロキシ リビジョンにスコープを設定するリソースを作成するには:
- API プロキシ リビジョンをスコープとするリソースを表示します。
- [Navigator] ビューの [Resources] セクションで + をクリックします。[New Resource] ダイアログが表示されます。
- 次のように入力します。
フィールド 説明 ソース 新しいファイルを作成するか、ファイルをインポートします。 ファイル形式 プルダウン リストからリソースタイプを選択します。 ファイル名 ファイルの名前。ファイル名の拡張子は、選択したファイルタイプに対して有効である必要があります。
UI でリソースを更新する
API プロキシ リビジョンをスコープとするリソースは、リビジョンがデプロイされていない場合にのみ更新します。API プロキシ リビジョンがデプロイされた後は変更できません。
UI を使用して、API プロキシ リビジョンをスコープとするリソースを、次のように更新します。
- API プロキシ リビジョンをスコープとするリソースを表示します。
- [Navigator] ビューの [リソース] で、更新するリソースをクリックします。
注: JAR ファイルの場合、編集するリソースにカーソルを合わせて、 をクリックします。 - 必要に応じてリソースを更新します。
注: 新しい JAR ファイルをアップロードしたら、[更新] をクリックしてください。
UI でリソースを削除する
API プロキシ リビジョンをスコープとするリソースは、リビジョンがデプロイされていない場合にのみ削除します。API プロキシ リビジョンがデプロイされた後は変更できません。
UI を使用して、API プロキシ リビジョンをスコープとするリソースを、次のように削除します。
- API プロキシ リビジョンをスコープとするリソースを表示します。
- [Navigator] ビューの [リソース] で、削除するリソースにカーソルを合わせて、操作メニューを表示します。
- [] をクリックします。
- [削除] をクリックして操作を確定します。
API でリソースを管理する
ここでは、API を使用したリソースの管理方法について説明します。
API でリソースを作成する
以下のセクションで説明しているように、API プロキシ リビジョンまたは環境をスコープとするリソースを作成します。
API を使用して API プロキシ リビジョンをスコープとするリソースを作成する
以下のセクションで説明するように、API を使用して、API プロキシ リビジョンをスコープとするリソースを作成します。API を使用して API プロキシ リビジョンをスコープとするリソースを作成するには:
- リソース ファイルを作成します。
- API プロキシ構成バンドルにリソース ファイルを追加します。
- 次のいずれかの 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/resourcefiles
に GET
リクエストを送信します。
次の例では、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/$NAME
に GET
リクエストを送信します。
次の例は、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 プロキシ リビジョンをスコープとするリソースを更新するには:
- Get API proxy revision API を使用して次のオプションを設定し、API プロキシ構成バンドルをダウンロードします。
format
クエリ パラメータをbundle
に設定します。Accept
ヘッダーをapplication/zip
に設定します。
- API プロキシ構成バンドルのリソース ファイルを更新します。
- Update API proxy revision API を使用して、API プロキシ構成バンドルをアップロードします。
API を使用して環境をスコープとするリソースを更新する
API を使用して環境をスコープとするリソースを更新するには、リソース /organizations/$ORG/environments/$ENV/resourcefiles/$TYPE/$NAME
に PUT
リクエストを送信します。
リソース ファイルの内容を 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 プロキシをスコープとするリソースを削除します。
- Get API proxy revision API を使用して次のオプションを設定し、API プロキシ構成バンドルをダウンロードします。
format
クエリ パラメータをbundle
に設定します。Accept
ヘッダーをapplication/zip
に設定します。
- API プロキシ構成バンドルからリソース ファイルを削除します。
- Update API proxy revision API を使用して、API プロキシ構成バンドルをアップロードします。
API を使用して環境をスコープとするリソースを削除する
以下のセクションに従って、API を使用して環境をスコープとするリソースを削除します。
API を使用して環境をスコープとするリソースを削除するには、リソース https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles/$TYPE/$NAME
に DELETE
リクエストを発行します。
次の例では、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 ポリシーをご覧ください。