1. 개요

  AWS DynamoDB는 Backup 기능이 제공이 된다.

 하지만 우리의 Seoul 리젼에서는 제공이 되지 않아서,

 Backup기능을 CLI와 코딩으로 구현하는데, DynamoDB Table 의 데이터를 전체 삭제하는 로직이 필요하다.

 그래서 이번에 작성한 로직 중에서, Truncate 하는 로직을 가져와 봤다.

 

 

2. 어떻게 사용합니까?

 Linux 환경에서 CLI와 함께 사용을 하였기에,
 Bash 로 작성하였다.
 
 구글링을 하면 다양한 스크립트가 나오는데, 모두 테스트해보니 안되는 것이나 json으로 추가로 데이터 파일을 만들어야 하는 경우가 허다했다.
 아래의 스크립트는 일본의 누군가가 만든 것인데, 동작이 아주 잘되기에 가져왔다.
 
 아주 일부 내용은 수정하였다.
 
#!/bin/sh
TABLE_NAME=$1
P_KEY=$2
S_KEY=$3
REGION=ap-northeast-2
TRUNCATE_LIST=/tmp/truncate.lst_$(date +%s)

if [ -z "$TABLE_NAME" ] || [ -z "$P_KEY" ]; then
        echo "truncate_dynamodb.sh [Table Name] [Partition Key] [Sort Key(Optional)]"
        exit 1;
fi

KEY_LIST="$P_KEY: .$P_KEY"

if [ -n "$S_KEY" ]; then
        KEY_LIST="$KEY_LIST, $S_KEY: .$S_KEY"
fi

echo "Key is '$KEY_LIST'"

aws --region ap-northeast-2 dynamodb scan --table-name $TABLE_NAME | jq -c ".Items[] | { $KEY_LIST  }" > $TRUNCATE_LIST

while read LINE
do
        aws --region $REGION dynamodb delete-item --table-name $TABLE_NAME --key "$LINE"
done < $TRUNCATE_LIST

rm $TRUNCATE_LIST