AWS CLIによるAmazon SNSのSMS通知トピック作成


基本的なことを交えて備忘録を記していきます。
用語の説明は他の方が説明してくださっているのでご参考ください。

環境

  • Windows 7 64bit

はじめに

AWS CLIをインストールし、aws configureで必要な設定をいろいろ事前にしといてください。

Amazon SNS

トピックの作成

> aws sns create-topic --name test
  • 名前は任意
  • ちなみに、マネジメントコンソールから作成する場合はトピック名に加えて表示名を作成できますが、aws sns create-topicで作成する場合はトピック名=表示名になります。

オプション

--cli-input-json--generate-cli-skeletonの説明は省きます。

オプション名 必須 説明
--name 文字列 作成したいトピックの名前。
:トピック名は大文字と小文字のASCII文字、数字、アンダースコア、ハイフンから構成されなければならず、また文字列長は1から256文字まででなければなりません。

サブスクライブ

> aws sns subscribe --topic-arn "arn:aws:sns:us-west-2:0123456789012:test" --protocol sms --notification-endpoint +8101234567
  • SMS通知を行いたい場合は、--protocolオプションにsmsを指定。
  • --notification-endpointに対象の電話番号を指定。

オプション

オプション 必須 説明
--topic-arn 文字列 作成したトピックARNを指定。
トピック名ではなく、ARNを指定しなければならないので注意。
--protocol 文字列 通知のプロトコルを指定。
プロトコルの種類の詳細は後述。
--notification-endpoint 文字列 任意 通知先のエンドポイントを指定。
プロトコル毎の対照は後述。

--protocolの種類とそれに対応する--notification-endpoint

プロトコル エンドポイント
http http://から始まる文字列
https https://から始まる文字列
email emailアドレス
email-json emailアドレス
sms SMSが可能な端末の電話番号
sqs Amazon SQS上のARN
application アプリケーションとしてAmazon SNSに登録してあるエンドポイントARN
lambda AWS Lambda関数のARN
  • --notification-endpointは、次のaws sns publishでも指定できるので任意なんだと思います。
  • トピックに通知先(サブスクリプション)を登録することをサブスクライブというそうですが、Pub/Subの文脈からすると個人的にちょっとまだしっくりきてないです。

パブリッシュ

> aws sns publish --topic-arn "arn:aws:sns:us-west-2:0123456789012:test" --message file://test-messagetxt

オプション

オプション 必須 説明
--topic-arn 文字列 --topic-arn、--target-arn、もしくは--phone-numberのうち一つは必須 発行したいトピック。
--target-arn 文字列 同上 トピックARNか、エンドポイントARN。
両方は不可。
--phone-number 文字列 同上 SMSメッセージを配信したい電話番号。
E.164形式での指定が必要。
--message 文字列 必須 本文。ヘルプ見るといろいろ書いてあります。詳細はaws sns publish helpで確認ください。
--subject 文字列 任意 プロトコルがemailの場合の件名。
--message-structure 文字列 任意 "json"のみが指定できる有効な値。"json"を指定すると、--messageオプションにjsonを指定でき、ここに書いてあるような、プロトコル毎に異なるメッセージの送信が実現できる
--message-attributes map 任意 map形式でメッセージ属性を指定。

雑感

Amazon SNSのSMS通知が制限にひっかかってしまい、それなりの数の送られるべきSMSメッセージが滞留しっぱなしになってしまったので、制限緩和申請適用後に一斉通知を楽にすべく色々調べました。
結果としてあまりSMSに限定されない内容になってしまいました・・・

ご指摘ございましたら是非コメントや編集リクエストお願いします。