Amazon SNS 4.6 Connector の例

コネクタの一般的なユースケースを次に挙げます。

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

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

Amazon SNS メッセージの Amazon SQS キューへの送信

Amazon SNS は、Amazon Simple Queue Service (Amazon SQS) と緊密に連携します。Amazon SNS と Amazon SQS を併用すれば、次のメッセージをアプリケーションに配信できます。

  • イベントの迅速な通知が必要なメッセージ。

  • 他のアプリケーションが後で処理するために Amazon SQS キューで保持されるメッセージ。

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

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

Amazon SNS メッセージの HTTP/HTTPS エンドポイントへの送信

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

例: コネクタを使用して SNS メッセージを Amazon SQS キューに送信

次の図は、このユースケースのフロー例を示しています。

send-messages-to-SQS

この例を試す前に、Anypoint Studio にアクセスし、[Mule Palette (Mule パレット)] に ​Amazon SNS​ と ​Amazon SQS​ のエントリが表示されていることを確認します。 表示されていない場合、​「Exchange を使用した Studio でのコネクタのインストール」​の指示に従って両方のコネクタをインストールします。

コネクタを使用して Amazon SNS メッセージを Amazon SQS キューに送信する Mule アプリケーションを設定する手順は、次のとおりです。

  1. Anypoint Studio で新しい Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)] で​「HTTP」​を検索し、​Listener​ 操作を選択します。

    select-listener
  3. Listener​ 操作をキャンバスにドラッグします。

  4. Listener​ 設定で、​[Connector configuration (コネクタ設定)]​ 項目の横にある ​[+]​ をクリックしてグローバル要素を追加します。

  5. デフォルトを受け入れます。

  6. Listener​ 設定の ​[General (一般)]​ タブで、​[Display Name (表示名)]​ 項目を ​HTTP​、​[Path (パス)]​ 項目を `/'' に設定します。

    http-properties
  7. [Mule Palette (Mule パレット)] で​「SNS」​を検索し、​Publish​ 操作を選択します。

    publish-selection
  8. Publish​ 操作を ​HTTP Listener​ コンポーネントの右にドラッグします。

  9. Publish​ 設定で、​[Connector configuration (コネクタ設定)]​ 項目の横にある ​[+]​ をクリックしてグローバル要素を追加します。

  10. 次のようにグローバル要素を設定します。

    パラメーター 説明

    Name (名前)

    設定の参照に使用される名前。

    Amazon_SNS_Configuration​ または別の名前

    Access Key (アクセスキー)

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

    AWS アクセスキー

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

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

    AWS シークレットキー

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

    キューリージョン。

    キューリージョン

    次の画像は、Publish 操作のサンプルグローバル要素を示しています。

    sns-global-configuration
  11. [Configuration XML (設定 XML)]​ タブを選択して、対応する XML を表示します。

    <sns:config name="Amazon_SNS_Configuration"
      doc:name="Amazon SNS configuration" >
      <sns:basic-connection
        accessKey="EXAMPLEACCESSKEY"
        secretKey="EXAMPLESECRETKEY" />
    </sns:config>
  12. [Global Elements (グローバル要素)]​ タブをクリックします。

  13. [Amazon SNS Configuration (Configuration) (Amazon SNS 設定 (設定))]​ を選択して、​[Edit (編集)]​ をクリックします。

  14. [Test Connection (接続をテスト)]​ をクリックして、Mule が SNS インスタンスに接続できることを確認します。

    • 正常に接続できた場合は、​[OK]​ をクリックして設定を保存します。

    • そうでない場合は、見直して、誤ったパラメーターを修正してからもう一度テストします。

  15. フローに戻って ​[Publish]​ を選択します。

  16. 残りのパラメーターを設定します。

    パラメーター

    Display Name (表示名)

    Publish​ または別の名前。

    [Basic Settings (基本設定)] セクション

    Connector configuration (コネクタ設定)

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

    [General (一般)] セクション

    Message (メッセージ)

    `​Hello World!`

    Subject (件名)

    Testing publish to queue

    Message structure (メッセージ構造)

    JSON

    Message attributes (メッセージ属性)

    Amazon Simple Notification Service の開発者ガイド​で説明されている Amazon SNS メッセージ属性。

    [Target Platform (対象プラットフォーム)] セクション

    Topic arn (トピック ARN)

    パブリッシュするトピックの Amazon リソース名 (ARN)。

    Target arn (対象 ARN)

    パブリッシュするプラットフォームエンドポイントの Amazon リソース名 (ARN)。

    Phone number (電話番号)

    パブリッシュ先のデバイスの電話番号。

    次の画像は、Publish Message 操作のサンプル設定を示しています。

    sns-publish-message-props
  17. [Configuration XML (設定 XML)]​ タブを選択して、対応する XML を表示します。

    <sns:publish doc:name="Publish" doc:id="276aca8a-334a-4a04-a2ec-8ca4b21743c5"
        config-ref="Amazon_SNS_SNS_configuration"
        topicArn="arn:aws:sns:us-east-1:123456789012:TopicName"
        subject="Testing publish to queue"
        messageStructure="JSON">
        <sns:message ><![CDATA[#['{"default": "Hello world!"}']]]></sns:message>
    </sns:publish>

    default​ JSON キーは、SNS にとって特別な意味を持ちます。使用されるプロトコルに関係なく、キーの値はすべてのサブスクライバーにメッセージとして送信されます。Publish Message 操作でこのキーを指定する必要があります。必要に応じて、HTTP や SQS などの特定のトランスポートプロトコルに送信するメッセージを定義する他の最上位キーを指定できます。詳細は、Amazon Simple Notification Service ドキュメントの 「Publish」​を参照してください。

Publish 操作によって処理されたデータの表示

同じ例を使用して、Mule コンソールで Publish 操作によって処理されたデータを表示する Logger コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)] で、​「Logger」​コンポーネントを検索し、Amazon SNS Connector (​Publish​) の右にドラッグします。

  2. Logger​ コンポーネントを次のように設定します。

    パラメーター

    Display Name (表示名)

    Logger​ または別の名前

    Message (メッセージ)

    Message: #[payload]

    Level (レベル)

    INFO

    sns-logger

SNS メッセージの受信

同じ例を使用して、Amazon SQS が Amazon SNS によってパブリッシュされたメッセージを受信できるようにする 2 番目のフローを追加します。

  1. [Mule Palette (Mule パレット)] で、​「Flow」​を検索し、​Flow​ コンポーネントをキャンバスにドラッグします。

  2. [Mule Palette (Mule パレット)] で、​「SQS」​を検索し、​Receive messages​ 操作を選択して ​Flow​ コンポーネントの左にドラッグします。

  3. 新しいコンポーネントを選択します。

  4. [Connector configuration (コネクタ設定)]​ 項目の横のある ​[+]​ をクリックし、新しい Amazon SQS Connector グローバル要素を追加します。

  5. 次のようにグローバル要素を設定します。

    パラメーター 説明 Value (値)

    名前

    設定への参照に使用される名前。

    Amazon_SQS_Configuration​ または別の名前

    Access Key (アクセスキー)

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

    AWS アクセスキー

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

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

    AWS シークレットキー

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

    キューリージョン。

    キューリージョン

    Test Queue ARN (キュー ARN をテスト)

    接続をテストするために次のステップで使用されるキュー ARN。

    テストキュー ARN の形式は ​arn:aws:sqs:region:account-id:queue-name​ です。

    次の画像は、Receive messages 操作のサンプルグローバル要素を示しています。

    sns-sqs-config
  6. [Configuration XML (設定 XML)]​ タブを選択して、対応する XML を表示します。

    <sqs:config name="Amazon_SQS_Configuration"
      doc:name="Amazon SQS Configuration" >
    	<sqs:basic-connection
      region="us_east_1"
      accessKey="EXAMPLEACCESSKEY"
      secretKey="EXAMPLESECRETKEY"
      testQueueArn="arn:aws:sqs:us-east-1:123456789012:QueueName"/>
    </sqs:config>
  7. [Test Connection (接続をテスト)]​ をクリックして、Mule が SQS インスタンスに接続できることを確認します。

    • 正常に接続できた場合は、​[OK]​ をクリックして保存します。

    • 接続に失敗した場合は、誤ったパラメーターを確認して修正し、もう一度テストを実行してください。

  8. Amazon SQS Connector のプロパティエディターで、残りのパラメーターを設定します。

    パラメーター

    [Basic Settings (基本設定)] セクション

    Display Name (表示名)

    Amazon SQS (Streaming)​ または別の名前

    Connector configuration (コネクタ設定)*

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

    Queue url (キュー URL)

    次の形式のキュー URL - ​https://sqs.region.amazonaws.com/account-id/queue-name

    [General (一般)]​ グループの他の項目

    デフォルト値

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

    次に例を示します。

    sns-sqs-config
  9. [Configuration XML (設定 XML)]​ タブを選択して、対応する XML を表示します。

    <sqs:receivemessages
      doc:name="Amazon SQS (Streaming)"
      queueUrl="https://sqs.us-east-1.amazonaws.com/123456789012/queue-url"
      config-ref="Amazon_SQS_Configuration"/>
  10. Amazon SQS Connector の後に ​Logger​ スコープを追加して、Mule コンソールの ​Receive​ 操作で渡されるデータを出力します。​Logger​ を次のように設定します。

    パラメーター

    Display Name (表示名)

    Display Message​ または別の名前

    Message (メッセージ)

    Received Message: #[payload]

    Level (レベル)

    INFO

  11. プロジェクトを保存します。

プロジェクトを Mule アプリケーションとして実行する手順は、次のとおりです。

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

  2. Web ブラウザーを開き、URL ​http://localhost:8081/​ を入力して応答を確認します。

    ロガーには、ブラウザーのパブリッシュされたメッセージ ID と、Mule コンソールの受信メッセージが表示されます。

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

このユースケース例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを XML エディターに貼り付けます。必要に応じて、環境に合わせて値を変更します。

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

<mule xmlns:sqs="http://www.mulesoft.org/schema/mule/sqs"
	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: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/sns http://www.mulesoft.org/schema/mule/sns/current/mule-sns.xsd
http://www.mulesoft.org/schema/mule/sqs http://www.mulesoft.org/schema/mule/sqs/current/mule-sqs.xsd">
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config">
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<sns:config name="Amazon_SNS_configuration" doc:name="Amazon SNS configuration">
		<sns:basic-connection accessKey="EXAMPLEACCESSKEY" secretKey="EXAMPLESECRETKEY" />
	</sns:config>
	<sqs:config name="Amazon_SQS_Configuration" doc:name="Amazon SQS Configuration">
		<sqs:basic-connection accessKey="EXAMPLEACCESSKEY" secretKey="EXAMPLESECRETKEY"
		testQueueArn="arn:aws:sqs:us-east-1:123456789012:QueueName"/>
	</sqs:config>
	<flow name="sns-connector-exampleFlow">
		<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/"/>
		<sns:publish doc:name="Publish" config-ref="Amazon_SNS_configuration"
		topicArn="arn:aws:sns:us-east-1:123456789012:TopicName"
		subject="Testing publish to queue"
		messageStructure="JSON">
			<sns:message><![CDATA[#['{
	"default": "Hello World!"
}']]]></sns:message>
		</sns:publish>
		<logger level="INFO" doc:name="Logger" message="Message: #[payload]"/>
	</flow>
	<flow name="sns-connector-exampleFlow1">
		<sqs:receivemessages doc:name="Amazon SQS (Streaming)" config-ref="Amazon_SQS_Configuration"
		queueUrl="https://sqs.us-east-1.amazonaws.com/123456789012/queue-url"/>
		<logger level="INFO" doc:name="Logger" message="Received Message: #[payload]"/>
	</flow>
</mule>