チュートリアル: Object Store v2

このドキュメントでは、手順に沿って Object Store v2 を使用してデータを保存および表示できるようにします。

前提条件

このドキュメントは、読者が Anypoint Studio、コマンドラインからの ​curl​ の使用、Anypoint Platform と Runtime Manager の使用に精通していることを前提としています。コンピュータに curl がインストールされていることを確認してください。Mac または Linux を使用している場合、curl コマンドは組み込まれています。Windows の場合、curl をダウンロードしてインストールしてください。または、curl の代わりに Postman などのブラウザプラグインを使用できます。

Anypoint Platform の ​[Access Management (アクセス管理)] > [Environments (環境)]​ 環境で Design (設計) 環境が設定されていることも必要です。​[Access Management (アクセス管理)]​ が表示されない場合は、サイト管理者にお問い合わせください。

Object Store Connector をインストールする

  1. Anypoint Studio で、Studio タスクバーの ​[Exchange]​ アイコンをクリックします。

  2. Anypoint Exchange で ​[Login (ログイン)]​ をクリックします。

  3. objectstore​ コネクタを検索して ​[Install (インストール)]​ をクリックします。

  4. プロンプトに従ってコネクタをインストールします。

Design Center アプリケーションを作成する

Design Center を使用する前に、ブラウザで LastPass や Okta などのパスワードプログラムを無効にします。無効にしないと、これらのプログラムが [HTTP Listener (HTTP リスナ)] の [TLS] タブにパスワードを挿入します。[TLS] タブにパスワードが挿入されると、アプリケーションのデプロイが失敗します。

このチュートリアルの Design Center セクションで、HTTP Listener トリガと Object Store Connector コンポーネントで構成されるアプリケーションを作成できます。作成後、コマンドラインを使用してキーと値を送信し、Runtime Manager でキーを表示できます。

アプリケーションを設定して実行する

  1. Anypoint Studio で、​[Design Center] > [Create (作成)] > [Mule Application (Mule アプリケーション)]​ をクリックします。

  2. プロジェクト名を指定します(​osv2​ など)。

  3. [Let’s Get Started (はじめよう)]​ ウィザードで、​[Go straight to canvas (キャンバスに直接移動)]​ をクリックします。

  4. [Trigger (トリガ)] で、​[HTTP Listener (HTTP リスナ)]​ を選択します。

    os dc http trigger
  5. [Path (パス)]​ に「​/store​」を指定します。

  6. [Edit (編集)]​ をクリックします。

    os dc http edit
  7. [Save (保存)]​ をクリックします。デフォルト設定を使用できます。

    os dc http settings
  8. トリガの右にあるプラス記号をクリックします。

    os dc plus sign
  9. [Select a component (コンポーネントを選択)]​ ウィンドウで、「​Obj​」を検索し、​[ObjectStore Connector]​ をクリックして、​[Store]​ 操作をクリックします。

    os dc os store op
  10. [Key (キー)]​ に「​#[payload.key]​」、​[Value (値)]​に「​payload.value​」文字列を指定します。

    os dc store setup
  11. Design Center ウィンドウの上部にある ​[Run (実行)]​ ボタンをクリックします。正常に開始すると、​[Running (実行中)]​ が表示されます。

    os dc run button
  12. [Run (実行)]​ ボタンの右には 3 つのドットが縦に並んでいます。このドットをクリックし、​[Copy link (リンクをコピー)]​ をクリックします。

これで、アプリケーションの最初の部分が作成されました。次のタスクでアプリケーションをテストするために、Design Center アプリケーションは実行中のままにしておきます。Design Center ウィンドウがタイムアウトしても、ログオンしている間、アプリケーションは実行を続行します。​[Projects (プロジェクト)]​ 画面でアプリケーションをクリックし、​[Status Running (状況 実行中)]​ を探します。

Design Center アプリケーションをテストする

  1. コマンドラインを開き、次のコマンドを入力します。

    curl -X POST -H "Content-Type: application/json" -d '{ "key": "MyKey", "value": "OSv2 Test" }' "http://LINK_FROM_DESIGN_CENTER/store"
  2. LINK_FROM_DESIGN_CENTER​ を、Design Center からコピーしたリンクに置き換え、Enter キーを押してコマンドを Design Center に送信します。

    出力が次のようにエコー表示されます。

    { "key": "MyKey", "value": "OSv2 Test" }
  3. Anypoint Platform で、左上のメニューアイコンをクリックし、​[Runtime Manager]​ をクリックします。

  4. アプリケーションのリストでエントリがどう作成されたかを確認します。

  5. アプリケーションの [Server (サーバ)] 列で ​[CloudHub]​ をクリックして詳細を表示し、​[Manage Application (アプリケーションを管理)]​ をクリックします。

    os rm manage app
  6. [Object Store]​ をクリックし、続いてオブジェクトストア、パーティション、キーの順にクリックします。値は ​[binary value] BINARY​ として表示されます。

MyKey​ が Object Store ユーザインターフェースに表示され、キーを Design Center アプリケーション経由で送信してオブジェクトストアに保存できることを示します。

この値はバイナリです。これは、Mule 4 では値を Mule オブジェクトでラップして、Anypoint Platform で値がバイナリでのみ表示されるようにするためです。バックグラウンドでは、Mule 4 が Mule 内部シリアライザでバイナリ逐次化を実行します。ユーザインターフェースではオブジェクトを非逐次化できないため、値がバイナリになったことのみが伝えられます。

値が機能することも検証するには、Design Center に戻り、値を取得する新しいフローを追加します。

値を取得する

  1. メニューアイコンをクリックし、​[Design Center]​ をクリックします。

  2. Design Center で、プロジェクトをクリックし、​[Open (開く)]​ をクリックします。

  3. プロジェクトの左にある長方形のボックスアイコンを開いて、​[Flow (フロー)]​ メニューを展開します。

  4. 最初に、縦ドットアイコンをクリックし、メニューから ​[Rename (名前変更)]​ をクリックして、既存のフローの名前を変更します。​New Flow​ を ​Store​ に変更します。

    os dc flows
  5. [Flows (フロー)]​ の右にあるプラス記号をクリックします。

  6. [Go straight to canvas (キャンバスに直接移動)]​ をクリックしてウィザードを終了します。

  7. [Trigger (トリガ)] メニューで、​[HTTP Listener (HTTP リスナ)]​ を選択します。

  8. [Path (パス)]​ に「​/retrieve​」値を指定します。

    os dc http retrieve

    [HTTP Listener (HTTP リスナ)] のデフォルト設定は適切であるため、[Edit (編集)] をクリックする必要はありません。 ただし、​[Host (ホスト)]​ が ​0.0.0.0​ で、​[Port (ポート)]​ が ​8081​ であることを確認できます。これらの値は、前の ​Store​ フローと同じです。

  9. フローを開始したので、名前を「​Retrieve​」に変更します。

  10. [HTTP Listener (HTTP リスナ)] の横にあるプラス記号をクリックしてコンポーネントを追加します。

  11. [Select a component (コンポーネントを選択)]​ で、「​Obj​」を検索し、​[ObjectStore Connector]​ をクリックします。

  12. [Retrieve (取得)]​ 操作をクリックし、​[Key (キー)]​ 項目に「​#[attributes.queryParams.key]​」値を指定します。

これで ​[Retrieve (取得)]​ フローは完成です。​[Run (実行)]​ を再度クリックしてアプリケーションを再起動します。

コマンドラインで、次のように curl コマンドを送信してキーの値を表示します。

curl http://LINK_FROM_DESIGN_CENTER/retrieve?key=MyKey;echo

LINK_FROM_DESIGN_CENTER​ を Design Center の cloudhub.io リンクに置き換えます。

(コマンドの最後にある ​;echo​ ステートメントで出力が読みやすくなります)。

このコマンドの出力では、キーの値がリストされます。

"OSv2 Test"

この演習では、Design Center で作成したオブジェクトストアに curl コマンドを使用してアクセスできること、キーが Runtime Manager に表示されることを確認しました。

オブジェクトストアを更新するたびに Runtime Manager インターフェースを表示する必要はありません。Object Store v2 Connector にリンクするアプリケーションを作成したら、curl コマンドでキーと値をオブジェクトストアに保存して結果を別の curl コマンドで表示できます。必要に応じてキーや値を変更してください。

Store (保存):

curl -X POST -H "Content-Type: application/json" -d '{ "key": "MyKey", "value": "OSv2 Test" }' "http://LINK_FROM_DESIGN_CENTER/store"

Retrieve (取得):

curl http://LINK_FROM_DESIGN_CENTER/retrieve?key=MyKey

各コマンドの ​LINK_FROM_DESIGN_CENTER​ を Design Center の cloudhub.io リンクに置き換えます。

プログラムによる Object Store アクセスへの移行についての詳細は、​Object Store API のドキュメント を参照してください。 Object Store v1 で動作するプログラミング技法は Object Store v2 でも動作します。

Studio 7 プロジェクトを作成する

  1. Anypoint Studio で、​[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)]​ をクリックし、プロジェクトの名前を指定します (​osv2​ など)。

  2. Studio タスクバーの左上にある [Exchange X] アイコンをクリックします。

  3. Exchange ウィンドウで、​[Login (ログイン)]​ をクリックし、Anypoint Platform のユーザ名とパスワードを指定します。

  4. Mule 4 の Object Store Connector を検索します。「obj」など文字列の一部を入力すると、 Exchange で適切なアセットが検索されます。

  5. [ObjectStore Connector for Mule 4 Exchange] アセットをクリックし、右上で ​[Add to project (プロジェクトに追加)]​ をクリックします。確認プロンプトで ​[Proceed (続行)]​ をクリックします。

  6. Studio の [Mule Palette (Mule パレット)] で [HTTP] をクリックします。​[Listener (リスナ)]​ をクリックしてキャンバスにドラッグします。

    os as drag listener
  7. [Connector configuration (コネクタ設定)]​ 項目の右にある緑のプラス記号をクリックし、[Host (ホスト)] を「0.0.0.0」、[Port (ポート)] を「8081」に設定します。

    os as http listener config
  8. コネクタのメイン画面で、​[Path (パス)]​ を「​/store​」に設定します。

    os as http path
  9. [Mule Palette (Mule パレット)] で ​[ObjectStore]​ をクリックし、​[Store (保存)]​ 操作をキャンバスにドラッグします。

  10. [Key (キー)] に「​#[payload.key]​」、[Value (値)]に「​payload.value​」文字列を指定します。

  11. [Object Store] 項目の右にある緑のプラス記号をクリックし、 [Global Element Properties (グローバル要素のプロパティ)] 画面で、[OK] をクリックしてデフォルトを受け入れます。

  12. [HTTP Listener (HTTP リスナ)] を再度クリックしてキャンバスの最初の行の下にドラッグし、2 つ目のフローを作成します。ステップ 7 と同じ設定を使用します。メイン画面で、​[Path (パス)]​ を「​retrieve​」に設定します。

    os as 2nd flow http
  13. [Mule Palette (Mule パレット)] で [ObjectStore] をクリックし、​[Retrieve (取得)]​ 操作をキャンバスにドラッグします。

  14. [Key (キー)]​ 項目を ​#[attributes.queryParams.key]​ に設定します。

  15. [Object Store]​ 項目の右にある緑のプラス記号をクリックし、[Global Element Properties (グローバル要素のプロパティ)]​ 画面で、​[OK] をクリックしてデフォルトを受け入れます。

  16. フローの表示ラベルを変更するには、ダブルクリックします。最初のフローを「​Store​」、2 つ目のフローを「​Retrieve​」に変更します。

    完了すると、フローが次のように表示されます。

    os as finished flows

これで、Studio アプリケーションが完成しました。正しく実行されることをテストするには、​[Run As (別のユーザとして実行)] > [Mule Application (Mule アプリケーション)]​ をクリックします。これは単なるテストです。アプリケーションが実行を開始したら、停止してかまいません。

Studio 7 アプリケーションをテストする

  1. Studio の Package Explorer でプロジェクトを右クリックします。

  2. [Anypoint Platform]​ > ​[Deploy to CloudHub (CloudHub にデプロイ)]​ をクリックします。注意: CloudHub はサーバの名前ですが、Anypoint Platform ​Runtime Manager​ でアプリケーションにアクセスできます。

    os as deploy to cloudhub
  3. Anypoint Platform ​Runtime Manager​ でアプリケーションが表示されたら、起動して、実行中にします。cloudhub.io URL をメモします。

  4. コマンドラインから、次の curl コマンドを入力します。

    $ curl -X POST -H "Content-Type: application/json" -d '{ "key": "MyKey", "value": "OSv2 Test" }' "http://LINK_FROM_RUNTIME_MANAGER/store"

    LINK_FROM_RUNTIME_MANAGER​ を Runtime Manager のアプリケーションの cloudhub.io URL に置き換えます。

    このコマンドの最後に ​;echo​ を追加すると、コマンドを読みやすくできます。

  5. Runtime Manager で、アプリケーションの ​[Server (サーバ)]​ 列で ​[CloudHub]​ をクリックして詳細を表示し、​[Manage Application (アプリケーションを管理)]​ をクリックします。

    os rm manage app
  6. [Object Store]​ をクリックし、オブジェクトストア、パーティション、キーの順に選択して表示します。値は ​[binary value] BINARY​ として表示されます。

    MyKey​ が Object Store v2 ユーザインターフェースに表示され、キーを Design Center アプリケーション経由で送信してオブジェクトストアに保存できることを示します。

  7. キーの値を表示するには、次の curl コマンドを使用します。

    curl http://LINK_FROM_RUNTIME_MANAGER/retrieve?key=MyKey

    このコマンドの出力では、キーの値がリストされます。

    "OSv2 Test"

これで Studio 7 の演習は終わりです。この演習では、Studio でObject Store フローを作成し、curl コマンドを使用してキー/値ペアをオブジェクトストアに保存し、結果を Runtime Manager で表示できることを確認しました。さらに別の curl コマンドで、キーの値を表示できます。

Studio 7 XML

Studio アプリケーションの XML は次のようになります。この情報で、Studio がどのように XML 内の HTTP リスナと Object Store Connector を識別しているかがわかります。また、この情報を使用して Studio プロジェクトが期待どおりに動作しない場合にフローをチェックすることもできます。(プロジェクトの XML ファイルには、ドキュメント ID ステートメントが含まれますが、ここでは読みやすくするために省いています)。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:os="http://www.mulesoft.org/schema/mule/os"
	xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
	http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/os
http://www.mulesoft.org/schema/mule/os/current/mule-os.xsd">
	<http:listener-config name="HTTP_Listener_config"
		doc:name="HTTP Listener config">
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<os:object-store name="Object_store" doc:name="Object store" />
	<http:listener-config name="HTTP_Listener_config1"
		doc:name="HTTP Listener config">
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<os:object-store name="Object_store1" doc:name="Object store" />
	<flow name="Store" >
		<http:listener doc:name="Listener" config-ref="HTTP_Listener_config"
			path="/store">
			<ee:repeatable-file-store-stream />
		</http:listener>
		<os:store doc:name="Store"
			key="#[payload.key]"
			objectStore="Object_store">
			<os:value ><![CDATA[payload.value]]></os:value>
		</os:store>
	</flow>
	<flow name="Retrieve" >
		<http:listener doc:name="Listener" config-ref="HTTP_Listener_config1"
			path="/retrieve">
			<ee:repeatable-file-store-stream />
		</http:listener>
		<os:retrieve doc:name="Retrieve"
			key="#[attributes.queryParams.key]"
			objectStore="Object_store1"/>
	</flow>
</mule>

Studio 6 プロジェクトを作成する

Anypoint Platform 7 のみを使用している場合、このセクションは省略してください。

  1. 新しいプロジェクトを作成するには、Anypoint Studio を開き、​[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)]​ をクリックします。このチュートリアルでは、プロジェクト名は ​objstoredemo​ です。

  2. 次のようなアプリケーションを作成します。

    osv2 studio flow
  3. 「​http​」を検索し、HTTP コネクタをドラッグして Studio のキャンバスにドロップします。HTTP コネクタは、Object Store にキーと値を保存するために使用する curl コマンドをリスンします。

    [Connector Configuration (コネクタ設定)]​ の右にある緑のプラスをクリックし、​[Global Element Properties (グローバル要素のプロパティ)]​ 画面で、デフォルトの設定 (​[Host (ホスト)]​ が ​0.0.0.0​、​[Port (ポート)]​ が ​8081​) を受け入れ、​[OK]​ をクリックします。

    osv2 http config
  4. [HTTP] プロパティ画面で、​[Path (パス)]​ を「​/store​」、​[Allowed Methods (許可されるメソッド)]​ を「​POST​」に設定します。

    osv2 http properties

    curl コマンドを送信するとき、URL で ​/store​ オプションを使用します。たとえば、​objstoredemo.cloudhub.io/store​ のようにします。​[Allowed Methods (許可されるメソッド)]​ 設定により、curl コマンドを使用するユーザが実行できる操作はオブジェクトストアへの情報の POST のみになります。

  5. [Object to String (オブジェクトから文字列)]​ コンポーネントを見つけて Studio キャンバスに追加します。設定は必要ありません。このコンポーネントは、HTTP コネクタから受信した内容を文字列に変換します。

  6. [JSON to Object (JSON からオブジェクト)]​ コンポーネントを見つけて Studio キャンバスに追加します。​[Return Class (リターンクラス)]​ を「​java.util.Map​」に設定します。

    osv2 json to object
  7. 「​objectstore​」を検索して、Object Store Connector を追加します。Object Store Connector がない場合は、「​Object Store Connector をインストールする​」の説明に従ってインストールします。

  8. [Connector Configuration (コネクタ設定)]​ の右にある緑のプラス記号をクリックし、​[Global Element Properties (グローバル要素のプロパティ)]​ 画面で、​[Partition (パーティション)]​ でパーティション名を割り当てます(​mypartition​ など)。 [Object Store Reference (オブジェクトストア参照)] 項目を「​_defaultUserObjectStore​」に設定します。

    注意:​ データを Object Store v2 に保存するには、次のように ​[Object Store Reference (オブジェクトストア参照)]​ 項目を「​_defaultUserObjectStore​」に設定する必要があります。

    Studio の グローバル要素のプロパティ設定

    残りの設定は空白のままにし、​[OK]​ をクリックします。

  9. [Operation (操作)]​ を ​[Store (保存)]​ に設定し、次のように ​Store (保存) 操作​値を設定します。

    • [Key (キー)]​ を「​#[payload.key]​」に設定

    • [Value Reference (値参照)]​ を「​#[payload.value]​」に設定

    osv2 connector
  10. [Set Payload (ペイロードを設定)]​ を見つけて追加します。​[Value (値)]​ 項目を「​KEY: #[payload.key] AND VALUE: #[payload.value] WERE SAVED OK​」に設定します。このメッセージはコマンドラインに表示され、curl コマンドの値がアプリケーションで受信されたことを知らせます。

    osv2 set payload
  11. アプリケーションを保存し、​[Run (実行)] > [Run As (別のユーザとして実行)] > [Mule Application (Mule アプリケーション)]​ をクリックします。アプリケーションを実行して、アプリケーションが正しく動作することを確認します。修正が必要な場合は、ここで行います。アプリケーションが正常に実行されたら、停止してかまいません。

Anypoint Platform にアプリケーションをデプロイする

  1. Studio の Package Explorer でアプリケーションの名前を右クリックし、​[Anypoint Platform] > [Deploy to Cloud (クラウドにデプロイ)]​ をクリックします。

  2. ユーザログインウィンドウで、Anypoint Platform のユーザ名とパスワードを指定し、​[Sign In (サインイン)]​ をクリックします。Anypoint Platform のログイン情報がない場合は、​[Sign Up (サインアップ)]​ をクリックします。

  3. Runtime Manager で、アプリケーション名を指定します。名前はそれぞれ一意で、Runtime Manager でアプリケーションが保存される URL になります。URL の形式は ​APPLICATION_NAME.cloudhub.io​ で、アプリケーションは cloudhub.io 名前空間に存在します。アプリケーション名に、命名方法が適切で一意であることを示す緑のチェックマークが表示されたことを確認します。

    メッセージ​「You do not have permission to deploy new applications in this environment. Please select an existing application to redeploy」​(この環境に新しいアプリケーションをデプロイする権限がありません。既存のアプリケーションを選択して再デプロイしてください) が表示されたら、Runtime Manager 表示の左上にある環境ボタンをクリックして環境を ​[Design (設計)]​ から ​[Production (本番)]​ に変更します。

  4. [Runtime version (ランタイムバージョン)]​ を Mule 3.8.5 以降か、任意の Mule 4.x バージョンに設定します。Runtime Manager に ​[Use Object Store v2 (Object Store v2 を使用)]​ チェックボックスが表示されていることを確認します。

  5. [Use Object Store v2 (Object Store v2 を使用)]​ チェックボックスをオンにします。

    osv2-runtime_manager_deploy_app
  6. アプリケーションを設定したら、​[Deploy Application (アプリケーションをデプロイ)]​ をクリックします。

  7. Runtime Manager のデプロイウィンドウで、アプリケーションが CloudHub に正常にデプロイされたことを示すメッセージが表示されるまで待ちます。

  8. [Open in Browser and Close Window (ブラウザで開き、ウィンドウを閉じる)]​ をクリックします。

  9. Runtime Manager で、アプリケーションのエントリの右側をクリックし、その詳細を表示します。

  10. [Manage Application (アプリケーションを管理)]​ をクリックします。アプリケーションの設定画面で、左側のナビゲーション領域に [Object Store] が表示されます。以前の表示ラベル ​[Application Data (アプリケーションデータ)]​ が ​[Object Store for OSv2]​ に変更されています。

オブジェクトストアにデータを送信する

コマンドラインプロンプトから、ユーティリティを使用して JSON データを Mule アプリケーションに送信します。curl のようなコマンドでも、Postman のようなブラウザ拡張機能でも使用できます。逐次化されたデータであればオブジェクトストアに送信できます。Object Store Connector はデータをキー/値ペアとして送信します。

curl を使用する例

curl -X POST -H "Content-Type: application/json" -d '{ "key": "TestKey01", "value": "This is an object store test" }' "http://APPLICATION_NAME.cloudhub.io/store"

APPLICATION_NAME​ をアプリケーションをデプロイしたときに選択した名前に変更します。このコマンドを送信するたびに、キーの名前を変更して各キーが一意になるようにします。

オブジェクトストアのデータを表示する

オブジェクトストアのデータを表示するには、次の手順を実行します。

  1. Anypoint Platform にログインし、​[Runtime Manager]​ をクリックします。

  2. アプリケーションの名前をクリックしてそのダッシュボードを表示します。

  3. 左のナビゲーションバーから ​[Object Store]​ をクリックします。

    osv2 in nav bar

    Object Store ユーザインターフェースが次のように表示されます。

    osv2 ui
    • デフォルトのオブジェクトストア名は ​DEFAULT_USER_STORE​ です。

    • 各列に、オブジェクトストア名、パーティション名、キー、キーデータが表示されます。パーティションでオブジェクトストアのキーがグループ化されます。

  4. オブジェクトストア名、パーティション名、およびキーをクリックして各項目の値を表示します。

  5. キーを削除するには、キー名にカーソルを置き、ゴミ箱アイコンをクリックします。同様に、パーティションやストア自体もその上にマウスポインタを置き、ゴミ箱アイコンをクリックすれば削除できます。

注意:​ Object Store v2 では、存続期間 (TTL) が最長 30 日間の永続的なオブジェクトストレージが提供されます。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub