sshログイン時にAWSの料金を表示させる
この記事はShell Script Advent Calendar 2017の記事です。
個人でAWSのようなクラウドサービス使ってると、クラウド破産しないかドキドキしませんか?
僕は怖いのでコンソールで確認をしてましたが、めんどくさくなってきたので端末にログインしたときに料金を表示させようと思いました。
前提
手順
まず以下のようなシェルを作ります。
#!/bin/bash # 超えたくない「月の料金(ドル)」を指定 threshold=1 billing_file_path=/tmp/now_billing now_date=$(date +%Y%m%d) test -e ${billing_file_path} || mkdir -p ${billing_file_path} if [ ! -e "${billing_file_path}"/"${now_date}" ]; then # get billing billing_json=$(aws cloudwatch get-metric-statistics \ --region us-east-1 \ --namespace 'AWS/Billing' \ --metric-name EstimatedCharges \ --start-time "$(date -d '1 days ago' +%FT%TZ)" \ --end-time "$(date +%FT%TZ)" \ --period 86400 \ --statistics 'Average' \ --dimensions 'Name=Currency,Value=USD') # save echo -n "${billing_json}" | jq -r '.Datapoints[].Average' > "${billing_file_path}"/"${now_date}" fi echo "================================" billing=$(cat "${billing_file_path}"/"${now_date}") echo -n "Billing(${now_date}): " if [ "$(echo "${billing} > ${threshold}" | bc)" -eq 1 ]; then echo -e "\e[31m\$${billing}\e[m" /usr/games/cowsay "超えちゃってるよ!?" else echo -e "\$${billing}" fi echo "================================"
次に、/etc/motd
でログイン時にメッセージを表示させます。
rm -f /etc/motd ln -s /var/run/motd /etc/motd mkdir /etc/update-motd.d # 上記シェル vim /etc/update-motd.d/01-now-billing chmod +x /etc/update-motd.d/01-now-billing
これでsshログインしてみると…
しきい値を超えてない場合
超えてる場合
ログイン後、現在の料金と設定した料金のしきい値が超えていないか表示できるようになりました。
わかりやすい!
最後に
今回はAWSでやりましたが、なんにでも応用できると思いますので
毎回確認することで安心感を得たいなにかがあったらぜひやってみましょう!
では!