この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
今回はColdFusionを使って実際にAmazon SNSを使ってみたいと思います。機能としては簡単に言うとプッシュ通知をおこなってくれるサービスです。通知先としてHTTP/HTTPS、EMail、Amazon SMSとAmazon SQSの4種類がありましたが、Mobile Pushもサポートされ、AndoroidやiPhone等のモバイル端末にもプッシュ通知ができるようになりました。モバイル端末に対する記事はAndroidへのMobile Push記事やiPhoneへのMobile Push記事でご確認ください。
動作させた環境
- Windows7 64Bit
- ColdFusion10 デベロッパー版
- AWS SDK for java 1.5.3
Amazon SNSを使う
- トピックを作成するAPIをコールします(作成名称は tsukumaTOPIC で作成します。)
- Topic ARN を取得します。
- Topic ARN,Protocol,EndPointを設定します。
- 購読するためのAPIをコールします
利用したサンプルテンプレートは以下のものです( aws_sns_createtopic.cfm )
<cfcontent type="text/html; charset=utf-8">
<cfprocessingdirective pageEncoding="utf-8" suppressWhitespace="true">
<cflock scope = "Session" timeout = "30" type = "Exclusive">
<cfset aws_AK = #accessKeyId#> <!--- Your Access Key --->
<cfset aws_SK = #secretAccessKey#> <!--- Your Secret Key --->
</cflock>
<cfoutput>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Coldfusion + AWS SDK for java SNS CreateTopic and subscribe Sample</title>
</head>
<body>
<cfset awscreds = createObject("java","com.amazonaws.auth.BasicAWSCredentials").init(aws_AK,aws_SK)>
<cfset SNSClient = createObject("java","com.amazonaws.services.sns.AmazonSNSClient").init(awscreds)>
<!--- RegionをEUに指定 --->
<cfset sns_region = SNSClient.setEndPoint("https://sns.eu-west-1.amazonaws.com/")>
<!--- 初期化 --->
<cfset SNSCreateTopicRequest = createObject("java","com.amazonaws.services.sns.model.CreateTopicRequest").init()>
<cfset snstest = SNSCreateTopicRequest.setName("tsukumaTOPIC")>
<cfset sns_result = SNSClient.createTopic(SNSCreateTopicRequest)>
<cfset topic_arn = #sns_result.getTopicArn()#>
<cfset SNSsubscribeRequest = createObject("java","com.amazonaws.services.sns.model.SubscribeRequest").init()>
<cfset snstest = SNSsubscribeRequest.setTopicArn(topic_arn)>
<!--- 通知先をemailで設定する場合 --->
<cfset snstest = SQSsubscribeRequest.setProtocol("email")>
<cfset snstest = SQSsubscribeRequest.setEndpoint("プッシュ通知したいメールアドレスを指定")>
<cfset snstest = SNSClient.subscribe(SNSsubscribeRequest)>
<!--- 確認用にAmazon Resource Name(ARN)を表示させる --->
<cfdump var="#sns_result.getTopicArn()#"><br>
</cfoutput>
</cfprocessingdirective>
<cfsetting enablecfoutputonly="false">
</body>
</html>
まずManagement Consoleにログインしてトピックが作成されているかを確認します。
トピックは正しく作成できていることが確認できました。しかし、Subscription IDの部分がまだ PendingConfirmation になっています。subscribeすると通知先がEMailの場合、その通知先に下記のようなメールがAmazonから来ますので、メール文中の Confirm subscription をクリックして購読を確定させます。
Confirm subscription をクリックと下記のように確認画面が表示されます。
再度 Management Console に戻って確認してみると Subscription ID が設定されていることが確認できます。
これでsubscribe(購読)までの準備ができましたので、次回はトピックをpublishして指定したEMailアドレスにプッシュ通知が来る事を確認したいと思います。