基本的なことを交えて備忘録を記していきます。
用語の説明は他の方が説明してくださっているのでご参考ください。
環境
- 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に限定されない内容になってしまいました・・・
ご指摘ございましたら是非コメントや編集リクエストお願いします。
