Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第77章 jclouds
jclouds コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.9 以降で利用可能
このコンポーネントにより、クラウドプロバイダーのキー/値エンジン(blob ストア)および Compute サービスとの対話が可能になります。コンポーネントは jclouds を使用します。これは、Blobstores および Compute サービスの抽象化を提供するライブラリーです。
ComputeService は、クラウド内でマシンを管理するタスクを簡素化します。たとえば、ComputeService を使用して 5 つのマシンを起動し、それらにソフトウェアをインストールできます。blobstore は、Amazon S3 などのキーと値プロバイダーの処理を簡素化します。たとえば、BlobStore はコンテナーの簡単な Map ビューを提供できます。
camel jclouds コンポーネントを使用すると、JcloudsBlobStoreEndpoint と JcloudsComputeEndpoint の 2 種類のエンドポイントを指定するため、両方の抽象化を使用できます。Blobstore エンドポイントにはプロデューサーとコンシューマーの両方を設定できますが、コンピュートエンドポイントにはプロデューサーのみを使用できます。
Maven ユーザーは、このコンポーネントの
pom.xml
に以下の依存関係を追加する必要があります。
コンポーネントの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
camel jclouds コンポーネントは、初期化中にコンポーネントに渡される限り、複数の jclouds blobstores および Compute サービスを利用します。コンポーネントは、リスト blobstores および Compute サービスを受け入れます。以下は、その設定方法を示しています。
ご覧のとおり、コンポーネントは複数の blobstores および Compute サービスを処理できます。各エンドポイントによって使用される実際の実装は、URI 内でプロバイダーを渡すことで指定されます。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
jclouds:blobstore:[provider id][?options] jclouds:compute:[provider id][?options]
jclouds:blobstore:[provider id][?options]
jclouds:compute:[provider id][?options]
プロバイダー ID は、ターゲットサービスを提供するクラウドプロバイダーの名前です(例:aws-s3 または aws_ec2)。
URI にクエリーオプションは
?option=value&option=value&.. の形式で追加できます。
blobstore URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
operation
|
PUT | *producer Only*.blobstore に送信される操作のタイプを指定します。許可される値は PUT、GET です。 |
container
|
null | blob コンテナーの名前。 |
blobName
|
null | Blob の名前。 |
これらのオプションはいくつでも使用できます。
jclouds:blobstore:aws-s3?operation=CamelJcloudsGet&container=mycontainer&blobName=someblob
jclouds:blobstore:aws-s3?operation=CamelJcloudsGet&container=mycontainer&blobName=someblob
プロデューサーエンドポイントの場合、適切なヘッダーをメッセージに渡すことで、上記の URI オプションをすべて上書きできます。
blobstore のメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ヘッダー | 説明 |
---|---|
CamelJcloudsOperation
|
Blob で実行される操作。有効なオプションは です。
|
CamelJcloudsContainer
|
blob コンテナーの名前。 |
CamelJcloudsBlobName
|
Blob の名前。 |
blobstore 使用例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
例 1: Blob に配置 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この例では、jclouds コンポーネントを使用して、Blob 内にメッセージを格納する方法を説明します。
from("direct:start") .to("jclouds:blobstore:aws-s3" + "?operation=PUT" + "&container=mycontainer" + "&blobName=myblob");
from("direct:start")
.to("jclouds:blobstore:aws-s3" +
"?operation=PUT" +
"&container=mycontainer" +
"&blobName=myblob");
上記の例では、メッセージのヘッダーを使用して、任意の URI パラメーターを上書きできます。上記の例は、xml を使用してルートを定義する方法を示しています。
<route> <from uri="direct:start"/> <to uri="jclouds:blobstore:aws-s3?operation=PUT&container=mycontainer&blobName=myblob"/> </route>
<route>
<from uri="direct:start"/>
<to uri="jclouds:blobstore:aws-s3?operation=PUT&container=mycontainer&blobName=myblob"/>
</route>
例 2: Blob の取得/読み取り リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この例では、jclouds コンポーネントを使用して Blob の contnet を読み取る方法を説明します。
from("direct:start") .to("jclouds:blobstore:aws-s3" + "?operation=GET" + "&container=mycontainer" + "&blobName=myblob");
from("direct:start")
.to("jclouds:blobstore:aws-s3" +
"?operation=GET" +
"&container=mycontainer" +
"&blobName=myblob");
上記の例では、メッセージのヘッダーを使用して、任意の URI パラメーターを上書きできます。上記の例は、xml を使用してルートを定義する方法を示しています。
<route> <from uri="direct:start"/> <to uri="jclouds:blobstore:aws-s3?operation=PUT&container=mycontainer&blobName=myblob"/> </route>
<route>
<from uri="direct:start"/>
<to uri="jclouds:blobstore:aws-s3?operation=PUT&container=mycontainer&blobName=myblob"/>
</route>
例 3: Blob の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この例では、指定されたコンテナーにあるすべての blob を消費します。生成されたエクスチェンジには、Blob のペイロードをボディーとして含まれます。
from("jclouds:blobstore:aws-s3" + "?container=mycontainer") .to("direct:next");
from("jclouds:blobstore:aws-s3" +
"?container=mycontainer")
.to("direct:next");
以下に示すように、xml を使用して同じゴールを実現できます。
<route> <from uri="jclouds:blobstore:aws-s3?operation=GET&container=mycontainer&blobName=myblob"/> <to uri="direct:next"/> </route>
<route>
<from uri="jclouds:blobstore:aws-s3?operation=GET&container=mycontainer&blobName=myblob"/>
<to uri="direct:next"/>
</route>
Compute サービスの URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
operation
|
CamelJcloudsPut | コンピュートサービスで実行される操作のタイプを指定します。許可される値は、CamelJcloudsCreateNode、CamelJcloudsRunScript、CamelJcloudsDestroyNode、CamelJcloudsListNodes、CamelJCloudsListImages、CamelJCloudsListHardware です。 |
imageId
|
null | *CamelJcloudsCreateNode 操作のみ* ノードの作成に使用される imageId。値は実際のクラウドプロバイダーによって異なります。 |
locationId
|
null | *CamelJcloudsCreateNode 操作のみ* ノードの作成に使用する場所。値は実際のクラウドプロバイダーによって異なります。 |
hardwareId
|
null | *CamelJcloudsCreateNode 操作のみ* ノードの作成に使用されるハードウェア。値は実際のクラウドプロバイダーによって異なります。 |
group
|
null | *CamelJcloudsCreateNode 操作のみ* 新規作成されたノードに割り当てられるグループ。値は実際のクラウドプロバイダーによって異なります。 |
nodeId
|
null | *CamelJcloudsRunScript & CamelJcloudsDestroyNode 操作のみ* スクリプトを実行するノードの ID、または破棄されるノードの ID。 |
user
|
null | *CamelJcloudsRunScript 操作のみ* スクリプトを実行するターゲットノードのユーザー。 |
Compute サービスで使用するパラメーターの組み合わせは、操作によって異なります。
jclouds:compute:aws-ec2?operation=CamelJcloudsCreateNode&imageId=AMI_XXXXX&locationId=eu-west-1&group=mygroup
jclouds:compute:aws-ec2?operation=CamelJcloudsCreateNode&imageId=AMI_XXXXX&locationId=eu-west-1&group=mygroup
コンピュートの使用例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、java dsl および spring/blueprint xml での jclouds コンピュートプロデューサーの使用を示しています。
例 1: 利用可能なイメージの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("jclouds:compute:aws-ec2" + "&operation=CamelJCloudsListImages") .to("direct:next");
from("jclouds:compute:aws-ec2" +
"&operation=CamelJCloudsListImages")
.to("direct:next");
これにより、本文内にイメージの一覧が含まれるメッセージが作成されます。xml を使用して同じ操作を行うこともできます。
<route> <from uri="jclouds:compute:aws-ec2?operation=CamelJCloudsListImages"/> <to uri="direct:next"/> </route>
<route>
<from uri="jclouds:compute:aws-ec2?operation=CamelJCloudsListImages"/>
<to uri="direct:next"/>
</route>
例 2: 新規ノードを作成します。 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
これにより、クラウドプロバイダーに新しいノードが作成されます。この場合の out メッセージは、新規に作成されたノードに関する情報が含まれるメタデータのセットになります(例:ip、hostname)。以下は、spring xml を使用した同じです。
<route> <from uri="direct:start"/> <to uri="jclouds:compute:aws-ec2?operation=CamelJcloudsCreateNode&imageId=AMI_XXXXX&locationId=XXXXX&group=myGroup"/> </route>
<route>
<from uri="direct:start"/>
<to uri="jclouds:compute:aws-ec2?operation=CamelJcloudsCreateNode&imageId=AMI_XXXXX&locationId=XXXXX&group=myGroup"/>
</route>
例 3: 実行中のノードでシェルスクリプトを実行します。 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("direct:start"). to("jclouds:compute:aws-ec2" + "?operation=CamelJcloudsRunScript" + "?nodeId=10" + "&user=ubuntu");
from("direct:start").
to("jclouds:compute:aws-ec2" +
"?operation=CamelJcloudsRunScript" +
"?nodeId=10" +
"&user=ubuntu");
上記のサンプルは in メッセージのボディーを取得します。これは、実行するシェルスクリプトが含まれることが予想されます。スクリプトが取得されると、ノードに送信され、指定したユーザー下で実行できるようになります(大文字の場合は)。ターゲットノードは、
nodeId
を使用して指定されます。nodeId は、ノードの作成時に取得できます。これは、結果のメタデータの一部となるか、または CamelJcloudsListNodes
操作を実行して取得できます。
これ は、コンポーネントに渡される Compute サービスを、適切な JClouds SSH 対応モジュール(jsch や sshj など)で初期化する必要があります。
以下は、spring xml を使用した同じです。
<route> <from uri="direct:start"/> <to uri="jclouds:compute:aws-ec2?operation=CamelJcloudsRunScript&?nodeId=10&user=ubuntu"/> </route>
<route>
<from uri="direct:start"/>
<to uri="jclouds:compute:aws-ec2?operation=CamelJcloudsRunScript&?nodeId=10&user=ubuntu"/>
</route>
その他の参考資料 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
jclouds の詳細については、Jclouds BlobStore Guide Jclouds Compute Guideを参照してください。