CloudHub 上のアプリケーションのプロパティ管理

CloudHub デプロイメントでは、Anypoint Runtime Manager またはプロパティファイルを使用してプロパティをアプリケーションに追加できます。

アプリケーションのプロパティファイルと Runtime Manager の両方でプロパティを設定してある場合、アプリケーションをデプロイすると、常に Runtime Manager の値がプロファイルファイルの値よりも優先されます。

Runtime Manager でアプリケーションのプロパティを追加する

CloudHub にデプロイされたアプリケーションにプロパティを読み込む最も簡単な方法は、Anypoint Runtime Manager の ​[Properties (プロパティ)]​ タブを使用することです。

プロパティを追加する手順は、次のとおりです。

  1. Anypoint Platform の ​[Runtime Manager]​ を選択します。

  2. [Applications (アプリケーション)]​ タブをクリックします。

  3. [Status (状況)]​ 列をクリックして詳細ペインを表示します。

  4. [Manage Application (アプリケーションを管理)]​ をクリックします。

  5. [Settings (設定)]​ ページで ​[Properties (プロパティ)]​ タブで以下を行います。

    *[Settings (設定)]* ページの *[Properties (プロパティ)]* タブ、[Key (キー)] 項目と [Value (値)] 項目、*[X]* アイコン
    Figure 1. このスクリーンショットは、アプリケーションの ​[Settings (設定)]​ ページの (​1​) ​[Properties (プロパティ)]​ タブ、(​2​) ​[List (リスト)]​ ボタン、(​3​) [Key (キー)] 項目と [Value (値)] 項目、(​4​) ​[X]​ アイコンを示しています。
  6. [List (リスト)]​ をクリックします。

    代わりに、​[Text (テキスト)]​ 項目に ​key=value​ の形式でキー-値ペアを入力することもできます。

  7. [Key (キー)] 項目にプロパティ名を入力します。

  8. [Value (値)] 項目にプロパティ値を入力します。

    Chrome のパスワード保存機能が有効化されていて、[Key (キー)] 項目のコンテンツと一致する ​anypoint.mulesoft.com​ のユーザー名が保存されている場合、Chrome はそのユーザー名に関連付けられている保存済みパスワードで [Value (値)] 項目の値を上書きします。 この制約を回避するには、Chrome をシークレットモードで使用するか、または他のブラウザーを使用してください。

  9. キーまたは値を変更するには、項目ないのテキストを編集します。

  10. プロパティを削除するには、​[X]​ をクリックします。

  11. [Apply Changes (変更を適用)]​ をクリックします。

  12. 右上のメニューから ​[Restart (再起動)]​ を選択してアプリケーションを再起動します。

例: プロパティを使用した環境変数の設定

Java システム環境変数を指定できます。この機能は、オンプレミスサーバーへのデプロイで環境変数を追加した場合と同じです。

アプリケーションの環境変数も設定できます。 プロパティにより、デプロイ先の環境に応じて変わる設定を外部化することができます。 たとえば、ローカルで Mule アプリケーションを使用している場合は、データベースホストを ​0.0.0.0​ に設定する可能性があります。 同じアプリケーションを CloudHub にデプロイする場合は、データベースホストを Amazon RDS サーバーなどに設定することがあります。

アプリケーションプロパティを使用して環境変数を作成または設定する手順は、次のとおりです。

  1. Anypoint Platform の ​[Runtime Manager]​ を選択します。

  2. [Applications (アプリケーション)]​ タブをクリックします。

  3. [Status (状況)]​ 列をクリックして詳細ペインを表示します。

  4. [Manage Application (アプリケーションを管理)]​ をクリックします。

  5. [Settings (設定)]​ ページで ​[Properties (プロパティ)]​ タブで以下を行います。

  6. [Text (テキスト)]​ ビューに ​key=value​ の形式で変数を入力します。

    *[Settings (設定)]* ページの *[Properties (プロパティ)]* タブ
    Figure 2. 矢印は ​[Settings (設定)]​ ページの ​[Properties (プロパティ)]​ タブの変数を示しています。
    [Text (テキスト)]​ ビューでは、バックスラッシュ文字 (​\​) はエスケープ文字として使用します。 たとえば、キーまたは値内で ​:​ を使用するには、構文で ​\:​ を使用します。 キーまたは値内で ​\​ を使用するには、構文で ​\\​ を使用します。 [List (リスト)]​ ビューの構文には、エスケープ文字は必要ありません。
  7. Mule アプリケーション設定で環境変数を使用します。

プロパティファイルを使用したアプリケーションプロパティの追加

デプロイ可能なアプリケーションのアーカイブファイルにファイルをインクルードすることで、アプリケーションにプロパティを追加できます。

これらのプロパティはアプリケーションの起動時に CloudHub によってアプリケーションに読み込まれます。

この方法は CloudHub でのベストプラクティスではありません (CloudHub の ​[Properties (プロパティ)]​ タブの値によってファイル内の同じ名前を持つすべてのプロパティが上書きされるため) が、Mule アプリケーションのオプションを変更することでこの問題を回避できます。

CloudHub プロパティによって、デプロイ可能なアーカイブにバンドルされたプロパティが上書きされるのを防ぐには、Mule アプリケーションの ​property-placeholder​ 要素のオプションを変更します。 デフォルト以外のプロパティプレースホルダーオプションの詳細は、 プロパティプレースホルダーオプションに関する Spring のドキュメント​を参照してください。

CloudHub の予約されたプロパティ

CloudHub では、一部のプロパティが予約されており、これらのプロパティの値は変更できません。 アプリケーションが予約されたプロパティに値を割り当てようとしても、CloudHub はその値を使用しません。 代わりに、エラーや例外をスローすることなく、内部で設定されている値を返し、ログに警告メッセージを追加します。

アプリケーションは、予約されたプロパティを参照して、アプリケーション名やデプロイメントリージョンなどを取得できます。 アプリケーションで Anypoint Platform API コールを実行する場合は、​${csorganization.id}​ および ​${environment.id}​ プロパティを使用してこれらの値を取得します。 複数ワーカーアプリケーションで各ワーカーを識別するには、​${worker.id}​ を使用してください。

${spring.profiles.active}​ および ​${logging.*}​ プロパティは使用しないでください。
プロパティ 説明

${java.vendor}

JVM を提供するベンダー

Oracle Corporation

${java.runtime.name}

JVM 名

Java™ SE Runtime Environment

${java.version}

ドット (ポイント) リリースを除外した JVM バージョン。

この値は、CloudHub ランタイムリリースで JDK がアップグレードされると変更されます。

1.8.0_141

${csorganization.id}

メインまたはビジネスグループ ID

09396371-2cd4-412e-8d08-4356dd3e7bfc

${environment.id}

環境 ID

52a69d49e4b0e3c7324ae5b6

${environment.type}

環境種別

本番

${worker.id}

ワーカー ID (複数ワーカーアプリケーション用)

0

${domain}

アプリケーション名

ch-https-41-demo

${fullDomain}

アプリケーションの完全ドメイン名

ch-https-41-demo.au-s1.cloudhub.io

${application.aws.region}

アプリケーションデプロイリージョン

ap-southeast-2

${http.port}

HTTP ポート

8081

${https.port}

HTTPS ポート

8082

${http.private.port}

HTTP 非公開ポート

8091

${https.private.port}

HTTPS 非公開ポート

8092

${mule.home}

Mule インスタンスへの絶対パス

/opt/mule/mule-4.1.1

${spring.profiles.active}

内部で使用、​使用しないでください

***

${logging.*}

内部で使用、​使用しないでください

***

${host}

内部でワーカーのローカル IP アドレスに使用

10.40.122.33

${anypoint.url}

内部で基本 Anypoint Platform URL として使用

US: https://anypoint.mulesoft.com

MuleSoft Government Cloud: https://gov.anypoint.mulesoft.com

独自の理由により、MuleSoft は予約されたすべての内部プロパティを公開しません。 CloudHub ランタイムリリースの更新により、予約されたプロパティが変更される場合があります。

予約されていない事前入力されるプロパティ

次の 2 つのプロパティの値は事前入力されます。ただし、事前入力された値を上書きすることができます。

プロパティ 説明

${app.name}

アプリケーションの ​.jar​ ファイルの名前。

myApplication

${app.home}

実行時のアプリケーションのルートディレクトリ。

/opt/mule/mule-4.3.0/apps/myApplication

例: 予約されたプロパティ値の取得

<set-payload value="java.vendor=${java.vendor}, java.runtime.name=${java.runtime.name}, java.version=${java.version}, application.aws.region=${application.aws.region},
      http.port=${http.port}, http.ports=${http.port}, mule.home=${mule.home}, csorganization.id=${csorganization.id}, environment.id=${environment.id},
      environment.type=${environment.type}, worker.id=${worker.id}, domain=${domain}, fullDomain=${fullDomain}" doc:name="Set Payload"/>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>

出力例:

16:33:08.572     07/02/2020     Worker-0     [cloudhub-reserved-properties].HTTP_Listener_Configuration.worker.01     INFO
   java.vendor=Oracle Corporation, java.runtime.name=Java(TM) SE Runtime Environment, java.version=1.8.0_141, application.aws.region=ap-southeast-2,
   http.port=8081, http.ports=8081, mule.home=/opt/mule/mule-4.3.0, csorganization.id=09396371-2cd4-412e-8d08-4356dd3e7bfc, environment.id=52a69d49e4b0e3c7324ae5b6,
   environment.type=production, worker.id=0, domain=cloudhub-reserved-properties, fullDomain=cloudhub-reserved-properties.au-s1.cloudhub.io