やること
AmazonLinuxで、cron設定をして、AWSコマンドを実行させます。
前提としてそのコマンドのIAM RoleがEC2に対して必要です。
今回は詳しい内容までは書きません。
OS
Linux/Unix, Amazon Linux 2018.03
#cat /etc/os-release
NAME="Amazon Linux AMI"
VERSION="2017.09"
.
.
cronファイルの書き方
# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
こちらを参考にしました。
https://kb.iu.edu/d/afiz
実行させるファイルを作成
東京のEC2 Arnリストを出力するAWSコマンドを実行させてみる
!/bin/sh
/usr/bin/aws ec2 describe-instances --region ap-northeast-1 |grep Arn |awk -F \" '{print $4}' >> /root/ec2-file
ここで必ず、ファイルの実行を試してエラーにならないかチェックしておく
cron設定する
crontab -eで編集
動作テストしたいので毎分実行させておく
* * * * * bash /root/awscron
設定完了
ログ確認
tail -f /var/log/cron
で実行ログが確認できる
設定削除
要らなくなったら、設定の削除お忘れなく
crontab -rで設定削除
※
-r はcrontab -eで設定したもの全てを削除してしまうので、もう運用してるものであれば
-e でコメントアウトでOKです
Tips
crontab -eをrootユーザで行うと、/var/spool/cron/rootが編集される
そのため、この場合従来通りにユーザ指定は不要。
crontabによる編集ではない方法
上記の通り、オペミスするとcronファイルが消えたりするので、crontabを使用しない方法を記載
cron設定用のファイルは、/etc/cron.d/以下にファイルを作成する
例えば
/etc/cron.d/Crontest
* * * * * root sh /root/awscron
※ユーザ指定可能
これで、実行されていれば完了。
デフォルトで /var/spool/mail/rootに実行過程のログが吐き出される。
まとめ
今回はシンプルに設定することだけを記載しました。
今後もっと詳しくまとめてみます。
他、参考にしたサイト
cron - wikipedia
https://en.wikipedia.org/wiki/Cron
crontab -r の危険性
https://qiita.com/NACK/items/c0c0feda4e7a8030346f