WriteRecords - Amazon Timestream

Amazon Timestream for LiveAnalytics와 유사한 기능을 원하는 경우 Amazon Timestream for InfluxDB를 고려해 보세요. 간소화된 데이터 수집과 실시간 분석을 위한 10밀리초 미만의 쿼리 응답 시간을 제공합니다. 여기에서 자세히 알아보세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

WriteRecords

시계열 데이터를 Timestream에 쓸 수 있습니다. 시스템에 삽입할 단일 데이터 포인트 또는 데이터 포인트 배치를 지정할 수 있습니다. Timestream은 데이터베이스에 쓰기를 간접적으로 호출할 때 지정하는 데이터 요소의 차원 이름 및 데이터 유형을 기반으로 Timestream 테이블의 열 이름 및 데이터 유형을 자동으로 탐지하는 유연한 스키마를 제공합니다.

Timestream은 최종 일관성 읽기 시맨틱을 지원합니다. 즉, Timestream에 데이터 배치를 작성한 직후 데이터를 쿼리할 때 쿼리 결과에 최근에 완료된 쓰기 작업의 결과가 반영되지 않을 수 있습니다. 결과에는 일부 오래된 데이터도 포함될 수 있습니다. 잠시 후 쿼리 요청을 반복하면 결과가 최신 데이터를 반환합니다. 서비스 할당량이 적용됩니다.

자세한 내용은 코드 샘플을 참조하세요.

업서트

WriteRecords 요청에서 Version 파라미터를 사용하여 데이터 포인트를 업데이트할 수 있습니다. Timestream은 각 레코드와 함께 버전 번호를 추적합니다. 요청의 레코드에 지정되지 않은 경우 1은 기본적으로 Version으로 설정됩니다. Timestream은 기존 레코드에 대해 더 높은 Version 번호가 포함된 쓰기 요청을 수신하면 해당 레코드의 측정값과 Version을 함께 업데이트합니다. 측정값이 기존 레코드의 값과 동일한 업데이트 요청을 수신하면 Timestream은 기존 Version 값보다 큰 경우 Version을 계속 업데이트합니다. Version 값이 지속적으로 증가하는 한 원하는 횟수만큼 데이터 포인트를 업데이트할 수 있습니다.

예를 들어 요청에 Version을 표시하지 않고 새 레코드를 작성한다고 가정해 보겠습니다. Timestream은 이 레코드를 저장하고 Version1로 설정합니다. 이제 측정값이 다른 동일한 레코드의 WriteRecords 요청으로 이 레코드를 업데이트하려고 하지만 이전과 마찬가지로 Version을 제공하지 않는다고 가정해 보겠습니다. 이 경우 업데이트된 레코드의 버전이 기존 버전 값보다 크지 않으므로 Timestream은 RejectedRecordsException과 함께 이 업데이트를 거부합니다.

그러나 Version2로 설정하여 업데이트 요청을 다시 보내면 Timestream은 레코드 값을 성공적으로 업데이트하고 Version2로 설정됩니다. 다음으로, 동일한 레코드와 동일한 측정값이 있지만 Version3으로 설정된 WriteRecords 요청을 전송했다고 가정해 보겠습니다. 이 경우 Timestream은 Version3으로 업데이트합니다. 추가 업데이트 시 3보다 큰 버전 번호를 전송해야 하거나 업데이트 요청에 RejectedRecordsException이 수신됩니다.

구문 요청

{ "CommonAttributes": { "Dimensions": [ { "DimensionValueType": "string", "Name": "string", "Value": "string" } ], "MeasureName": "string", "MeasureValue": "string", "MeasureValues": [ { "Name": "string", "Type": "string", "Value": "string" } ], "MeasureValueType": "string", "Time": "string", "TimeUnit": "string", "Version": number }, "DatabaseName": "string", "Records": [ { "Dimensions": [ { "DimensionValueType": "string", "Name": "string", "Value": "string" } ], "MeasureName": "string", "MeasureValue": "string", "MeasureValues": [ { "Name": "string", "Type": "string", "Value": "string" } ], "MeasureValueType": "string", "Time": "string", "TimeUnit": "string", "Version": number } ], "TableName": "string" }

요청 파라미터

모든 작업에 공통되는 파라미터에 대한 자세한 설명은 공통 파라미터를 참조하세요.

요청은 JSON 형식으로 다음 데이터를 받습니다.

CommonAttributes

요청의 모든 레코드에서 공유되는 공통 치수, 차원, 시간 및 버전 속성을 포함하는 레코드입니다. 지정된 측정 및 차원 속성은 데이터가 Timestream에 작성될 때 레코드 객체의 측정 및 차원 속성과 병합됩니다. 차원이 겹치지 않거나 ValidationException이 발생합니다. 즉, 레코드에는 고유한 이름을 가진 차원이 포함되어야 합니다.

유형: Record객체

필수 여부: 아니요

DatabaseName

Timestream 데이터베이스의 이름입니다.

유형: 문자열

길이 제약 조건: 최소 길이는 3입니다. 최대 길이는 256.

필수 여부: 예

Records

각 시계열 데이터 포인트에 대한 고유한 치수, 차원, 시간 및 버전 속성을 포함하는 레코드 배열입니다.

타입: Record객체 배열

어레이 멤버: 최소 항목 수 1개. 최대수는 100개입니다.

필수 여부: 예

TableName

Timestream 테이블의 이름입니다.

유형: 문자열

길이 제약 조건: 최소 길이는 3입니다. 최대 길이는 256.

필수 여부: 예

응답 구문

{ "RecordsIngested": { "MagneticStore": number, "MemoryStore": number, "Total": number } }

응답 요소

작업이 성공하면 서비스가 HTTP 200 응답을 반송합니다.

다음 데이터는 서비스에 의해 JSON 형식으로 반환됩니다.

RecordsIngested

이 요청에서 수집된 레코드에 대한 정보입니다.

타입: RecordsIngested 객체

오류

모든 작업에 공통되는 오류에 대한 내용은 일반적인 오류 섹션을 참조하세요.

AccessDeniedException

이 작업을 수행할 권한이 없습니다.

HTTP 상태 코드: 400

InternalServerException

내부 서버 오류로 인해 Timestream이 이 요청을 완전히 처리할 수 없습니다.

HTTP 상태 코드: 500

InvalidEndpointException

요청된 엔드포인트가 유효하지 않습니다.

HTTP 상태 코드: 400

RejectedRecordsException

다음과 같은 경우 WriteRecords에서 이 예외가 발생합니다.

  • 동일한 차원, 타임스탬프 및 측정 이름을 가진 여러 레코드가 있지만 다음과 같은 중복 데이터가 있는 레코드:

    • 측정값이 다릅니다.

    • 요청에 버전이 없거나 새 레코드의 버전 값이 기존 값보다 작거나 같음

    이 경우 Timestream이 데이터를 거부하면 RejectedRecords 응답의 ExistingVersion 필드에 현재 레코드의 버전이 표시됩니다. 업데이트를 강제로 수행하려면 레코드 세트의 버전을 ExistingVersion보다 큰 값으로 설정하여 요청을 재전송하면 됩니다.

  • 메모리 스토어의 보존 기간을 벗어나는 타임스탬프가 있는 레코드입니다.

  • Timestream 정의 한도를 초과하는 차원 또는 측정이 있는 레코드입니다.

자세한 내용은 Amazon Timestream 개발자 안내서의 할당량을 참조하세요.

RejectedRecords

HTTP 상태 코드: 400

ResourceNotFoundException

작업이 존재하지 않는 리소스에 액세스하려고 했습니다. 리소스가 올바르게 지정되지 않았거나 상태가 ACTIVE가 아닐 수 있습니다.

HTTP 상태 코드: 400

ThrottlingException

사용자가 너무 많은 요청을 했으며 서비스 할당량을 초과했습니다. 요청에 병목 현상이 발생했습니다.

HTTP 상태 코드: 400

ValidationException

유효하지 않거나 잘못된 형식의 요청입니다.

HTTP 상태 코드: 400

참고

언어별 AWS SDK 중 하나에서 이 API를 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요.