Amazon SNS コネクタ

Select

Amazon SNS 用 Anypoint コネクタを使用すると、Amazon Simple Notification Service (Amazon SNS) API に接続できます。これにより、分散型 Web 対応アプリケーションを構築できます。Mule アプリケーションは、Amazon SNS コネクタを使用して、複数の配信プロトコルで簡単にリアルタイム通知メッセージを目的のサブスクライバにプッシュできます。

前提条件

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

  • Amazon Web Services (SNS) へのアクセス権

  • IAM 形式のログイン情報 (コネクタを使用して AWS にアクセスするために必要)

  • Anypoint Studio バージョン 7.0 以上または Anypoint Design Center

互換性

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

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

Mule Runtime

4.0.0

AWS SDK for Java

1.11.79

Java

1.8.0_x 以降

Anypoint Studio

7.0 以上

コネクタをインストールする

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

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

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

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

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

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

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

Studio ビジュアルエディタで設定する

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

  2. [Global Configuration Elements (グローバル設定要素)] 画面で、[Create (作成)] をクリックします。次のウィンドウが表示されます。

    [Global Element Configuration (グローバル要素設定)] ウィザード
  3. [Choose Global Type (グローバル種別の選択)] ウィザードで、[Connector Configuration (コネクタ設定)] を展開し、[Amazon SNS Configuration (Amazon SNS 設定)] を選択して [OK] をクリックします。次のウィンドウが表示されます。

    [Global Element Properties (グローバル要素のプロパティ)]

    上記の画像では、プレースホルダ値でプロジェクトの src フォルダに配置されている設定ファイルが参照されます。

  4. 以下の説明に従ってパラメータを設定します。

    パラメータ 説明

    Name (名前)

    参照する設定の名前を入力します。

    Access Key (アクセスキー)

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

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

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

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

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

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

    トピックリージョンエンドポイントを設定します。

    Topic Arn (トピック ARN)

    接続性をテストするトピック ARN。

    ログイン情報をグローバル設定プロパティに入力するか、それらの値を含む設定ファイルを参照することができます。メンテナンスの簡略化とプロジェクトの再利用性の向上のために、設定ファイルを使用することをお勧めします。これらの値を別個のファイルに保存しておくと、アクセスログイン情報が異なるさまざまな環境 (本番、開発、QA など) にデプロイする必要がある場合に便利です。

  5. [Pooling Profile (プーリングプロファイル)] タブと [Reconnection (再接続)] タブは、デフォルトエントリのままにします。

  6. [Test Connection (接続をテスト)] をクリックして、グローバル設定のパラメータが正しいことと、Mule から Amazon SNS のインスタンスに正常に接続できることを確認します。

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

XML エディタまたはスタンドアロンで設定する

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

    <?xml version="1.0"?>
    
    <mule xmlns:http="http://www.mulesoft.org/schema/mule/http"
    xmlns:sns="http://www.mulesoft.org/schema/mule/sns"
    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/sns
    http://www.mulesoft.org/schema/mule/sns/current/mule-sns.xsd
    http://www.mulesoft.org/schema/mule/http
    http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
    
    <!-- Put your flows and configuration elements here -->
    
    </mule>
  2. 次のグローバル設定コードを使用して、フローの外部 (上部) でグローバル Amazon SNS 設定を作成します。

    <sns:config name="Amazon_SNS_configuration" doc:name="Amazon SNS configuration" doc:id="f85b91a1-661e-4bf4-80c7-997107acda08">
    <sns:basic-connection accessKey="${config.accessKey}" secretKey="${config.secretKey}" testTopicArn="${sns.topic.arn}" />
    </sns:config>

    自分や IAM ユーザがシークレットアクセスキーを忘れたり紛失した場合は、新しいアクセスキーを作成できます。

このコネクタの使用

Amazon SNS コネクタは、操作ベースのコネクタです。つまり、コネクタをフローに追加するときに、コネクタで実行する特定の操作を設定する必要があります。現在、このコネクタでは、次の一連の操作がサポートされています。

操作 説明

Add Permission

ステートメントをトピックのアクセス制御ポリシーに追加します。

Confirm Subscription

ConfirmSubscription アクションは、以前の Subscribe アクションでエンドポイントに送信されたトークンを検証して、エンドポイントの所有者にメッセージを受信する意思があるかどうかを確認します。

Create Platform Application

デバイスやモバイルアプリケーションを登録できるいずれかのサポート対象プッシュ通知サービス (APNS や GCM など) のプラットフォームアプリケーションオブジェクトを作成します。

Create Platform Endpoint

いずれかのサポート対象プッシュ通知サービスのデバイスやモバイルアプリケーションのエンドポイントを作成します。

Create Topic

CreateTopic アクションは、通知をパブリッシュできるトピックを作成します。

Delete Endpoint

Amazon SNS からデバイスやモバイルアプリケーションのエンドポイントを削除します。

Delete Platform Application

いずれかのサポート対象プッシュ通知サービス (APNS や GCM など) のプラットフォームアプリケーションオブジェクトを削除します。

Delete Topic

DeleteTopic アクションは、トピックとそのすべてのサブスクリプションを削除します。

Get Endpoint Attributes

いずれかのサポート対象プッシュ通知サービス (GCM や APNS など) のデバイスのエンドポイント属性を取得します。

Get Platform Application Attributes

サポート対象プッシュ通知サービス (APNS や GCM など) のプラットフォームアプリケーションオブジェクトの属性を取得します。

Get Subscription Attributes

GetSubscriptionAttributes アクションは、サブスクリプションのすべてのプロパティを返します。

Get Topic Attributes

GetTopicAttributes アクションは、トピックのすべてのプロパティを返します。

List Endpoints By Platform Application

サポート対象プッシュ通知サービス (GCM や APNS など) のデバイスのエンドポイントとエンドポイント属性をリストします。

List Platform Applications

サポート対象プッシュ通知サービス (APNS や GCM など) のプラットフォームアプリケーションオブジェクトをリストします。

List Subscriptions By Topic

SubscriptionsByTopic アクションは、特定のトピックへのサブスクリプションのリストを返します。

List Subscriptions

ListSubscriptions アクションは、リクエスタのサブスクリプションのリストを返します。

List Topics

ListTopics アクションは、リクエスタのトピックのリストを返します。

Publish

Publish アクションは、メッセージをすべてのトピックのサブスクライブされたエンドポイントに送信します。

Remove Permission

RemovePermission アクションは、トピックのアクセス制御ポリシーからステートメントを削除します。

Set Endpoint Attributes

いずれかのサポート対象プッシュ通知サービス (GCM や APNS など) のデバイスのエンドポイントの属性を設定します。

Set Platform Application Attributes

サポート対象プッシュ通知サービス (APNS や GCM など) のプラットフォームアプリケーションオブジェクトの属性を設定します。

Set Subscription Attributes

SubscriptionAttributes アクションは、サブスクリプションの所有者がトピックの属性に新しい値を設定できるようにします。

Set Topic Attributes

TopicAttributes アクションは、トピックの所有者がトピックの属性に新しい値を設定できるようにします。

Subscribe

Subscribe アクションは、エンドポイントに確認メッセージを送信してエンドポイントをサブスクライブする準備をします。

Unsubscribe

Unsubscribe アクションは、サブスクリプションを削除します。

コネクタの名前空間とスキーマ

Studio でアプリケーションを設計するときに、コネクタをパレットから Anypoint Studio キャンバスにドラッグすると、XML コードにコネクタの名前空間とスキーマの場所が自動的に入力されます。

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

Studio の XML エディタまたは別のテキストエディタで Mule アプリケーションを手動でコーディングする場合、名前空間とスキーマを設定 XML に貼り付けます。

<?xml version="1.0"?>

<mule xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns:sns="http://www.mulesoft.org/schema/mule/sns"
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/sns
http://www.mulesoft.org/schema/mule/sns/current/mule-sns.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">

<!-- Put your flows and configuration elements here -->

</mule>

コネクタ連動関係の仕様

Mule アプリケーションから SNS コネクタを参照するには、次の XML スニペットが pom.xml ファイルに含まれている必要があります。

<dependency>
	<groupId>org.mule.connectors</groupId>
    <artifactId>mule-sns-connector</artifactId>
    <version>4.0.0</version>
    <classifier>mule-plugin</classifier>
</dependency>

ユースケースとデモ

コネクタの一般的なユースケース:

ユースケース 説明

Amazon SNS メッセージを Amazon SQS キューに送信する

Amazon SNS は、Amazon Simple Queue Service (Amazon SQS) と緊密に連携します。Amazon SNS と Amazon SQS を併用すれば、イベントの迅速な通知を必要とするアプリケーションにはメッセージを配信し、後で処理する他のアプリケーションでは Amazon SQS キューにメッセージを保持するということができます。

Amazon SNS メッセージを HTTP/HTTPS エンドポイントに送信する

Amazon SNS を使用して、通知メッセージを 1 つ以上の HTTP または HTTPS エンドポイントに送信できます。エンドポイントをトピックにサブスクライブするときに、通知をトピックにパブリッシュできます。Amazon SNS は、HTTP POST 要求を送信し、サブスクライブされたエンドポイントに通知のコンテンツを配信します。

コネクタを使用したデモ Mule アプリケーション

メッセージを Amazon SQS キューに送信します。

Amazon SQS キューを Amazon SNS トピックにサブスクライブするときに、メッセージをトピックにパブリッシュできます。Amazon SNS は、サブスクライブされたキューに Amazon SQS メッセージを送信します。

プロセスを簡略化する Amazon SQS 用の AWS マネジメントコンソールを使用して、Amazon SQS キューを Amazon SNS トピックにサブスクライブできます。

Amazon SQS キューへのメッセージの送信
  1. Anypoint Studio で新しい Mule プロジェクトを作成します。

  2. Amazon SNS および SQS ログイン情報を保持するために以下のプロパティを mule-artifact.properties ファイルに追加して、プロジェクトの src/main/app ディレクトリに配置します。

    sqs.accesskey=<Access Key>
    sqs.secretkey=<Secret Key>
    sns.topic.arn=<SNS Topic ARN>
    user can select specific region by using the dropdown.
    by default the region will be taken as US_EAST1
    
    sqs.queueName=<SQS Queue Name>
    user can select specific region by using the dropdown.
    sqs.queueUrl=<SQS Queue URL>
  3. Mule HTTP コネクタをクリックして Listener 操作を選択し、フローの先頭にドラッグして次のパラメータを設定します。

    SNS HTTP 設定プロパティ
    パラメータ

    Display Name (表示名)

    HTTP

    Extension Configuration (拡張機能設定)

    HTTP 要素がまだ作成されていない場合、プラス記号をクリックして新しい HTTP リスナの設定を追加し、[OK] をクリックします (ホストには 0.0.0.0、ポートには 8081 を入力する)。

    Path (パス)

    /

  4. Amazon SNS コネクタをクリックして「Publish」操作を選択し、HTTP エンドポイントコンポーネントの横にドラッグします。

  5. 新しい Amazon SNS グローバル要素を追加して、SNS コネクタを設定します。[Connector Configuration (コネクタ設定)] 項目の横にあるプラス記号をクリックします。

    1. 以下の表に従ってグローバル要素を設定します。

      パラメータ 説明

      Name (名前)

      参照する設定の名前を入力します。

      <Configuration_Name>

      Access Key (アクセスキー)

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

      ${config.accesskey}

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

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

      ${config.secretkey}

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

      キューリージョンを設定します。

      ユーザは、ドロップダウンを使用してリージョンを選択できます。

      Topic Arn (トピック ARN)

      接続性をテストするトピック ARN。

      ${sns.topic.arn}

    2. 設定は次のようになります。

      SNS ユースケース設定
    3. 対応する XML 設定は次のようになります。

      <sns:config name="Amazon_SNS_configuration" doc:name="Amazon SNS configuration" doc:id="f85b91a1-661e-4bf4-80c7-997107acda08">
      <sns:basic-connection accessKey="${config.accessKey}" secretKey="${config.secretKey}" testTopicArn="${sns.topic.arn}" />
      </sns:config>
  6. [Test Connection (接続をテスト)] をクリックして、Mule が SNS インスタンスに接続できることを確認します。正常に接続できた場合は、[OK] をクリックして設定を保存します。そうでない場合は、見直して、誤ったパラメータを修正してからもう一度テストします。

  7. Amazon SNS コネクタのプロパティエディタに戻り、残りのパラメータを設定します。

    パラメータ

    Basic Settings (基本設定)

    Display Name (表示名)

    Publish message to topic (メッセージをトピックにパブリッシュ) (または他の任意の名前)

    Connector Configuration (コネクタ設定)

    Amazon_SNS_Configuration (作成したグローバル要素への参照名)。

    Operation (操作)

    publish

    General (一般)

    Define attributes (属性を定義)

    パブリッシュ属性を定義する場合に選択します。

    Topic Arn (トピック ARN)

    ${sns.topic.arn} (または他のトピック ARN)。

    Message (メッセージ)

    Hello World!

    Subject (件名)

    Testing publish to queue (キューへのパブリッシュのテスト)

    メッセージのパブリッシュコネクタのプロパティ
  8. XML が次のようになっていることを確認します。

    <sns:publish config-ref="Amazon_SNS_configuration" doc:name="Publish" doc:id="b0c5158d-6f3f-44be-9153-3c6d9dd870f2" >
        <sns:publish-details message="Hello World!" subject="Testing publish to queue" topicArn="${sns.topic.arn}"/>
    </sns:publish>
  9. Amazon SNS コネクタの後にロガースコープを追加して、Mule コンソールの Publish 操作で処理されるデータを出力します。以下の表に従って Logger を設定します。

    パラメータ

    Display Name (表示名)

    Logger (ロガー) (または他の任意の名前)

    Message (メッセージ)

    Message ID: [payload] (メッセージ ID: [payload])

    Level (レベル)

    INFO

    SNS ロガー
  10. 次に、別のフローを追加して、SNS によってパブリッシュされるメッセージを受信しましょう。

  11. フロースコープをパレットにドラッグします。

  12. Amazon SQS コネクタを新しいフローの左側の ReceiveMessages にドラッグし、以下のステップに従って設定します。

  13. [Connector Configuration (コネクタ設定)] 項目の横のあるプラス記号をクリックし、新しい Amazon SQS グローバル要素を追加します。

    1. 以下の表に従ってグローバル要素を設定します。

      パラメータ 説明

      Name (名前)

      参照する設定の名前を入力します。

      <Configuration_Name>

      Access Key (アクセスキー)

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

      ${sqs.accesskey}

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

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

      ${sqs.secretkey}

      Queue Name (キュー名)

      キューの名前を設定します。

      ${sqs.queueName}

      Queue URL (キュー URL)

      キュー URL を設定します。

      ${sqs.queueUrl}

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

      キューリージョンを設定します。

      ユーザは、ドロップダウンを使用してリージョンを選択できます。

    2. 設定は次のようになります ([Queue Name (キュー名)] が指定されている場合、[Queue URL (キュー URL)] はスキップ可能):

      sns-sqs-config
    3. 対応する XML 設定は次のようになります。

      <sqs:config name="Amazon_SQS_Configuration" accessKey="${sqs.accesskey}" secretKey="${sqs.secretkey}" doc:name="Amazon SQS: Configuration" defaultQueueName="${sqs.queueName}" url="${sqs.queueUrl}"/>

      設定で指定した SQS キューが SNS トピックにサブスクライブされていることを確認します。

  14. [Test Connection (接続をテスト)] をクリックして、Mule が SQS インスタンスに接続できることを確認します。正常に接続できた場合は、[OK] をクリックして設定を保存します。そうでない場合は、見直して、誤ったパラメータを修正してからもう一度テストします。

  15. Amazon SQS コネクタのプロパティエディタに戻り、残りのパラメータを設定します。

    パラメータ

    Basic Settings (基本設定)

    Display Name (表示名)

    Amazon SQS (Streaming) (Amazon SQS (ストリーミング)) (または他の任意の名前)。

    Connector Configuration (コネクタ設定)

    Amazon_SQS_Configuration (作成したグローバル要素への参照名)。

    Other fields in the group General ([General (一般)] グループの他の項目)

    デフォルト値

  16. XML が次のようになっていることを確認します。

    <sqs:receivemessages config-ref="Amazon_SQS_Configuration" doc:name="Receivemessages" doc:id="ID_VALUE" />
  17. Amazon SQS コネクタの後にロガースコープを追加して、Mule コンソールの Receive 操作で渡されるデータを出力します。以下の表に従って Logger を設定します。

    パラメータ

    Display Name (表示名)

    Display Message (表示メッセージ) (または他の任意の名前)

    Message (メッセージ)

    Received Message : [payload] (受信メッセージ: [payload])

    Level (レベル)

    INFO

  18. プロジェクトを保存し、Mule アプリケーションとして実行します。Package Explorer でプロジェクトを右クリックします。[Run As (別のユーザとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。

  19. Web ブラウザを開き、URL http://localhost:8081/ を入力して応答を確認します。ロガーには、ブラウザのパブリッシュされたメッセージ ID と、Mule コンソールの受信メッセージが表示されます。

デモ Mule アプリケーションの XML コード

このユースケース例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを XML エディタに貼り付けます。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:sqs="http://www.mulesoft.org/schema/mule/sqs" xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:sns="http://www.mulesoft.org/schema/mule/sns" 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/json http://www.mulesoft.org/schema/mule/json/current/mule-json.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/sqs http://www.mulesoft.org/schema/mule/sqs/current/mule-sqs.xsd
http://www.mulesoft.org/schema/mule/sns http://www.mulesoft.org/schema/mule/sns/current/mule-sns.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd">
    <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="ID_VALUE" >
    <http:listener-connection host="0.0.0.0" port="8081" />
    </http:listener-config>
    <sqs:config name="Amazon_SQS_Configuration" doc:name="Amazon SQS Configuration" doc:id="ID_VALUE" >
            <sqs:basic-connection accessKey="${sqs.accessKey}" secretKey="${sqs.secretKey}" defaultQueueName="${sqs.queueName}"/>
    </sqs:config>
    	<sns:config name="Amazon_SNS_configuration" doc:name="Amazon SNS configuration" doc:id="ID_VALUE >
    		<sns:basic-connection accessKey="${sns.accesskey}" secretKey="${sns.secretkey}" />
    	</sns:config>
   <flow name="publish_message_to_topic" >
        <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
        <sns:publish config-ref="Amazon_SNS_Configuration" doc:name="Publish message to topic">
          <sns:publish topicArn="${sns.topic.arn}"  message="Hello world!" subject="Testing publish to queue"/>
          </sns:publish>
          <logger message="#[payload]" level="INFO" doc:name="Logger" />
   </flow>
   <flow name="receive_message_from_queue">
        <sqs:receivemessages config-ref="Amazon_SQS_Configuration" doc:name="Receivemessages" doc:id="ID_VALUE" />
   		<logger level="INFO" doc:name="Logger" doc:id="ID_VALUE" message="#[payload]"/>
   </flow>
</mule>

関連情報

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub