プロパティ セットの管理

以降のセクションでは、プロパティ セットの概要と管理方法について説明します。

プロパティ セットについて

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

他のランタイム データと同様に、プロパティ セットは次のようにクラスタにデプロイされます。

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

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

プロパティ セットは通常、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 が含まれています。

プロパティ セットと KVM

ハイブリッドでは、Key-Value マップ(KVM)機能と同じユースケースの一部でプロパティ セットを使用できます。

プロパティ セットと KVM の主な違いは次のとおりです。

  • UI または API を使用して、管理プレーンでプロパティ セットを作成および更新します。データはランタイム プレーンと同期されます。
  • 環境スコープの KVM マップは、ハイブリッド UI または API でのみ作成できます。UI や API で KVM にエントリを追加、更新、表示することはできません。
  • ハイブリッドでは、KVM データは管理プレーンに保存されません。
  • KVM エントリの追加や更新、KVM へのアクセスを行うには、(プロキシ ランタイムで)KVM ポリシーを使用する必要があります。

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

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

  • API プロキシ リビジョンをスコープとするプロパティ セット: プロパティを使用できるのは、その API プロキシのリビジョンだけです。他の API プロキシ リビジョンはそのプロパティ セットにアクセスできません。
  • 環境をスコープとするプロパティ セット: プロパティは、その環境内のすべての API プロキシで使用できます。他の環境の API プロキシはこのプロパティ セットにアクセスできません。

スコープはプロパティ セットの作成時に指定します。どのスコープを指定するかは、プロパティ セットの作成に UI または API のどちらを使用するのかによって異なります。

次の表に、プロパティ セットの作成、更新、削除を行う方法とスコープの関係を示します。

スコープ 作成 更新 削除
API UI API UI API UI
API プロキシ リビジョン
環境
組織

プロパティ セットの制限

Apigee ハイブリッドでは、制限事項で説明しているように、プロパティ セットに制限を設定しています。また、プロパティ セットのファイルは、Java プロパティ ファイルと同じ構文を使用する必要があります。

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

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

プロパティ セットのファイルでは、Java プロパティ ファイルと同じ構文をサポートしています。たとえば、Unicode 値を使用できます。また、# または ! 文字をコメント マーカーとして使用できます。

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

# 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 のいずれかを使用してファイルをハイブリッドにアップロードします。

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

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

API でプロパティ セットを管理する

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

API でプロパティ セットを作成する

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

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

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

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

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

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

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

  • 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
  

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

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

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

詳細については、リソース ファイルを作成する 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"
  

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

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

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

詳細については、環境リソース ファイルをリストする 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"
  

$TOKEN は、OAuth 2.0 アクセス トークンの取得の説明に従って、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

詳細については、環境リソース ファイルをリストする API をご覧ください。

API でプロパティ セットを更新する

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

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

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

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

環境のスコープに設定されたプロパティ セットを API で更新する

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

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

  • {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
  

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

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

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

詳しくは、リソース ファイルを更新する API をご覧ください。

API でプロパティ セットを削除する

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

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

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

  1. API プロキシ リビジョンを取得する API で次のオプションを指定して、API プロキシ構成バンドルをダウンロードします。
    • format クエリ パラメータを bundle に設定します。
    • Accept ヘッダーを application/zip に設定します。
  2. API プロキシ構成バンドルからプロパティ セットファイルを削除します。
  3. API プロキシ リビジョンを更新する 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"
  

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

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

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

詳細については、リソース ファイルを削除する API をご覧ください。

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

API プロキシ リビジョンで、プロパティ、フロー、JavaScript コードなどのフロー変数にアクセスできる場所では、プロパティ セットの値にアクセスできます。

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

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);

UI でプロパティ セットを作成した場合は、名前の「.properties」の部分を含めてください。例:

context.getVariable('propertyset.myprops.properties.foo);

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

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

Assign Message ポリシーを使用してプロパティ セットを動的に作成する

Assign Message ポリシーを使用して、プロパティ セットを動的に作成できます。詳細については、Assign Message ポリシー リファレンスの PropertySetRef の説明をご覧ください。