WriteRecords - Amazon Timestream

Amazon Timestream for LiveAnalytics に類似した機能をご希望の場合は Amazon Timestream for InfluxDB をご検討ください。リアルタイム分析に適した、シンプルなデータインジェストと 1 桁ミリ秒のクエリ応答時間を特徴としています。詳細については、こちらを参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

WriteRecords

Timestream に時系列データを書き込むことができます。システムに挿入する単一のデータポイントまたはデータポイントのバッチを指定できます。Timestream には、データベースへの書き込みを呼び出すときに指定したデータポイントのディメンション名とデータ型に基づいて、Timestream テーブルの列名とデータ型を自動検出する柔軟なスキーマが用意されています。

Timestream は、結果整合性のある読み込みセマンティクスをサポートしています。つまり、データのバッチを Timestream に書き込んだ直後にデータをクエリする場合、クエリ結果には最近完了した書き込みオペレーションの結果が反映されていない可能性があります。また、結果に古いデータが含まれている可能性もあります。少し時間が経ってからクエリリクエストを繰り返すと、結果で最新のデータが返されます。サービスクォータが適用されます

詳細については、 コードサンプルを参照してください。

アップサート

WriteRecords リクエストで Version パラメータを使用して、データポイントを更新できます。Timestream は、各レコードのバージョン番号を追跡します。Version は、リクエストのレコードに対して指定されていない場合、デフォルトで 1 になります。Timestream が既存のレコードのメジャー値とその Version を更新するのは、そのレコードの Version 番号がより大きい書き込みリクエストを受信した場合です。メジャー値が既存のレコードの値と同じである更新リクエストを受信した場合、Timestream は Version の既存の値より大きければ Version を更新します。データポイントは、Version の値が増加し続ける限り、何度でも更新できます。

例えば、リクエストで Version を指定せずに新しいレコードを書き込むとします。Timestream はこのレコードを保存し、Version1 に設定します。ここで、このレコードを別のメジャー値を持つ同じレコードの WriteRecords リクエストで更新しようとしますが、以前と同様に Version を指定しないとします。この場合、更新されたレコードのバージョンが 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 を使用する方法の詳細については、以下を参照してください。