DynamoDB 데이터를 자동으로 정리

2195 단어 dynamodbamplifyaws
마지막 프로젝트 중 하나에서 2주 이상 된 사용자 데이터를 제거해야 했습니다.

반복 일정으로 실행되는 AWS Lambda 함수를 설정하려고 했습니다. 아이디어는 이 함수가 dynamoDB 테이블의 모든 날짜 필드를 스캔한다는 것이었습니다.

모든 항목을 스캔하고 오래된 항목을 필터링하는 데 비용이 많이 듭니다. 그런 다음 Dynamodb에서 일괄 처리를 통해 이러한 항목을 삭제하는 몇 가지 기능을 설정해야 합니다. 설정하는 것도 가능하지만 더 쉬운 방법이 있습니다.

DynamoDB의 TTL



Dynamodb 테이블에 날짜 필드가 있는지 확인하십시오. Unix epoch 시간 형식이 필요합니다. 이 필드에 이름을 지정할 수 있습니다.

다음 단계는 테이블에서 TTL 필드를 선택하는 것입니다. 불행히도 이는 AWS Amplify의 Cloudformation 템플릿에서 지원되지 않습니다. 이것은 설정하는 각각의 새 환경에서 수동 프로세스입니다.



https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/TTL.html

자바스크립트



이것이 JavaScript에서 이 Unix epoch 시간 형식을 달성하는 방법입니다.

const numWeeks = 2; // after how many weeks the data needs to be removed
const now = date;
now.setDate(now.getDate() + numWeeks * 7);
const ttl = Math.round(now.getTime() / 1000);

 const setTTL = {
      ttlFieldName: ttl
  }; 


AWS 증폭



API 스키마에서 다음과 같이 만들 수 있습니다.

type modelName
  @model{
  id: ID!
  ttl: Int!
}


업데이트



코드를 통해 이를 수행하는 것도 가능합니다. 이 패키지를 사용해 볼 수 있습니다: https://github.com/flogy/graphql-ttl-transformer

결론



귀하의 데이터는 반복 일정에 따라 지금(이 경우 2주 후) 자동으로 제거됩니다.

나에 대해서



저는 AWS Amplify의 열렬한 팬이며 이와 함께 제공되는 특정 주제에 대해 블로그를 작성합니다. 프레임워크, React of React Native와 관련하여 질문이 있으시면 언제든지 저에게 연락하실 수 있습니다.

트위터





새 블로그에 대한 업데이트를 원하십니까?
트위터에서 나를 팔로우하세요:

좋은 웹페이지 즐겨찾기