AWS 잡다한 것들
4300 단어 timestanpsgotchasaws
AWS 문제
AWS 문제를 찾는 대로 강조 표시하겠습니다.
다이나모드
TTL 필드는 초 단위입니다.
dynamodb의 TTL 필드는 레코드 삭제 표시와 실제 삭제 사이에 유예 기간을 허용하므로 훌륭합니다. 즉, 레코드 작업을 마치면 TTL 필드를 미래의 시간으로 설정할 수 있으며 AWS 내부 메커니즘은 해당 시간이 지난 직후 특정 시점에서 레코드를 제거합니다.
잡았다:
TTL 필드는 Unix epoch의 초 단위 정수이며 dynamodb의 명시적 날짜 필드를 포함한 다른 모든 날짜는 ISO 날짜로 저장되며 Unix epoch의 마이크로초 단위로 내부에 저장됩니다. 이것은 Using DynamoDB Time to Live (TTL) 에 문서화되어 있습니다. 그러나 이러한 문제가 발생한 이유를 잊어버리기 쉽습니다.
해결 방법:
표준 날짜 라이브러리를 사용하여 TTL을 계산하고 정수로 변환한 다음 1000으로 나누어 밀리초를 초로 변환합니다.
예를 들어
import { DocumentClient } from 'aws-sdk/clients/dynamodb'
const dynamoDb = new DocumentClient()
const hoursInTheFuture = 24
const getFutureTimeInSeconds = () => {
const time = new Date()
const hours = time.getHours() + hoursInTheFuture
time.setHours(hours)
return Math.round(time.getTime() / 1000)
}
export const deleteInTheFuture = async (id) => {
const result = await dynamoDb.update({
TableName: 'myDynamoDbTable',
Key: {
id
},
UpdateExpression: 'SET ttl = :t',
ExpressionAttributeValues: {
':t': getFutureTimeInSeconds() //record will be deleted 24 hours from now
}
}).promise()
return result
}
Reference
이 문제에 관하여(AWS 잡다한 것들), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jonashdown/aws-gotchas-47kj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)