第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 に以下の依存関係を追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-jclouds</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

コンポーネントの設定

camel jclouds コンポーネントは、初期化中にコンポーネントに渡される限り、複数の jclouds blobstores および Compute サービスを利用します。コンポーネントは、リスト blobstores および Compute サービスを受け入れます。以下は、その設定方法を示しています。
    <bean id="jclouds" class="org.apache.camel.component.jclouds.JcloudsComponent">
        <property name="computeServices">
            <list>
                <ref bean="computeService"/>
            </list>
        </property>
        <property name="blobStores">
            <list>
                <ref bean="blobStore"/>
            </list>
        </property>
    </bean>

    <!-- Creating a blobstore from spring / blueprint xml -->
    <bean id="blobStoreContextFactory" class="org.jclouds.blobstore.BlobStoreContextFactory"/>

    <bean id="blobStoreContext" factory-bean="blobStoreContextFactory" factory-method="createContext">
        <constructor-arg name="provider" value="PROVIDER_NAME"/>
        <constructor-arg name="identity"  value="IDENTITY"/>
        <constructor-arg name="credential" value="CREDENTIAL"/>
    </bean>

    <bean id="blobStore" factory-bean="blobStoreContext" factory-method="getBlobStore"/>

    <!-- Creating a compute service from spring / blueprint xml -->
    <bean id="computeServiceContextFactory" class="org.jclouds.compute.ComputeServiceContextFactory"/>

    <bean id="computeServiceContext" factory-bean="computeServiceContextFactory" factory-method="createContext">
        <constructor-arg name="provider" value="PROVIDER_NAME"/>
        <constructor-arg name="identity"  value="IDENTITY"/>
        <constructor-arg name="credential" value="CREDENTIAL"/>
    </bean>

    <bean id="computeService" factory-bean="computeServiceContext" factory-method="getComputeService"/>
Copy to Clipboard Toggle word wrap
ご覧のとおり、コンポーネントは複数の blobstores および Compute サービスを処理できます。各エンドポイントによって使用される実際の実装は、URI 内でプロバイダーを渡すことで指定されます。

URI 形式

jclouds:blobstore:[provider id][?options]
jclouds:compute:[provider id][?options]
Copy to Clipboard Toggle word wrap
プロバイダー ID は、ターゲットサービスを提供するクラウドプロバイダーの名前です(例:aws-s3 または aws_ec2)。
URI にクエリーオプションは ?option=value&option=value&.. の形式で追加できます。

blobstore URI オプション

Expand
名前 デフォルト値 説明
operation PUT *producer Only*.blobstore に送信される操作のタイプを指定します。許可される値は PUT、GET です。
container null blob コンテナーの名前。
blobName null Blob の名前。
これらのオプションはいくつでも使用できます。
jclouds:blobstore:aws-s3?operation=CamelJcloudsGet&container=mycontainer&blobName=someblob
Copy to Clipboard Toggle word wrap
プロデューサーエンドポイントの場合、適切なヘッダーをメッセージに渡すことで、上記の URI オプションをすべて上書きできます。

blobstore のメッセージヘッダー

Expand
ヘッダー 説明
CamelJcloudsOperation
Blob で実行される操作。有効なオプションは です。
  • PUT
  • GET
CamelJcloudsContainer blob コンテナーの名前。
CamelJcloudsBlobName Blob の名前。

blobstore 使用例

例 1: Blob に配置

この例では、jclouds コンポーネントを使用して、Blob 内にメッセージを格納する方法を説明します。
from("direct:start")
    .to("jclouds:blobstore:aws-s3" +
        "?operation=PUT" +
        "&container=mycontainer" +
        "&blobName=myblob");
Copy to Clipboard Toggle word wrap
上記の例では、メッセージのヘッダーを使用して、任意の URI パラメーターを上書きできます。上記の例は、xml を使用してルートを定義する方法を示しています。
<route>
    <from uri="direct:start"/>
    <to uri="jclouds:blobstore:aws-s3?operation=PUT&container=mycontainer&blobName=myblob"/>
</route>
Copy to Clipboard Toggle word wrap

例 2: Blob の取得/読み取り

この例では、jclouds コンポーネントを使用して Blob の contnet を読み取る方法を説明します。
from("direct:start")
    .to("jclouds:blobstore:aws-s3" +
        "?operation=GET" +
        "&container=mycontainer" +
        "&blobName=myblob");
Copy to Clipboard Toggle word wrap
上記の例では、メッセージのヘッダーを使用して、任意の URI パラメーターを上書きできます。上記の例は、xml を使用してルートを定義する方法を示しています。
<route>
    <from uri="direct:start"/>
    <to uri="jclouds:blobstore:aws-s3?operation=PUT&container=mycontainer&blobName=myblob"/>
</route>
Copy to Clipboard Toggle word wrap

例 3: Blob の使用

この例では、指定されたコンテナーにあるすべての blob を消費します。生成されたエクスチェンジには、Blob のペイロードをボディーとして含まれます。
    from("jclouds:blobstore:aws-s3" +
        "?container=mycontainer")
        .to("direct:next");
Copy to Clipboard Toggle word wrap
以下に示すように、xml を使用して同じゴールを実現できます。
<route>
    <from uri="jclouds:blobstore:aws-s3?operation=GET&container=mycontainer&blobName=myblob"/>
    <to uri="direct:next"/>
</route>
Copy to Clipboard Toggle word wrap

Compute サービスの URI オプション

Expand
名前 デフォルト値 説明
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
Copy to Clipboard Toggle word wrap

コンピュートの使用例

以下の例は、java dsl および spring/blueprint xml での jclouds コンピュートプロデューサーの使用を示しています。

例 1: 利用可能なイメージの一覧表示

    from("jclouds:compute:aws-ec2" +
        "&operation=CamelJCloudsListImages")
        .to("direct:next");
Copy to Clipboard Toggle word wrap
これにより、本文内にイメージの一覧が含まれるメッセージが作成されます。xml を使用して同じ操作を行うこともできます。
<route>
    <from uri="jclouds:compute:aws-ec2?operation=CamelJCloudsListImages"/>
    <to uri="direct:next"/>
</route>
Copy to Clipboard Toggle word wrap

例 2: 新規ノードを作成します。

    from("direct:start").
    to("jclouds:compute:aws-ec2" +
        "?operation=CamelJcloudsCreateNode" +
        "&imageId=AMI_XXXXX" +
        "&locationId=XXXXX" +
        "&group=myGroup");
Copy to Clipboard Toggle word wrap
これにより、クラウドプロバイダーに新しいノードが作成されます。この場合の 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>
Copy to Clipboard Toggle word wrap

例 3: 実行中のノードでシェルスクリプトを実行します。

    from("direct:start").
    to("jclouds:compute:aws-ec2" +
        "?operation=CamelJcloudsRunScript" +
        "?nodeId=10" +
        "&user=ubuntu");
Copy to Clipboard Toggle word wrap
上記のサンプルは 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>
Copy to Clipboard Toggle word wrap

その他の参考資料

jclouds の詳細については、Jclouds BlobStore Guide Jclouds Compute Guideを参照してください。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat