Amazon SNSをコマンドラインから使う

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon SNSのコマンドラインツールを設定する

AWSからSNSのコマンドラインツールをダウンロードしてパスに設定します。

export EC2_HOME=~/dev/aws/ec2-api-tools-1.4.4.1/
export AWS_AUTO_SCALING_HOME=~/dev/aws/AutoScaling-1.0.39.0/
export AWS_ELB_HOME=~/dev/aws/ElasticLoadBalancing-1.0.12.0/
export AWS_CLOUDWATCH_HOME=~/dev/aws/CloudWatch-1.0.12.1/
export AWS_ELASTICACHE_HOME=~/dev/aws/AmazonElastiCacheCli-1.5.000/
export AWS_SNS_HOME=~/dev/aws/SimpleNotificationServiceCli-1.0.2.3/
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home/
export PATH=$PATH:$EC2_HOME/bin/:$JAVA_HOME/bin/:$AWS_AUTO_SCALING_HOME/bin/:$AWS_ELB_HOME/bin/:$AWS_CLOUDWATCH_HOME/bin/:$AWS_ELASTICACHE_HOME/bin/:$AWS_SNS_HOME/bin:

export EC2_PRIVATE_KEY=~/dev/key/pk-XXXXXXXXXXXXXXXXXXXXX.pem
export EC2_CERT=~/dev/key/cert-XXXXXXXXXXXXXXXXXXXXX.pem
export AWS_CREDENTIAL_FILE=~/dev/key/credential.txt

コマンド一覧です。

$ sns-cmd
Command Name                       Description                                            
------------                       -----------                                            
help                               
sns-add-permission                 Add a permission to a topic.                           
sns-confirm-subscription           Confirm a Subscription.                                
sns-create-topic                   Create a topic.                                        
sns-delete-topic                   Delete a topic.                                        
sns-get-topic-attributes           Get topic attributes.                                  
sns-list-subscriptions             List all subscriptions.                                
sns-list-subscriptions-by-topic    List subscriptions by topic.                           
sns-list-topics                    Lists all topics.                                      
sns-publish                        Publish a message to a topic.                          
sns-remove-permission              Remove permission from a topic.                        
sns-set-topic-attributes           Set topic attributes.                                  
sns-subscribe                      Subscribe to a topic.                                  
sns-unsubscribe                    Unsubscribe from a topic.                              
version                            Prints the version of the CLI tool and the API.        

    For help on a specific command, type '<commandname> --help'

Amazon SNSのトピックを作成する

トピックは、アクセスポイントとして機能します。作成は簡単です。ARNというのがアクセスポイントのリソース名を表しています。

$ sns-create-topic mytopic1 --region ap-northeast-1
arn:aws:sns:ap-northeast-1:771293814336:mytopic1

Amazon SNSのサブスクライブを設定する

サブスクライブで、トピックに届いたメッセージをどこに流すか設定します。サブスクライブがメールの場合、メールアドレスに確認が入りますので応答を忘れずに。

$ sns-subscribe arn:aws:sns:ap-northeast-1:771293814336:mytopic1 --protocol email --endpoint XXXXXXXX@gmail.com --region ap-northeast-1
Subscription request received.

Amazon SNSのパブリッシュをする

トピックに対してメッセージを送ります。メッセージ送信後にメールが届いていることを確認しました。

$ sns-publish arn:aws:sns:ap-northeast-1:771293814336:mytopic1 --message "hello" --region ap-northeast-1
f1c358dc-69e8-48c1-80d8-8937ae9ef6af

まとめ

Amazon SNSのコマンドラインツールで簡単にトピックの作成からサブスクライブとパブリッシュができることが分かりました!次は、Auto Scalingと組み合わせます。