Amazon Simple Notification Service
開発者ガイド (API バージョン 2010-03-31)

Amazon SNS での AWS SDK for Java の使用

SDK for Java には AmazonSNSClient というクラスがあります。このクラスを使用して Amazon SNS とやり取りすることができます。AWS SDK for Java のダウンロードの詳細については、「AWS SDK for Java」を参照してください。

AmazonSNSClient クラスには、基礎となる Amazon SNS クエリ API のアクションに対応するメソッドが定義されています(これらのアクションについては、『Amazon SNS API リファレンス』を参照してください)。メソッドを呼び出す場合、対応するリクエストオブジェクトと応答オブジェクトを作成する必要があります。リクエストオブジェクトには、実際のリクエストで渡す必要がある情報が含まれます。応答オブジェクトには、リクエストに対する応答で Amazon SNS から返される情報が含まれます。

たとえば、AmazonSNSClient クラスには、通知を発行できるトピックを作成する createTopic メソッドが用意されています。このメソッドは、基礎となる CreateTopic API アクションに対応します。CreateTopicRequest オブジェクトを作成して、createTopic メソッドで情報を渡します。

以下の import ステートメントが、用意されている Java サンプルで使用されています。

import com.amazonaws.services.sns.AmazonSNSClient; import com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.sns.model.CreateTopicRequest; import com.amazonaws.services.sns.model.CreateTopicResult; import com.amazonaws.services.sns.model.SubscribeRequest; import com.amazonaws.services.sns.model.PublishRequest; import com.amazonaws.services.sns.model.PublishResult; import com.amazonaws.services.sns.model.DeleteTopicRequest;

以下の例は、新しい Amazon SNS クライアントを作成する方法、使用する Amazon SNS エンドポイントを設定する方法、および新しいトピックを作成する方法を示しています。

注記

以下の例の一部では、getCachedResponseMetadata メソッドを使用して、以前に実行された正常な Amazon SNS リクエストのリクエスト ID をプログラムで取得する方法を示しています。通常、この作業は問題のデバッグに使用され、Amazon Web Services からサポートをリクエストするときに便利です。

トピックの作成

//create a new SNS client and set endpoint AmazonSNSClient snsClient = new AmazonSNSClient(new ClasspathPropertiesFileCredentialsProvider()); snsClient.setRegion(Region.getRegion(Regions.US_EAST_1)); //create a new SNS topic CreateTopicRequest createTopicRequest = new CreateTopicRequest("MyNewTopic"); CreateTopicResult createTopicResult = snsClient.createTopic(createTopicRequest); //print TopicArn System.out.println(createTopicResult); //get request id for CreateTopicRequest from SNS metadata System.out.println("CreateTopicRequest - " + snsClient.getCachedResponseMetadata(createTopicRequest));

この例を実行すると、Eclipse などの IDE のコンソール出力ウィンドウに次のように表示されます。

{TopicArn: arn:aws:sns:us-east-1:123456789012:MyNewTopic} CreateTopicRequest - {AWS_REQUEST_ID=93f7fc90-f131-5ca3-ab18-b741fef918b5}

TopicArn には、追加の操作で使用する文字列変数が割り当てられます。

String topicArn = "arn:aws:sns:us-east-1:123456789012:MyNewTopic";

次の例は、トピックに受信登録する方法、トピックに発行する方法、およびトピックを削除する方法を示しています。

トピックへのサブスクライブ

//subscribe to an SNS topic SubscribeRequest subRequest = new SubscribeRequest(topicArn, "email", "name@example.com"); snsClient.subscribe(subRequest); //get request id for SubscribeRequest from SNS metadata System.out.println("SubscribeRequest - " + snsClient.getCachedResponseMetadata(subRequest)); System.out.println("Check your email and confirm subscription.");

この例を実行すると、IDE のコンソール出力ウィンドウに次のように表示されます。

SubscribeRequest - {AWS_REQUEST_ID=9b7ff59a-f917-533a-a6bd-be4bf6df0acf} Check your email and confirm subscription.

トピックへの発行

//publish to an SNS topic String msg = "My text published to SNS topic with email endpoint"; PublishRequest publishRequest = new PublishRequest(topicArn, msg); PublishResult publishResult = snsClient.publish(publishRequest); //print MessageId of message published to SNS topic System.out.println("MessageId - " + publishResult.getMessageId());

この例を実行すると、IDE のコンソール出力ウィンドウに次のように表示されます。

MessageId - 9b888f80-15f7-5c30-81a2-c4511a3f5229

トピックの削除

//delete an SNS topic DeleteTopicRequest deleteTopicRequest = new DeleteTopicRequest(topicArn); snsClient.deleteTopic(deleteTopicRequest); //get request id for DeleteTopicRequest from SNS metadata System.out.println("DeleteTopicRequest - " + snsClient.getCachedResponseMetadata(deleteTopicRequest));

この例を実行すると、IDE のコンソール出力ウィンドウに次のように表示されます。

DeleteTopicRequest - {AWS_REQUEST_ID=067a4980-4e93-5bfc-b88c-0251415bc852}