[memo] ShellでAWS S3にログデータを定期的に同期する

1 min read読了の目安(約1100字

承前

AWSコマンド(AWS cli)は事前インストールしておいてください

何する?

EC2に吐き出したログをS3バケットに同期しなきゃという使命感をもって対応する

何した?

EC2のlogを吐き出している場所に対して、S3にSyncをする処理を作る
同期の際は同日に反映されたファイルは上書きするていで良かったらしい(お現場事情)

#!/bin/sh
## s3_sync_log_api_details.sh $@
##

# initial parameter
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
export EC2_REGION=`curl -s http://[domain_name]/latest/meta-data/local-hostname | cut -d '.' -f2`
INSTANCE_ID=`curl -s http://[domain_name]/latest/meta-data/instance-id`
AWS_CONFIG_FILE="/root/.aws/config"

# sync detail directories
LOG_DIR="/var/log/[project_name]"

# sync s3 buckets
BUKET_NAME="s3://[s3_repository_domain]/api/log/"

# sync logging file into s3
aws s3 sync ${LOG_DIR} ${BUKET_NAME}

その次は?

定期的に同期をする必要があるので設定をする必要がありますね
今回は10分毎に同期させようという話

/10 * * * * cd /srv/www/[my_directory]/config/sync; sh ./s3_sync_log_api_details.sh

感想

このときLaravelを使っていたんですがなんでAtrisanを使わなかったんでしょうねっていう感じ。

でも実はしっかりとバッチで動かすってことをしてこなかったので経験としては非常によかったです。

この記事について

Qiitaから自分の記事を微修正のち移動しました

https://qiita.com/mashirou_yuguchi/items/e33342554cd9bcfdc94d