Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

Amazon SNS メッセージング API の使用法

インターシステムズでは、Amazon Simple Notification Service (SNS) を使用してメッセージを公開するために使用できる API を提供しています。コードは、クライアントを作成した後、メッセージを送信する、そのクライアントのメソッドを呼び出すことにより、パブリッシャとして機能します。InterSystems IRIS も、Amazon SNS トピックを作成するメソッドと削除するメソッドを提供しています。

Amazon SNS API は、他のメッセージング・プラットフォームと共有する共通のメッセージング・クラスを基本としています。このページでは、このような共通のクラスで確立されているワークフローに対し、プラットフォーム固有で発生するバリエーションについて説明します。

インターシステムズでは、ここで説明している API のほか、相互運用プロダクションの過程で Amazon SNS へのメッセージの送信に使用できる専用のクラスを用意しています。

Amazon SNS への接続

Amazon SNS との接続を作成するには以下の手順に従います。

  1. 設定オブジェクトを作成します。そのためには、%External.Messaging.SNSSettingsOpens in a new tab のインスタンスを作成し、そのプロパティを以下のように設定します。

    • credentialsFile :Amazon Simple Storage Service (S3) の認証情報ファイルが保存されている場所を指定した文字列。

    • accessKey :使用している Amazon S3 アクセス キーを記述した文字列。credentialsFile を指定していれば、このプロパティの設定は不要です。

    • secretKey :使用している Amazon S3 秘密鍵を記述した文字列。credentialsFile を指定していれば、このプロパティの設定は不要です。

    • sessionToken :使用している Amazon S3 セッション・トークンを記述した文字列。セッション・トークンを記述した credentialsFile を指定していれば、このプロパティの設定は不要です。

    • region :Amazon S3 のリージョンを指定した文字列。

    例えば以下のようにします。

     Set settings = ##class(%External.Messaging.SNSSettings).%New()
     Set settings.credentialsFile = "~/.aws/credentials/cred.ini"
     Set settings.region = "us-east-1"
    
  2. メッセージング・クライアント・オブジェクトを作成します。そのためには、汎用 %External.Messaging.ClientOpens in a new tab クラスの CreateClient() メソッドを呼び出し、設定オブジェクトを 1 番目の引数として渡します。例えば以下のようにします。

     Set client = ##class(%External.Messaging.Client).CreateClient(settings, .tSC)
     If $$$ISERR(tSC) { //handle error scenario }
    

    このメソッドからは、参照渡しでステータス・コードが 2 番目の引数として返されます。コードでは、このステータスを確認したうえで処理を継続する必要があります。

    settings オブジェクトは %External.Messaging.SNSSettingsOpens in a new tab のインスタンスなので、返されるオブジェクト (client) は %External.Messaging.SNSClientOpens in a new tab のインスタンスです。

Amazon SNS パブリッシャ

InterSystems IRIS は、メッセージを作成する API メソッドを呼び出し、作成したメッセージを送信することにより、Amazon SNS パブリッシャとして機能できます。メッセージの送信先とするトピックをアプリケーションで作成する必要がある場合は、"トピックの操作" を参照してください。以下のフローでは、クライアント・オブジェクトを使用し、パブリッシャとして Amazon SNS を操作しています。

メッセージの作成

送信するメッセージを作成するには、%External.Messaging.SNSMessageOpens in a new tab オブジェクトの新しいインスタンスを作成します。つづいて、そのメッセージ・オブジェクトのプロパティを定義します。メッセージの送信先とするトピックの Amazon Resource Name (ARN) を topicARN プロパティで指定し、メッセージ本文を message プロパティで指定する必要があります。このメッセージには、必要に応じて subject を指定することもできます。

 Set topicARN = "arn:aws:sns:us-east-1:123456789012:quick-start-events"
 Set message = "MyMessage"
 Set subject = "EventNotification"

 Set msg = ##class(%External.Messaging.SNSMessage).%New()
 Set msg.topicARN = topicARN
 Set msg.message = message
 Set msg.subject = subject
メッセージの送信

作成したメッセージは、Amazon SNS クライアント・オブジェクトの SendMessage() メソッドを実行することにより、トピックに送信できます。例えば以下のようにします。

set tSC = client.SendMessage(msg)
if $$$ISERR(tSC) { //handle error scenario }

トピックの操作

InterSystems IRIS は、Amazon SNS トピックの作成と削除に使用できる API を提供します。

トピックの作成

トピックを作成するには、クライアント・オブジェクトCreateTopic() メソッドを呼び出します。このメソッドは、トピック名を引数として受け入れ、そのトピックの ARN を参照渡しで返します。例えば以下のようにします。

 Set topicName = "quick-start-events"
 Set topicARN = ""
 Set tSC = client.CreateQueue(topicName, .topicARN)

また、すべてのメッセージング・プラットフォームに共通の %External.Messaging.Client.CreateQueueOrTopic()Opens in a new tab メソッドを使用してトピックを作成することもできます。ただし、この一般的な方法では新しいトピックの ARN が返されません。トピックを削除する API メソッドとメッセージを送信する API メソッドでは、この ARN が必要です。CreateQueueOrTopic() を使用して作成したトピックで、API を使用してこれらのタスクを実行するには、そのトピックの ARN を手動で取得する必要があります。

トピックの削除

アプリケーションで Amazon SNS トピックの ARN を引数に指定してクライアント・オブジェクトの DeleteTopic() メソッドを呼び出すと、その Amazon SNS トピックを削除できます。

Set tSC = client.DeleteTopic(topicARN)

代わりに、すべてのメッセージング・プラットフォームに共通するメソッドを使用して、トピックを削除することもできます。詳細は、"%External.Messaging.Client.DeleteQueueOrTopic()Opens in a new tab" を参照してください。

クライアントの終了

Amazon SNS との通信を完了した InterSystems IRIS アプリケーションは、Close() メソッドを使用してクライアントを閉じる必要があります。例えば以下のようにします。

 Do:client'="" client.Close()
FeedbackOpens in a new tab