Amazon S3 Connector 6.3 の例 - Mule 4

次の例は、URL から Amazon S3 に画像を保存し、画像を取得して表示する方法を示しています。

始める前に

Anypoint Studio でこのサンプルが機能するように、Amazon Web Services ログイン情報を提供する必要があります。次のいずれかを実行できます。

  • コード内で変数を値に置き換える。

  • src/main/resources/mule-artifact.properties​ ファイルで各変数の値を指定する。

手順の例

Studio 7 Visual Studio アイコンフロー。フローには、「HTTP Listener」、「Create bucket (バケットを作成)」、「Get MuleSoft logo (MuleSoft ロゴを取得)」、「Create logo object in S3 bucket (ロゴオブジェクトを S3 バケットに作成)」、「Get Image (画像を取得)」、「Delete object (オブジェクトを削除)」、「Delete S3 bucket (S3 バケットを削除)」 が表示されています。
  1. Studio で新しい Mule プロジェクトを作成します。

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

  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 (一般)」 タブ
    項目

    Name (名前)

    コネクタインスタンスの名前 (​Amazon_S3_Configuration​ など)。

    General (一般)

    コネクタの全般設定。

    Region Endpoint (リージョンエンドポイント)

    us-east-1​ (デフォルト) などのリージョン。

    Access key (アクセスキー)

    接続アクセスキー。

    Secret key (シークレットキー)

    接続シークレットキー。

  8. Create Bucket​ 操作をフローまでドラッグします。

    S3 Connector の 「S3 General (S3 一般)」 タブの 「Create Bucket (バケットを作成)」
    項目

    Display Name (表示名)

    [Create new bucket (新しいバケットを作成)]​ など、選択した表示名。

    Connector configuration (コネクタ設定)

    コネクタのグローバル設定。

    Bucket name (バケット名)

    新規作成したバケットの名前。

    ACL

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

  9. MuleSoft に MuleSoft ロゴを要求する [HTTP] > [Connector (コネクタ)] を追加します。

    「HTTP」 > 「Connector (コネクタ)」 - 「General (一般)」 タブ
    項目

    Display Name (表示名)

    コネクタインスタンスの名前。この例では、[HTTP] > [Connector (コネクタ)] の名前は「​Get MuleSoft logo​」となっています。

    Configuration (設定)

    [Host (ホスト)]​ が「​developer.mulesoft.com​」、​[Protocol (プロトコル)]​ が「​HTTPS​」、​[Port (ポート)]​ が「​80​」の設定。

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

    /sites/all/themes/muletheme/images/mulesoft_dev_logo_v2.svg​。

  10. 要求された MuleSoft ロゴを選択された Amazon S3 バケットに作成する ​Put Object​ 操作をフローまでドラッグします。

    S3 Connector 「Create Logo Object in S3 Bucket (ロゴオブジェクトを S3 バケットに作成)」 の 「General (一般)」 タブ
    項目

    Display Name (表示名)

    [Create logo object in S3 bucket (ロゴオブジェクトを S3 バケットに作成)]​ など、選択した表示名。

    Connector Configuration (コネクタ設定)

    コネクタのグローバル設定。

    Bucket Name (バケット名)

    新しいオブジェクトが作成されるバケットの名前。

    Key (キー)

    新規作成したオブジェクトの名前。

    Content (コンテンツ)

    オブジェクトのコンテンツ。

    Object ACL (オブジェクト ACL)

    アクセスコントロールリスト。

  11. 新規作成された MuleSoft ロゴ画像をバケットから取得する ​Get Object​ 操作をフローまでドラッグします。

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

    Display Name (表示名)

    [Get Image (画像を取得)]​ など、選択した表示名。

    Connector Configuration (コネクタ設定)

    コネクタのグローバル設定。

    Bucket Name (バケット名)

    オブジェクトが保存されているバケットの名前。

    Object Key (オブジェクトキー)

    取得するオブジェクトの名前。

  12. オブジェクトを削除する ​Delete Object​ 操作をフローまでドラッグします。​Delete Object​ 操作の戻り値のデータ型は void であるため、ペイロードには ​Get Object​ 操作で返されるオブジェクトが含まれます。

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

    Display Name (表示名)

    [Delete created object (作成したオブジェクトを削除)]​ など、選択した表示名。

    Connector Configuration (コネクタ設定)

    コネクタのグローバル設定。

    Bucket Name (バケット名)

    オブジェクトが保存されているバケットの名前。

    Object Name (オブジェクト名)

    削除するオブジェクトの名前。

  13. バケットを削除する ​Delete Bucket​ 操作をフローまでドラッグします。​Delete Bucket​ 操作の戻り値のデータ型は void であるため、ペイロードには ​Get Object​ 操作で返されるオブジェクトが含まれます。

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

    Display Name (表示名)

    [Delete created bucket (作成したバケットを削除)]​ など、選択した表示名。

    Connector Configuration (コネクタ設定)

    コネクタのグローバル設定。

    Bucket Name (バケット名)

    削除するバケットの名前。

例の XML

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio 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">
	<http:listener-config name="HTTP_Listener_config"
		doc:name="HTTP Listener config" doc:id="DOC_ID">
		<http:listener-connection host="0.0.0.0"
			port="8081" />
	</http:listener-config>
	<configuration-properties doc:name="Configuration properties" doc:id="DOC_ID" file="mule-artifact.properties" />
	<s3:config name="Amazon_S3_Configuration" doc:name="Amazon S3 Configuration" doc:id="DOC_ID" >
		<s3:connection accessKey="${config.accessKey}" secretKey="${config.secretKey}" />
	</s3:config>
	<http:request-config name="HTTP_Request_configuration" doc:name="HTTP Request configuration" doc:id="DOC_ID">
		<http:request-connection protocol="HTTPS" host="developer.mulesoft.com"/>
	</http:request-config>
	<flow name="docu-demoFlow" doc:id="DOC_ID" >
		<http:listener doc:name="Listener" doc:id="DOC_ID" config-ref="HTTP_Listener_config" path="/"/>
		<s3:create-bucket doc:name="Create new bucket" doc:id="DOC_ID" config-ref="Amazon_S3_Configuration" bucketName="${bucket.name}" acl="PRIVATE"/>
		<http:request method="GET" doc:name="Get Mulesoft logo" doc:id="DOC_ID" path="/sites/all/themes/muletheme/images/mulesoft_dev_logo_v2.svg" config-ref="HTTP_Request_configuration"/>
		<s3:put-object doc:name="Create logo object in S3 bucket" doc:id="DOC_ID" config-ref="Amazon_S3_Configuration" bucketName="${bucket.name}" key="${file.name}" objectACL="PRIVATE"/>
		<s3:get-object doc:name="Get image" doc:id="DOC_ID" config-ref="Amazon_S3_Configuration" bucketName="${bucket.name}" key="${file.name}"/>
		<s3:delete-object doc:name="Delete created object" doc:id="DOC_ID" config-ref="Amazon_S3_Configuration" bucketName="${bucket.name}" key="${file.name}"/>
		<s3:delete-bucket doc:name="Delete created bucket" doc:id="DOC_ID" config-ref="Amazon_S3_Configuration" bucketName="${bucket.name}"/>
	</flow>
</mule>