Amazon S3 の例

次に、Amazon S3 Connector の一般的なユースケースを示します。

  • URL から Amazon S3 に画像を保存し、画像を取得して表示する。

  • Amazon S3 で画像リンクを作成し、画像リンクと共に Twitter で状況を更新する (このドキュメントに記載されていないユースケース)。

ユースケース: URL から Amazon S3 に画像を保存して取得する

URL から Amazon S3 に画像を保存し、画像を取得して表示します。 Anypoint Studio でこのサンプルが機能するように、Amazon Web Services ログイン情報を提供する必要があります。コードで変数をそれらの値に置き換えるか、​src/main/resources/mule-artifact.properties​ ファイルで各変数の値を指定できます。

Studio 7 Visual Studio アイコンフロー
  1. Studio で新しい Mule プロジェクトを作成します。

  2. HTTP リスナーをキャンバスにドラッグし、それを選択してプロパティエディターを開きます。

  3. 新しい HTTP リスナー設定グローバル要素を追加します。

    1. [General Settings (一般設定)] で、​[+]​ ボタンをクリックします。

    2. 次の HTTP パラメーターを設定します。その他の項目はデフォルト値のままにし、​[OK]​ をクリックします。

      項目

      Name (名前)

      HTTP_Listener_Configuration

      Host (ホスト)

      127.0.0.1

      Port (ポート)

      8081

    3. HTTP リスナーの設定グローバル要素を参照します。[General (一般)] タブで、​/​ パスを指定します。

  4. Amazon S3 Connector をフローにドラッグし、コネクタをダブルクリックしてそのプロパティエディターを開きます。

  5. 選択する既存の Amazon S3 Connector グローバル要素がない場合、​[Extension Configuration (拡張機能設定)]​ の横にあるプラス記号をクリックします。

  6. グローバル要素のプロパティを設定し、​[OK]​ をクリックします。

  7. コネクタのパラメーターを設定します。

    コネクタプロパティ - [General (一般)] タブ
    項目

    Display Name (表示名)

    「Create bucket (バケットを作成)」などのコネクタインスタンスの名前を入力します。

    Extension Configuration (拡張機能設定)

    コネクタのグローバル設定を選択します。

    Bucket Name (バケット名)

    ${config.bucket}

    リージョン

    「​US_STANDARD​ (デフォルト)」などのリージョンを選択します。

    Canned ACL (既定 ACL)

    PRIVATE (デフォルト) アクセス制御リスト。既定 ACL は定義済みの許可です。

  8. MuleSoft に MuleSoft ロゴを要求する HTTP Connector を追加します。

    HTTP Connector - [General (一般)] タブ
    項目

    Display Name (表示名)

    コネクタインスタンスの名前を入力します。この例では、HTTP Connector の名前は「Get MuleSoft logo (MuleSoft ロゴを取得)」となっています。

    Configuration (設定)

    緑のプラス記号をクリックし、新しい設定 (​[Host (ホスト)]​ が「​developer.mulesoft.com​」、​[Protocol (プロトコル)]​ が「HTTPS」、​[Port (ポート)]​ が「80」) を作成します。

    [URL or Path (URL またはパス)]

    /sites/all/themes/muletheme/images/mulesoft_dev_logo_v2.svg​ に設定します。

    Body (本文)

    #[payload]

    Target Value (対象値)

    #[payload]

  9. 要求された MuleSoft ロゴを選択された Amazon S3 バケットに作成する別の Amazon S3 Connector をドラッグします。

    S3 Connector プロパティの [General (一般)] タブ
    項目

    Display Name (表示名)

    任意の名前を入力します。この例では、S3 Connector の
名前は​「Create logo object in S3 bucket」​となっています。

    Extension Configuration (拡張機能設定)

    作成したグローバル設定を選択します。

    Bucket Name (バケット名)

    ${config.bucket}

    Key (キー)

    muledevlogo

    Content (コンテンツ)

    #[payload]

    Canned ACL (既定 ACL)

    PRIVATE (デフォルト)

    Storage Class (ストレージクラス)

    STANDARD (デフォルト)

  10. 新規作成された MuleSoft ロゴ画像オブジェクトをバケットから取得する別の Amazon S3 Connector を追加します。

    S3 Connector 「Get Image (画像を取得)」の [General (一般)] タブ
    項目

    Display Name (表示名)

    コネクタインスタンスの名前を入力します。この例では、S3 Connector の名前は ​Get Image​ となっています。

    Extension Configuration (拡張機能設定)

    作成したグローバル設定を選択します。

    Bucket Name (バケット名)

    ${config.bucket}

    Key (キー)

    muledevlogo

  11. バケットを削除する別の Amazon S3 Connector を追加します。delete bucket 操作の戻り値のデータ型は void であるため、ペイロードには ​get image​ 操作で返されるオブジェクトが含まれます。

    S3 Connector 「Delete Bucket (バケットを削除)」の [General (一般)] タブ
    項目

    Bucket Name (バケット名)

    ${config.bucket}

    Force (強制)

    True

ユースケース: XML コード

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:s3="http://www.mulesoft.org/schema/mule/s3"
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/s3
http://www.mulesoft.org/schema/mule/s3/current/mule-s3.xsd">
  <configuration-properties file="mule-artifact.properties"/>
  <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="DOC_ID">
    <http:listener-connection host="127.0.0.1" port="8081"/>
  </http:listener-config>
  <s3:config name="Amazon_S3_Configuration" doc:name="Amazon S3 Configuration" doc:id="DOC_ID">
    <s3:basic-connection accessKey="${config.accessKey}" secretKey="${config.secretKey"/>
  </s3:config>
  <http:request-config name="HTTPS_Request_Configuration" doc:name="HTTP Request configuration" doc:id="DOC_ID">
    <http:request-connection protocol="HTTPS" host="www.mulesoft.com"/>
  </http:request-config>
  <flow name="s3docuFlow" doc:id="DOC_ID">
    <http:listener config-ref="HTTP_Listener_config" path="/" doc:name="Listener" doc:id="DOC_ID"/>
    <s3:create-bucket config-ref="Amazon_S3_Configuration" bucketName="${config.bucket}"
    doc:name="Create bucket" doc:id="DOC_ID"/>
    <http:request method="GET" path="/sites/default/files/new-application_network_diagram-01.svg"
    doc:name="Request" doc:id="DOC_ID" config-ref="HTTPS_Request_Configuration"/>
    <s3:create-object config-ref="Amazon_S3_Configuration" bucketName="${config.bucket}" key="muledevlogo"
    doc:name="Create object" doc:id="DOC_ID"/>
    <s3:get-object config-ref="Amazon_S3_Configuration" bucketName="${config.bucket}" key="muledevlogo"
    doc:name="Get object" doc:id="DOC_ID"/>
    <s3:delete-bucket config-ref="Amazon_S3_Configuration" bucketName="${config.bucket}"
    doc:name="Delete bucket" doc:id="DOC_ID" force="true"/>
  </flow>
</mule>