DynamoDB TTL 변환기
DynamoDB TTL 값을 읽기 쉬운 날짜로 디코딩하거나, 날짜를 저장할 epoch 초로 변환하세요 — 값이 밀리초로 보이면 경고를 표시합니다.
시간은 UTC로 표시됩니다. TTL 삭제는 만료 후 약 48시간 이내에 이루어집니다.
DynamoDB TTL이 작동하는 방식
Time to Live (TTL)를 사용하면 DynamoDB가 추가 비용 없이 항목을 자동으로 만료시킵니다. 하나의 Number 속성을 TTL 속성으로 지정하며, 그 값은 초 단위의 Unix epoch 타임스탬프입니다. 백그라운드 프로세스가 각 항목의 TTL을 현재 시간과 비교하여 시간이 지난 항목을 삭제합니다 — 보통 48시간 이내에, 최선형(best-effort) 기준으로.
값이 초이기 때문에 밀리초 타임스탬프는 가장 흔한 TTL 버그입니다. JavaScript의 Date.now()에서 온 값은 1000배 크기 때문에 항목의 만료 시점이 먼 미래에 놓여 절대 제거되지 않습니다. 이 변환기는 단위를 자동으로 감지하고 그 경우를 표시하여 배포 전에 잡아낼 수 있게 합니다.
항목을 자동으로 만료시키는 것은 테이블 크기 산정의 한 부분입니다 — DynamoDB TTL 가이드 는 TTL 활성화, 값 백필, 읽기에서 만료된 항목 필터링을 다룹니다.
자주 묻는 질문
DynamoDB TTL 속성은 어떤 형식을 사용하나요?
DynamoDB Time to Live (TTL) 속성은 초 단위로 표현된 Unix epoch 타임스탬프 — 1970-01-01 UTC 이후의 초 수 — 를 담은 Number여야 합니다. DynamoDB는 그 값을 현재 시간과 비교하여 값이 과거가 되면 항목을 삭제합니다. 밀리초나 ISO 날짜 문자열이 아니라 반드시 초여야 합니다.
DynamoDB TTL이 항목을 삭제하지 않는 이유는 무엇인가요?
가장 흔한 원인은 초 대신 밀리초를 저장하는 것입니다. 1700000000000 같은 밀리초 값을 초로 읽으면 수만 년 뒤의 날짜가 되어 항목이 절대 만료되지 않습니다. 1000으로 나누세요. 또한 테이블에서 TTL이 활성화되어 있고 올바른 속성을 가리키는지 확인하세요 — 해당 속성에 값이 없는 항목은 절대 만료되지 않습니다.
TTL 시간이 지난 후 DynamoDB는 항목을 얼마나 지나서 삭제하나요?
DynamoDB는 보통 만료 시점으로부터 며칠 이내에 만료된 항목을 삭제합니다 — AWS는 최대 48시간, 부하가 높을 때는 그 이상의 최선형(best-effort) 기간을 명시합니다. 만료된 항목은 백그라운드 프로세스가 제거하기 전까지 읽기, Scan, Query에 여전히 나타날 수 있으므로, 즉시 숨겨야 한다면 TTL 속성으로 필터링하세요.
TTL 시간은 반드시 미래여야 하나요?
아니요. 이미 과거인 TTL 값을 쓰면 항목은 즉시 삭제 대상이 되어 다음 백그라운드 스윕에서 제거됩니다. TTL을 현재 epoch 초로 설정하는 것은 항목을 곧 삭제되도록 예약하는 흔한 방법입니다.