AWSのboto3を使ってサーバのコマンド結果をメールに飛ばしてた。

AWSのboto3を使ってサーバのコマンド結果をメールに飛ばしてた。:


やりたいこと

  1. AWS上のEC2(Linux)で一定時間毎に自動的にコマンドを叩く。
  2. コマンドの標準出力をメールで飛ばす。ついでにSQSにも連携しとく。


方法

  • pythonのboto3を用いて、SNSでメールを飛ばす。
  • SQSへはSNSのサブスクリプションで連携する。


前提

  • EC2を立てる(ここでのサーバはRHEL系を想定してます。)
  • EC2にaws cli、python3、boto3のインストール。
  • aws configureでユーザ認証。
  • SNSでトピック及びサブスクリプション作成。
  • SQSでキュー作成。


コード

EC2上で以下のスクリプトを作成。

実行するコマンドやSNSのトピックはXXXXX表記ですので、適宜置き換えて下さい。あと、変数はテキトーです(笑)。

### 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) 
 
# 標準出力の場合 
tenpura = sos.stdout.read() 
 
# 文字コードを「UTF-8」に指定 
sushi = tenpura.decode("UTF-8") 
 
response = topic.publish( 
   Message = sushi) 
print(response) 
 
#ループ処理(ここでは1分毎に定期実行) 
while True: 
   response = topic.publish( 
      Message = sushi) 
   print(response) 
   time.sleep(60)  
 


参考にしたもの

以下参考にさせていただきました。ありがとうございました。

AWS SDKを使ってSNSにCPU使用率を送りつける

boto3 (AWS SDK for Python) メモ - Qiita

boto3を使ってAmazon SNSへpublishしてみた | DevelopersIO

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)