본문 바로가기

Ops/Deploy

deploy script - (aws) cloudfront invalidation (cdn purge)

반응형

deploy script - (aws) cloudfront invalidation (cdn purge)

 

 

 

 

■ 설명

AWS 환경에서 cloudfront를 이용하여 CDN 구성을 할 경우 invalidation (무효화, purge) 를 코드로 진행하는 방법입니다.

참고로 invalidation은 최대 10분 이상도 소요될 수 있습니다. (같은 파일을 진행해도 랜덤하게 시간이 달라집니다.)

 

 

■ 로직

1. cloudfront api를 이용하여 invalidation 실행

2. processing을 체크하고, 완료되면 done 출력

 

 

■ 코드

#환경에 맞게 수정
- invalidation_name
- env
#!/bin/bash

export INVALIDATION_ID=$1
export INVALIDATION_PATH=$2
export INVALIDATION_NAME=cloudfront-mkdir-chandler

export ENV=dev


echo ""
echo "+------------------------------------------------------------------------------------+"
echo "| Invalidation for Client                                                            |"
echo "| Target: s3://${INVALIDATION_NAME}${INVALIDATION_PATH}                              |"
echo "| Env: ${ENV}                                                                        |"
echo "+------------------------------------------------------------------------------------+"
echo ""


# check variable empty
if [ "${INVALIDATION_ID}" = "" ]; then
    echo "empty distribution-id options"
    exit 1
fi
 
if [ "$INVALIDATION_PATH" = "" ]; then
    echo "empty paths options"
    exit 1
fi

# invalidation execution
aws cloudfront create-invalidation --distribution-id ${INVALIDATION_ID} --paths "${INVALIDATION_PATH}" > /dev/null

echo "invalidataion s3://${INVALIDATION_NAME}${INVALIDATION_PATH} started"
echo ""
echo "check status"

# check progressing
while :
do
    CHECKSTATUS=`aws cloudfront list-invalidations --distribution-id ${INVALIDATION_ID} | grep Status | awk -F \" '{print  $4}' | grep InProgress | wc -l`
    if [ $CHECKSTATUS = '0' ];then
        break
    fi

    echo "    - InProgress,,"
    sleep 10
done


echo ""
echo "invalidataion s3://${INVALIDATION_NAME}${INVALIDATION_PATH} complete!"
echo ""
echo ""

# end

 

 

 


by mkdir-chandler


 

 

 

 

 

728x90
반응형