[基本操作]Amazon SNSをAWS CLIで操作する
こんにちは。池田です。Amazon Echoの置き場所は確保しましたが、肝心の招待メールは今日も届いていません。
はじめに
本記事は2011年08月30日に公開された記事Amazon SNSをコマンドラインから使うと、Amazon SNSとAuto Scalingを組み合わせるを現在(2017年11月)も同じ方法で実行できるのかを確認しつつ、詳細手順を記録したものです。まだAmazon SNSやAWS Command Line Interfaceをご利用されたことがない方を対象としております。予めご了承ください。 *Amazon SNSについては[基本操作]Amazon SNSでメールを送信する もご覧ください。
Amazon Command Line Interface(awscli)とは
Amazon Command Line Interface (awscli)はWEBブラウザを介さずにコマンドライン操作でAWSリソースを扱うことができるツールです。
awscliのインストール(MacOS編)
まずはawscliをインストールするための環境が整っているか確認します。
command: python --version Python 2.7.10
PythonはMacOSデフォルトのもので問題ありません。
command: which pip command:
awscliをコマンドラインでインストールするためのpipがないのでインストールします。
command: sudo easy_install pip Password: ... Finished processing dependencies for pip command: which pip /usr/local/bin/pip
いよいよawscliをインストールします。
command: pip install awscli ... OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/docutils' command: sudo pip install awscli ... OSError: [Errno 1] Operation not permitted: '/tmp/pip-eVuWYz-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info' command:
エラーが発生しました。こんなときは迷わずDevelopers.IOで先人の知恵を借ります。
【Tips】Mac OS X El CapitanでpipでのAWS CLIのインストール/アップデートが失敗するときの対処法
この記事にも掲載されているとおり、既にインストールされているsixの影響を受けているようですので、インストールオプションを指定します。
command: sudo pip install awscli --upgrade --ignore-installed six command: pip -V pip 9.0.1 from /Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg (python 2.7) command: aws --version aws-cli/1.11.188 Python/2.7.10 Darwin/16.7.0 botocore/1.7.46
無事にawscliがインストールできました。 続いてawscliを使うための初期設定を行っておきます。
command: aws configure
(このコマンドの詳細については公式サイトでご確認ください
コマンドの確認
無事にawscliがインストールできましたので、2011年の記事と同じsns-cmdコマンドが使えるか確かめてみます。
command: sns-cmd -bash: sns-cmd: command not found
どうやら同じコマンドはなくなっているようですので、awsコマンドのヘルプで確かめることにします。
command: aws help
ないですね...
command: aws sns help NAME sns - DESCRIPTION Amazon Simple Notification Service (Amazon SNS) is a web service that enables you to build distributed web-enabled applications. Applications can use Amazon SNS to easily push real-time notification messages to interested subscribers over multiple delivery protocols. For more information about this product see http://aws.amazon.com/sns . For detailed information about Amazon SNS features and their associated API calls, see the Amazon SNS Developer Guide . (省略)
ありました。sns-cmdというコマンドは2017年11月現在aws snsというコマンドに置き換わっているようです。 他のコマンドも当然置き換わっていることが推測されますので、それぞれ確かめておきます(内容の掲載は省略します)。
・トピックの作成に関するコマンドの確認
command: aws sns create-topic help
・サブスクライブの設定に関するコマンドの確認
command: aws sns subscribe help
・パブリッシュ操作に関するコマンドの確認
command: aws sns pablish help
トピックの作成からメールの送信まで
各操作コマンドを確認しましたので、以前(2011年8月)のコマンドと現在(2017年11月)のコマンドを比較しながら、それぞれの操作を行なっていきます。
・トピック作成 以前のコマンド: sns-create-topic mytopic1 --region ap-northeast-1 現在のコマンド: aws sns create-topic --name my-topic
command: aws sns create-topic --name topic_02 { "TopicArn": "arn:aws:sns:ap-northeast-1:986936546233:topic_02" }
マネジメントコンソールで確かめます。 topic_02 が表示されています。
・サブスクライブ作成 以前のコマンド: sns-subscribe arn:aws:sns:ap-northeast-1:771293814336:mytopic1 --protocol email --endpoint XXXXXXXX@gmail.com --region ap-northeast-1 現在のコマンド: aws sns subscribe --topic-arn arn:aws:sns:us-west-2:0123456789012:my-topic --protocol email --notification-endpoint my-email@example.com
aws sns subscribe --topic-arn arn:aws:sns:ap-northeast-1:hogehoge:topic_02 --protocol email --notification-endpoint mailto@example.com { "SubscriptionArn": "pending confirmation" }
コマンド内で指定したメールアドレスに確認のメールが届いていますので「Confirrm subscription」をクリックし承認します。 承認後、マネジメントコンソールを確認すると以下のようになっているはずです。
・パブリッシュ操作 以前のコマンド: sns-publish arn:aws:sns:ap-northeast-1:771293814336:mytopic1 --message "hello" --region ap-northeast-1 現在のコマンド: aws sns publish --topic-arn "arn:aws:sns:us-west-2:0123456789012:my-topic" --message file://message.txt
aws sns publish --topic-arn "arn:aws:sns:ap-northeast-1:hogehoge:topic_02" --message "test publish message1" { "MessageId": "hogefuga-102c-5362-ar4b-hoghogefuga" }
topic_02 でのメールが届きました。
どのコマンドもaws configureでデフォルトに指定したリージョンを使ってくれるので、各コマンドの主目的となるものを最後に入力するようになっています。今、何をしようとしているのかをコマンド入力の最初と最後で確かめられるので、間違いを防止できますね。
まとめ
本記事の作成を始めた当初は、冒頭の2つの過去記事で紹介している内容をひとつの記事でまとめようと考えていたのですが、思いのほか長くなってしまいましたので素直に2つの記事にわけてご紹介することにします。 次回はELB配下にEC2インスタンスを構築し、インスタンスの状態を変更させた際にメール通知をさせてみます。