Amazon S3 コネクタ

Select

Anypoint Amazon S3 コネクタを使用すると、Amazon S3 API に接続できます。これにより、Amazon S3 と連携して、オブジェクトを保存したり、他の AWS サービスでデータをダウンロードして使用したり、インターネットストレージを要求するアプリケーションを構築したりできます。

Amazon S3 API にすばやくアクセスできるため、Amazon S3 と他のデータベース、CMS アプリケーション (Drupal など)、CRM アプリケーション (Salesforce など) 間のシームレスなインテグレーションが実現します。Amazon S3 を使用して、任意の量のデータを Web 上のあらゆる場所からいつでも保存および取得できます。これらのタスクは、AWS マネジメントコンソールのシンプルかつ直感的な Web インターフェースを使用して実行できます。

AWS SDK for Java は、AWS インフラストラクチャサービスの Java API を提供します。 Amazon S3 コネクタは、SDK for Java を使用して構築されています。

前提条件

Amazon S3 コネクタを使用するには、以下が必要です。

  • Amazon Web Services へのアクセス権

  • AWS Identity and Access Management (IAM) のログイン情報

  • Anypoint Studio Enterprise Edition

このドキュメントは、読者が Amazon S3、Mule、Anypoint コネクタ、Anypoint Studio、Mule フローの要素、グローバル要素に精通していることを前提としています。

互換性

Amazon S3 コネクタは、以下と互換性があります。

アプリケーション/サービス バージョン

Mule Runtime

4.0.0 以降

AWS SDK for Java

1.11.79

このコネクタのインストール方法

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

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

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

  4. 画面の指示に従ってコネクタをインストールします。

Studio の更新がある場合、右下隅にメッセージが表示されます。メッセージをクリックすると、更新をインストールできます。

Studio ビジュアルエディタを使用して設定する方法

Mule アプリケーションで Amazon S3 コネクタを使用するには、アプリケーションのすべての Amazon S3 コネクタで使用できるグローバル Amazon S3 要素を設定します。

  1. キャンバスの下部にある [Global Elements (グローバル要素)] タブをクリックし、[Create (作成)] をクリックします。

  2. [Choose Global Type (グローバル種別の選択)] ウィンドウで、[Connector Configuration (コネクタ設定)] を展開し、[Amazon S3 Configuration (Amazon S3 設定)] をクリックします。

  3. [OK] をクリックします。

  4. グローバル要素のプロパティを指定します。

    [Global Element Properties (グローバル要素のプロパティ)]
    パラメータ 説明

    Name (名前)

    コネクタインスタンスを参照する設定の名前を入力します。

    Access Key (アクセスキー)

    AWS アカウントを所有するユーザを一意に識別する英数字のテキスト文字列。

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

    パスワードの役割を果たすキー。

    Try Default AWS Credentials Provider Chain (デフォルトの AWS ログイン情報プロバイダチェーンを試す)

    一時的なログイン情報を使用するかどうかを制御するチェックボックス。

    上記のダイアログでは、プロジェクトの src フォルダに配置されている設定ファイルを値で参照できます。

    ログイン情報をグローバル設定プロパティに入力するか、それらの値を含む設定ファイルを参照することができます。メンテナンスをシンプルにして、プロジェクトを再利用できるようにするために、設定ファイルを使用することをお勧めします。

  5. [Proxy (プロキシ)] タブと [Advanced (詳細)] タブは、デフォルトエントリのままにします。

  6. [Test Connection (接続をテスト)] をクリックして、グローバル設定のパラメータが正しいことと、Mule から Amazon S3 のインスタンスに正常に接続できることを確認します。Amazon S3 の操作へのアクセスは、そのユーザのポリシーで制御されます。ユーザにアクセス権がある操作を実行する前にログイン情報を検証できない場合もあります。これは、バケット名やその他のパラメータのインスタンスによって異なります。そのため、ログイン情報に制限されたポリシー (例: 特定のバケット内の特定のフォルダにのみアクセスできる) が適用される場合、テスト接続に失敗する可能性があります。

  7. [OK] をクリックして、グローバルコネクタ設定を保存します。

S3 互換ストレージに接続する方法

デフォルトの AWS S3 以外のストレージに接続する必要がある場合、[S3 Compatible Storage URL (S3 互換ストレージの URL)] 項目でその URL を指定する必要があります。この項目は、[Advanced (詳細)] タブに表示されます。

たとえば、 Minio プロジェクトなどが S3 互換ストレージになります。たとえば、ローカルで設定する場合、S3 互換ストレージの URL を http://127.0.0.1:9000 に設定する必要があります。

XML エディタを使用して設定する方法

  1. 設定ファイルに Amazon S3 名前空間が含まれていることを確認します。

    <mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
    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:spring="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-current.xsd
    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://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
    
      <!-- Put your flows and configuration elements here -->
    
    </mule>
  2. 次のグローバル設定コードを使用して、フローの外部 (上部) でグローバル Amazon S3 設定を作成します。

    <!-- simple configuration -->
    <s3:config name="Amazon_S3_Configuration" accessKey="${s3.accessKey}" secretKey="${s3.secretKey}" doc:name="Amazon S3: Configuration"/>
    パラメータ 説明

    Name (名前)

    config-ref で後で参照できるように設定の名前を入力します。この例の名前は「Amazon_S3_Configuration」です。

    accessKey

    Amazon によって提供されるアクセスキー。非匿名操作で必要になります。

    secretKey

    Amazon によって提供されるシークレットキー。非匿名操作で必要になります。

コネクタの名前空間とスキーマを指定する方法

Studio でパレットからキャンバスにコネクタをドラッグすると、コネクタの名前空間とスキーマの場所が自動的に XML コードに入力されます。Studio の XML エディタまたは別のテキストエディタで Mule アプリケーションを手動でコーディングする場合、次のコードを設定 XML のヘッダーの <mule> タグ内に貼り付けます。

名前空間: http://www.mulesoft.org/schema/mule/s3 スキーマの場所: http://www.mulesoft.org/schema/mule/s3/current/mule-s3.xsd

次に例を示します。

<mule xmlns:s3="http://www.mulesoft.org/schema/mule/s3"
  ...
  xsi:schemaLocation="http://www.mulesoft.org/schema/mule/s3
   http://www.mulesoft.org/schema/mule/s3/current/mule-s3.xsd">
  ...
  <flow name="yourFlow">
  ...
  </flow>
</mule>

pom.xml ファイルでコネクタを参照する方法

pom.xml は、Anypoint Studio で生成される Maven ファイルで、Mule アプリケーションの連動関係が含まれます。 Mule アプリケーションを手動でコーディングする場合、この XML スニペットを pom.xml ファイルに含めます。

<dependency>
  <groupId>org.mule.connectors</groupId>
  <artifactId>mule-s3-connector</artifactId>
  <version>5.0.0</version>
  <classifier>mule-plugin</classifier>
</dependency>

このコネクタを使用する方法

次の操作が機能するように、バケットの Amazon S3 アクションのリスト全体のサブセットを有効化または更新して、AWS アカウントでバケットのサブセットアクションにアクセスできるように指定する必要があります。

Amazon S3 コネクタでは、次の一連の操作がサポートされています。

  • Abort Multipart Upload

  • Complete Multipart Upload

  • Copy Object

  • Create Bucket

  • Create Object

  • Create Object Presigned URI

  • Delete Bucket

  • Delete Bucket Cross Origin Configuration

  • Delete Buckt Lifecycle Configuration

  • Delete Bucket Policy

  • Delete Bucket Tagging Configuration

  • Delete Bucket Website Configuration

  • Delete Object

  • Delete Objects

  • Get Bucket ACL

  • Get Bucket Cross Origin Configuration

  • Get Bucket Lifecycle Configuration

  • Get Bucket Location

  • Get Bucket Logging Configuration

  • Get Bucket Notification Configuration

  • Get Bucket Policy

  • Get Bucket Tagging Configuration

  • Get Bucket Versioning Configuration

  • Get Bucket Website Configuration

  • Get Object

  • Get Object ACL

  • Get Object Content

  • Get Object Metadata

  • Initiate Multipart Upload

  • List Buckets

  • List Multipart Uploads

  • List Next Batch of Objects

  • List Next Batch of Versions

  • List Objects

  • List Parts

  • List Versions

  • Set Bucket ACL

  • Set Bucket Cross Origin Configuration

  • Set Bucket Lifecycle Configuration

  • Set Bucket Logging Configuration

  • Set Bucket Notification Configuration

  • Set Bucket Policy

  • Set Bucket tagging Configuration

  • Set Bucket Versioning Configuration

  • Set Bucket Website Configuration

  • Set Object ACL

  • Set Object Storage Class

  • Upload Part

  • Upload Part Copy

注意: Create Object 操作では、[Content Length (コンテンツの長さ)] が 0 より大きい値に設定されている必要があります。[Content Length (コンテンツの長さ)] が 0 に設定されていると、Create Object 操作で 0 バイトのオブジェクトが作成されます。

AWS KMS マスタキーを使用する方法

顧客管理マスタキーを使用して S3 バケットに保存するオブジェクトを暗号化する必要がある場合、Create Object 設定の [KMS Master Key (KMS マスタキー)] 項目で顧客マスタキー ID を指定します。

CloudHub で AWS ログイン情報プロバイダチェーンを使用する方法

デフォルトの AWS ログイン情報プロバイダチェーンを使用して、CloudHub 環境のアクセスキーおよびシークレットを指定できます。

  1. 次の設定を使用して、Mule アプリケーションを準備します。

     <s3:config name="Amazon_S3_S3_configuration" doc:name="Amazon S3 S3 configuration" doc:id="DOC_ID" >
      <s3:basic-connection accessKey="${aws.accessKeyId}" secretKey="${aws.secretKey}"
      tryDefaultAWSCredentialsProviderChain="true"/>
     </s3:config>
  2. これをエクスポートしてデプロイ可能な zip アーカイブを取得します。

  3. CloudHub にデプロイし、Runtime Manager > [Settings (設定)] > [Properties (プロパティ)] で aws.accessKeyId および aws.secretKey プロパティを設定します。

  4. デプロイおよびテストを完了します。コネクタ設定でアクセスキーとシークレットキーが指定されていないことと、設定で指定された値から正しい値が使用されていることを確認します。

ユースケース

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

  • 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. Anypoint 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 コネクタをフローにドラッグし、コネクタをダブルクリックしてそのプロパティエディタを開きます。

  5. 選択する既存の Amazon S3 コネクタグローバル要素がない場合、[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 コネクタを追加します。

    HTTP コネクタ - [General (一般)] タブ
    項目

    Display Name (表示名)

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

    設定

    緑のプラス記号をクリックし、新しい設定 (ホストが developer.mulesoft.com、プロトコルが HTTPS、ポートが 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 コネクタをドラッグします。

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

    Display Name (表示名)

    任意の名前を入力します。この例では、S3 コネクタの名前は「Create logo object in S3 bucket (ロゴオブジェクトを S3 バケットに作成)」となっています。

    Extension Configuration (拡張機能設定)

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

    Bucket Name (バケット名)

    ${config.bucket}

    Key (キー)

    muledevlogo

    Content (コンテンツ)

    #[payload]

    Canned ACL (既定 ACL)

    PRIVATE (デフォルト)

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

    STANDARD (デフォルト)

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

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

    Display Name (表示名)

    コネクタインスタンスの名前を入力します。この例では、S3 コネクタの名前は「Get Image (画像を取得)」となっています。

    Extension Configuration (拡張機能設定)

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

    Bucket Name (バケット名)

    ${config.bucket}

    Key (キー)

    muledevlogo

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

    S3 コネクタ「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="muledevelogo"
    doc:name="Create object" doc:id="DOC_ID"/>
    <s3:get-object config-ref="Amazon_S3_Configuration" bucketName="${config.bucket}" key="muledevelogo"
    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>

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub