AWS

AWS Log EC2 to S3 .sh (이전 30일 치)

KK_Ryong 2024. 11. 1. 10:13

기존에 있는 로그 30일치 업로드 시 

 

#!/bin/sh

for day in {30..1}; do
    BASE_DT=$(date -d "$day days ago" +%Y-%m-%d)
    SOURCE_DIR=/app/server/was-tomcat-9.0.83/logs/
    S3_BUCKET=hm-shopby-logs
    S3_PATH=s3://$S3_BUCKET/was-access-log/year=${BASE_DT:0:4}/month=${BASE_DT:5:2}/day=${BASE_DT:8:2}
    UPLOAD_LOG=/app/aws-cli/util/log/was-access-log.$BASE_DT.log
    INST_ID=$(ec2-metadata -i | awk -F' ' '{print $2}')

    S3_FILE_LIST=()
    S3_LS_RESULT=$(/app/aws-cli/bin/aws s3 ls $S3_PATH/$INST_ID --profile happy | awk -F' ' '{print $4}' | awk -F'.' '{print "was-access-log."$2".log"}')
    for s3 in $S3_LS_RESULT; do
        S3_FILE_LIST+=($s3)
    done

    cd $SOURCE_DIR

    S3_LS_RESULT=$(ls was-access-log.$BASE_DT.log*)
    echo "[START]$(date '+%Y-%m-%d %H:%M:%S')" >> $UPLOAD_LOG
    for i in $S3_LS_RESULT; do
        IS_EQUAL=0

        for s3 in "${S3_FILE_LIST[@]}"; do
            if [[ "$i" == "$s3" ]]; then
                IS_EQUAL=1
                break
            fi
        done

        if [[ $IS_EQUAL == 1 ]]; then
            continue
        fi

        NEW_FILE=$INST_ID'-'$i
        /usr/bin/cp $i $NEW_FILE
        /usr/bin/tar cvzf ${NEW_FILE%.*}.tar.gz $NEW_FILE
        /app/aws-cli/bin/aws s3 cp ${NEW_FILE%.*}.tar.gz $S3_PATH/${NEW_FILE%.*}.tar.gz --profile happy 2>> $UPLOAD_LOG

        rm -rf $NEW_FILE
        rm -rf ${NEW_FILE%.*}.tar.gz
    done
    echo "[FINISH]$(date '+%Y-%m-%d %H:%M:%S')" >> $UPLOAD_LOG
done

'AWS' 카테고리의 다른 글

AWS Log EC2 to S3 .sh  (1) 2024.10.28
S3 비용 최적화  (0) 2024.07.19
Redis용 Amazon MemoryDB 구성  (0) 2024.03.07
AWS EC2 blue/green Deploy (신규 서비스 생성)  (0) 2023.10.12
ECS blue/green | jenkins  (0) 2023.09.18