Linux
AWS
devops
インフラ

AWS EC2でオートスケール時にファイルをS3へ退避させる

OSのシャットダウン処理を追加します。

ここではログディレクトリの圧縮ファイルをS3へ転送します

1.インスタンス起動時に以下のシェルを実行する

転送先のS3パスと退避させたいローカルディレクトリを指定して下さい
sample.sh
cat << 'EOW' >/etc/init.d/instance-lifecycle
#!/bin/bash
# chkconfig: 2345 99 1
# description: インスタンス縮退時にログをS3に退避させる

S3_PATH='' #転送先のS3パス
DIR_NAME='' #退避させたいローカルディレクトリ
TIMESTAMP=`date +"%Y%m%d%H%M%S"`
INSTANCE_ID=`curl http://169.254.169.254/latest/meta-data/instance-id/`
COMPRESS_FILE_NAME="terminate_${INSTANCE_ID}_${TIMESTAMP}.tar.gz"

case "$1" in
  start)
    touch /var/lock/subsys/instance-lifecycle
    ;;
  stop)
    cd /home/ec2-user
    tar -zcvf ${COMPRESS_FILE_NAME} ${DIR_NAME}
    aws s3 cp ${COMPRESS_FILE_NAME} ${S3_PATH}
    rm -f /var/lock/subsys/instance-lifecycle
    ;;
  *) break ;;
esac
EOW

2.以下のコマンドでserviceに登録します

chmod 700 /etc/init.d/instance-lifecycle
chkconfig --add instance-lifecycle
chkconfig instance-lifecycle on
service instance-lifecycle start
参考

https://qiita.com/pinekta/items/a17b14e47ce3c737d85f