やりたいこと
1.サーバのコマンド結果をAWSのSNSへ連携しメール通知とSQSへキューイング
2.SQSのキューイングおよび別サーバへポーリングしてコンソール上に通知
今回はAWSのSDK(Python)の一つである「boto3」を利用して、
「1.サーバのコマンド結果をAWSのSNSへ連携」するためのAWSまわりの準備とスクリプト作成。
「2.SQSのキューイングおよび別サーバへポーリングしてコンソール上に通知」する方法はこちら。
dokusho-now.hatenadiary.jp
事前準備
・SQSにキューを作成。
・SNSにトピックを作成。サブスクプションにEmailとSQSのキューを指定。
・AWSアカウントのユーザのアクセスキー作成。
・コマンドを実行するサーバにpython3やboto3等必要なパッケージをインストール。
※インストール方法についてはこちら。
dokusho-now.hatenadiary.jp
・EC2作成及び起動。
・サーバ上で「aws configure」を実行してユーザ認証。
コード
サーバ(EC2)からSNSのトピックへ定期通知(1分毎)するスクリプト。
### send_msg.py ###
import boto3
import subprocess
import shlex
import time
# SNSのトピックのARNを記載
sns = boto3.resource('sns')
topic = sns.Topic('arn:aws:sns:ap-northeast-1:XXXXXXXX:topic-name')
# 出力させたいコマンドを指定
cmd = "XXXXXXX"
sos = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE)
# 標準出力の場合
output = sos.stdout.read()
# 文字コードを「UTF-8」に指定
sushi = output.decode("UTF-8")
response = topic.publish(
Message = sushi)
print(response)
#ループ処理(ここでは1分毎に定期実行)
while True:
response = topic.publish(
Message = sushi)
print(response)
time.sleep(60)
参考資料
www.smokeymonkey.net
qiita.com
dev.classmethod.jp