DynamoDB에서 기본제공해주는 TTL(Time To Live)은 데이터를 자동으로 삭제해주는 기능이다
TTL을 epoch 시간 값으로 저장하면 그 시간이 지났을때, 48시간내에 해당데이터가 삭제된다
직접 해보면 이해가 더 잘된다.
먼저 test라는 테이블을 만들자
아직 데이터는 하나도 넣지않은상태이다
그다음 테이블 세부정보화면에
TTL(Time to live) 속성 에서 TTL 관리를 누른다
TTL 속성칸에 본인이 TTL을 걸고싶은 속성명을 입력하면된다
나는 deleteTime 을 입력했다
TTL이 적용됐다
이제 항목으로가서 항목만들기를 누르고 데이터를 넣어보자
TTL은 epoch 시간 값을 넣어야한다
나는 이렇게 데이터를 저장했다.
deleteTime 속성에 (TTL) 이 자동으로 붙었다 TTL 속성이라는 뜻이다
마우스를 대면 이렇게 데이터가 만료되는 시간을 알려준다,
createTime은 19년 12월 5일 1시 28분이고
deleteTime은 19년 12월 6일 1시28분이다 (1일후 만료)
나는 1일후에 데이터가 삭제되기를 원했기 때문에 현재시간+1일의 값을 deleteTime에 입력한것이다
이런식으로 해당 데이터가 삭제되길원하는 시간을 TTL속성에 입력하면 내가 따로 주기적으로 삭제할필요없이 자동으로 삭제된다
하지만 시간이 지나자마자 바로 칼같이 삭제되는게아니다, 환경에 따라 다르며 보통 48시간이내에 삭제된다고한다
값이 삭제되기전에는 읽기,스캔,쿼리등의 작업에서 값이 계속 표시되는 문제가있다
그렇기 때문에 공식문서에서는
만료 시간과 삭제 시간 사이에 지연이 있을 수 있기 때문에 항목을 쿼리할 때 항목이 만료될 수 있습니다. 읽기 요청을 실행할 때 만료된 항목을 볼 필요가 없으면 필터링해야 합니다. 이렇게 하려면 TTL(Time To Live) 만료 값이 epoch 형식의 현재 시간보다 클 경우에만 항목을 반환하는 필터 표현식을 사용합니다
이렇게 TTL속성값이 현재시간보다 클경우에만 반환하게끔 필터링하는것을 권장하고있다
당연한소리지만 TTL값이 없는 2번 데이터는 자동으로 삭제되지않고 계속남아있게된다
12/7 에 확인한 결과 TTL이 없는 2번데이터만 남아있었다. TTL이 만료된 1번데이터는 정상적으로 삭제되었다.
'개발 > AWS' 카테고리의 다른 글
AWS Lambda + RDS 연결하기 삽질.. (2) | 2020.02.17 |
---|---|
AWS Lambda 시간관련 에러 (0) | 2020.02.11 |
AWS Lambda 에러 대체뭘까.. (0) | 2019.11.11 |
EC2앞에 Network Load Balancer 추가하기 삽질 (0) | 2019.11.07 |
EC2 Node서버에서 Lambda 접근하기 + secretAccessKey 관리 (0) | 2019.10.18 |