プロパティ セットの使用

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

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

プロパティ セットは、データを格納する Key-Value ペアのカスタム コレクションです。API プロキシは、実行時にこのデータを取得できます。

プロパティ セットを使用する理由

通常、プロパティ セットを使用して、API プロキシ ロジックにハードコードすべきでない無期限のデータを格納するために使用します。フロー変数にアクセスできるプロキシ内の任意の場所で、プロパティ セットのデータにアクセスできます。

プロパティ セットの一般的なユースケースは、環境ごとに関連する値を提供することです。たとえば、テスト環境で動作しているプロキシに固有の構成値で、環境をスコープとしたプロパティ セットを作成し、本番環境用に別のプロパティ セットを作成できます。

次に例を示します。

  • prod-env.properties プロパティ セットにはプロパティ log-level=error が含まれています。
  • test-env.properties プロパティ セットにはプロパティ log-level=debug が含まれています。

同様に、環境固有のルーティング情報を保存することもできます。

  • test-env.properties プロパティ セットにはプロパティ db-url=mydomain.test.datasource.com が含まれています。
  • prod-env.properties プロパティ セットにはプロパティ db-url=mydomain.prod.datasource.com が含まれています。

プロパティ セットのスコープ

プロパティ セットの作成時に、プロパティ セットのスコープを API プロキシ リビジョンまたは環境に設定できます。プロパティ セットのスコープを組織に設定することはできません。

次の表は、API プロキシと組織スコープでのプロパティ セットの動作と管理方法を示しています。

スコープ ランタイムの動作 管理
API プロキシ プロパティを使用できるのは、プロパティ セットのリソースが含まれる API プロキシのリビジョンだけです。同じプロキシの他の API プロキシやリビジョンは、その特定のプロパティ セットにアクセスできません。 管理者は、/resourcefiles Apigee API または UI を使用してプロパティ セットの作成や編集ができます。API プロキシを UI に保存すると、新しいリビジョンが作成され、変更されたプロパティ セットはそのリビジョンにのみ関連付けられます。
環境 プロパティは、その環境内のすべての API プロキシのすべてのリビジョンで使用できます。他の環境内の API プロキシは、そのプロパティ セットにアクセスできません。 管理者は、環境スコープのプロパティ セットの作成、表示、更新、削除を行うには、/resourcefiles Apigee API を使用する必要があります。これらのプロパティ セットは Apigee UI には表示されないため、Apigee UI では編集できません。

プロパティ セットの上限

上限で説明されているように、Apigee はプロパティ セットに上限を設定しています。また、プロパティ セット ファイルでは Java プロパティ ファイルと同じ構文を使用する必要があります。ただし、プロパティ セット ファイルで中かっこ {} は使用できません。

プロパティ セット ファイルを作成する

通常、名前と値のペアとしてプロパティ セットの値をファイルに格納します。プロパティ セット ファイルは、properties タイプのリソース ファイルです。

プロパティ セット ファイルでは、Java プロパティ ファイルと同じ構文をサポートしています。たとえば、Unicode 値を含めることができ、# または ! 文字をコメント マーカーとして使用できます。ただし、プロパティ セット ファイルで中かっこ {} は使用できません。

プロパティ ファイル名に接尾辞 .properties を追加する必要があります。たとえば、myconfig.my_key.properties は使用できますが、myconfig.my_key は使用できません。

プロパティ セットの仕様は property_set_name.property_name.properties です。プロパティ セット名とプロパティ名の中にピリオドは使用できません。たとえば、myconfig.my_key.properties は使用できますが、myconfig.my.key.propertiesmy.config.my_key.properties は使用できません。

次の例は、複数のプロパティを定義する単純なプロパティ セット ファイルを示しています。

# myProps.properties file
# General properties
foo=bar
baz=biff

# Messages/notes/warnings
message=This is a basic message.
note_message=This is an important message.
error_message=This is an error message.

# Keys
publickey=abc123
privatekey=splitwithsoundman

プロパティ セット ファイルを作成したら、UI または API のいずれかを使用してファイルを Apigee にアップロードします。

UI を使用してプロパティ セットを管理する

他のリソースを管理するのと同じ方法で、UI を使用して API プロキシ リビジョンをスコープとするプロパティ セットを管理します。詳細については、UI を使用してリソースを管理するをご覧ください。

API を使用してプロパティ セットを管理する

以降のセクションで説明するように、API を使用して、API プロキシ リビジョンまたは環境をスコープとするプロパティ セットを管理します。

API を使用してプロパティ セットを作成する

ここでは、API を使用して、API プロキシ リビジョンまたは環境をスコープとするプロパティ セットを作成する方法について説明します。

API を使用して API プロキシ リビジョンをスコープとするプロパティ セットを作成する

API を使用して API プロキシ リビジョンをスコープとするプロパティ セットを作成するには:

  1. プロパティ セットのファイルを作成します。
  2. プロパティ セットのファイルを API プロキシ構成バンドルに追加します。
  3. Create API proxy API または Update API proxy revision API を使用して、バンドルをアップロードします。

API を使用して環境をスコープとするプロパティ セットを作成する

API を使用して環境をスコープとするプロパティ セットを追加するには、プロパティ セットのファイルを作成し、リソース https://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/resourcefilesPOST リクエストを送信することで組織の環境にアップロードします。

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

  • name クエリ パラメータにプロパティ セットの名前を設定します。
  • type クエリ パラメータを properties に設定します。
  • プロパティ セットのファイルの内容を application/octet-stream または multipart/form-data として渡します。

次の例では、MyPropSet という名前のプロパティ セットを /Users/myhome/myprops.properties ファイルからインポートしています。

curl -X POST "https://apigee.googleapis.com/v1/organizations/my-organization/environments/test/resourcefiles?name=MyPropSet&type=properties"
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type: multipart/form-data" \
  -F file=@/Users/myhome/myprops.properties
  

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

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

{
  "name": "MyPropSet",
  "type": "properties"
}

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

API を使用してプロパティ セットを表示する

ここでは、API を使用して環境をスコープとするプロパティ セットを表示する方法について説明します。

API を使用して環境をスコープとするプロパティ セットをすべて表示する

API を使用して環境をスコープとするプロパティ セットをすべて表示するには、https://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/resourcefiles/propertiesGET リクエストを送信します。

次の例では、テスト環境のプロパティ セットをすべて一覧表示しています。

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

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

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

{
  "resourceFile": [
    {
      "name": "MyPropSet",
      "type": "properties"
    }
  ]
}

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

API を使用して環境をスコープとするプロパティ セットの内容を表示する

API を使用して環境をスコープとするプロパティ セットの内容を表示するには、https://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/resourcefiles/properties/nameGET リクエストを送信します。

次の例では、テスト環境に設定された MyPropSet プロパティの内容を表示しています。

curl -X GET "https://apigee.googleapis.com/v1/organizations/my-organization/environments/test/resourcefiles/properties/MyPropSet" \
  -H "Authorization: Bearer $TOKEN"
  

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

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

# myProps.properties file
# General properties
foo=bar
baz=biff

# Messages/notes/warnings
message=This is a basic message.
note_message=This is an important message.
error_message=This is an error message.

# Keys
publickey=abc123
privatekey=splitwithsoundman

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

API を使用してプロパティ セットを更新する

ここでは、API を使用して API プロキシ リビジョンまたは環境をスコープとするプロパティ セットを更新する方法について説明します。

API を使用して API プロキシ リビジョンをスコープとするプロパティ セットを更新する

API を使用して API プロキシ リビジョンをスコープとするプロパティ セットを更新するには:

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

API を使用して環境をスコープとするプロパティ セットを更新する

API を使用して環境をスコープとするプロパティ セットを更新するには、プロパティ セットのファイルを更新し、リソース https://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/resourcefiles/{type}/{name}PUT リクエストを送信することで組織の環境にアップロードします。

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

  • {type}properties に設定する
  • {name} に更新するプロパティ セットの名前を設定します。
  • プロパティ セットのファイルの内容を application/octet-stream または multipart/form-data として渡します。

次の例では、/Users/myhome/myprops-revised.properties ファイルの内容を使用して MyPropSet プロパティ セットを更新しています。

curl -X PUT "https://apigee.googleapis.com/v1/organizations/my-organization/environments/test/resourcefiles/properties/MyPropSet"
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type: multipart/form-data" \
  -F file=@/Users/myhome/myprops-revised.properties
  

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

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

{
  "name": "MyPropSet",
  "type": "properties"
}

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

API を使用してプロパティ セットを削除する

ここでは、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 を使用して環境をスコープとするプロパティ セットを削除するには、https://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/resourcefiles/{type}/{name}DELETE リクエストを送信します。

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

  • {type}properties に設定する
  • {name} に削除するプロパティ セットの名前を設定します。

次の例では、MyPropSet プロパティ セットを削除しています。

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

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

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

{
  "name": "MyPropSet",
  "type": "properties"
}

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

プロパティ セットの値にアクセスする

プロパティ セットの値へのアクセスは、フロー変数(ポリシー、フロー、JavaScript コードなど)にアクセスできる API プロキシの任意の場所で行います。

プロパティ セットの値にアクセスするには、次の構文を使用します。

propertyset.[property_set_name].[property_name]

ここで

  • property_set_name は、定義済みのファイル名(UI を使用している場合)または name クエリ パラメータの値(API を使用している場合)です。
  • property_name は、プロパティの名前です。たとえば、プロパティ セットに foo=bar が含まれている場合、foo はプロパティの名前、bar は値です。

たとえば、JavaScript ポリシーで、getVariable() メソッドを使用してプロパティ セットから値を取得します。

context.getVariable('propertyset.property_set_name.property_name);

次の例では、「MyPropSet」という名前のプロパティ セットの foo プロパティの値を取得しています。

context.getVariable('propertyset.MyPropSet.foo);

次の例のように、ExtractVariables ポリシーを使用して、プロパティ セットからプロパティの値を取得し、別の変数に割り当てることができます。

<ExtractVariables name="ExtractVariables-1">
   <DisplayName>Extract a portion of the url path</DisplayName>
   <Source>request</Source>
   <Variable name="propertyset.MyPropSet.foo">
      <Pattern>{myVar}</Pattern>
   </Variable>
   <VariablePrefix>foobar</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

この例では、ポリシーが属性 name から変数を読み取り、Pattern 要素の変数に値を割り当てます。

Assign Message ポリシーを使用してプロパティ セットキーの値を動的に割り当てる

Assign Message ポリシーを使用すると、プロパティ セットキーの値をフロー変数に動的に割り当てることができます。詳細については、Assign Message ポリシー リファレンスの PropertySetRef の説明をご覧ください。

Apigee ハイブリッド ユーザーの場合

Apigee ハイブリッドを使用している場合は、次の点に注意してください。

  1. ハイブリッド管理プレーンがプロパティ セットを検証します。有効な場合、プロパティは管理プレーンに保存されます。
  2. Synchronizer がプロパティ セットのデータを取得し、ランタイム プレーンのローカルに保存します。
  3. Message Processor が、ダウンロードされたプロパティ セットを読み込み、プロキシを実行で使用できるようにします。