での DynamoDB データソースのバージョニング AWS AppSync - AWS AppSync

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

での DynamoDB データソースのバージョニング AWS AppSync

AWS AppSync は現在、DynamoDB データソースでのバージョニングをサポートしています。競合の検出、競合の解決、同期操作には、Versioned データソースが必要です。データソースでバージョニングを有効にすると、 は自動的に次の AWS AppSync 処理を行います。

  • オブジェクトのバージョン管理メタデータを使用して項目を強化します。

  • Delta テーブルに AWS AppSync ミューテーションのある項目に加えられた変更を記録します。

  • 「廃棄」を使用して、ベーステーブル内の削除済み項目を、設定可能な期間保持します。

バージョニングされたデータソースの設定

DynamoDB データソースでバージョン管理を有効にする場合は、次のフィールドを指定します。

BaseTableTTL

「廃棄」を使用して削除済み項目をベーステーブルに保持する分数。廃棄とは、項目が削除されたことを示すメタデータフィールドです。項目を削除したときにすぐに除外されるようにする場合は、この値を 0 に設定できます。このフィールドは必須です。

DeltaSyncTableName

AWS AppSync ミューテーションのある項目に加えられた変更が保存されるテーブルの名前。このフィールドは必須です。

DeltaSyncTableTTL

差分テーブルに項目を保持する分数。このフィールドは必須です。

デルタ同期テーブルのログ記録

AWS AppSync は現在、、PutItemUpdateItemおよび DynamoDB オペレーションを使用したミューテーションの Delta Sync DeleteItem ログ記録をサポートしています。

AWS AppSync ミューテーションによってバージョン管理されたデータソース内の項目が変更されると、その変更のレコードは、増分更新用に最適化された Delta テーブルに保存されます。バージョン管理された他のデータソースに異なる Delta テーブル (タイプごとに 1 つ、ドメイン領域ごとに 1 つなど) を使用するか、 に 1 つの Delta テーブルを使用するかを選択できますAPI。プライマリキーの衝突を避けるためAPIs、複数の に 1 つの Delta テーブルを使用する AWS AppSync ことをお勧めします。

このテーブルに必要なスキーマは次のとおりです。

ds_pk

パーティションキーとして使用される文字列値。これは、基本データソース名と、変更が発生した日付の ISO 8601 形式 (例: Comments:2019-01-01) を連結することによって構築されます。

VTL マッピングテンプレートの customPartitionKeyフラグがパーティションキーの列名として設定されている場合 (「 AWS AppSync デベロッパーガイド」のDynamoDB のリゾルバーマッピングテンプレートリファレンス」を参照)、ds_pk変更の形式と文字列は、基本テーブルの新しいレコードにパーティションキーの値を追加することで作成されます。たとえば、Base テーブルのレコードのパーティションキー値が 1aで、ソートキー値が 2b の場合、文字列の新しい値は Comments:2019-01-01:1a になります。

ds_sk

ソートキーとして使用される文字列値。これは、変更が発生した時刻の 8601 ISO 形式、項目のプライマリキー、および項目のバージョンを連結することによって構築されます。これらのフィールドの組み合わせにより、Delta テーブルのすべてのエントリの一意性が保証されます (たとえば、時刻が 09:30:00、ID が 1a、バージョン 2 の場合、09:30:00:1a:2 になります)。

VTL マッピングテンプレートの customPartitionKeyフラグがパーティションキーの列名に設定されている場合 (「 AWS AppSync デベロッパーガイド」のDynamoDB のリゾルバーマッピングテンプレートリファレンス」を参照)、ds_sk変更の形式と文字列は、組み合わせキーの値をベーステーブルのソートキーの値に置き換えることで作成されます。上記の例を使用すると、Base テーブルのレコードのパーティションキー値が 1aで、ソートキー値が 2b の場合、文字列の新しい値は 09:30:00:2b:3 になります。

_ttl

差分テーブルから項目を削除する時刻のタイムスタンプをエポック秒単位で保存する数値。この値は、変更が発生したときに、データソースで設定された DeltaSyncTableTTL 値を加算することによって決定されます。このフィールドは DynamoDB TTL 属性として設定する必要があります。

Base テーブルで使用するように設定されたIAMロールには、Delta テーブルを操作するアクセス許可も含まれている必要があります。この例では、Comments という名前の基本テーブルと ChangeLog という名前の差分テーブルへの許可ポリシーが表示されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:000000000000:table/Comments", "arn:aws:dynamodb:us-east-1:000000000000:table/Comments/*", "arn:aws:dynamodb:us-east-1:000000000000:table/ChangeLog", "arn:aws:dynamodb:us-east-1:000000000000:table/ChangeLog/*" ] } ] }

バージョニングされたデータソースメタデータ

AWS AppSync は、ユーザーに代わってVersionedデータソースのメタデータフィールドを管理します。これらのフィールドを自分で変更すると、アプリケーションにエラーが発生したり、データが失われたりする可能性があります。これらのフィールドには、以下が含まれます。

_version

一定間隔で増加するカウンタ。項目に変更が発生するたびに更新されます。

_lastChangedAt

項目が最後に変更されたときのタイムスタンプをエポックミリ秒単位で保存する数値。

_deleted

項目が削除されたことを示すブール型の「廃棄」値。これは、削除された項目をローカルデータストアからエビクションするために、アプリケーションが使用できます。

_ttl

基になるデータソースから項目を削除する時刻のタイムスタンプをエポック秒単位で保存する数値。

ds_pk

差分テーブルのパーティションキーとして使用される文字列値。

ds_sk

差分テーブルのソートキーとして使用される文字列値。

gsi_ds_pk

グローバルセカンダリインデックスをパーティションキーとしてサポートするために生成される文字列値属性。VTL マッピングテンプレートで フラグcustomPartitionKeypopulateIndexFieldsフラグの両方が有効になっている場合にのみ含まれます (「 AWS AppSync デベロッパーガイド」のDynamoDB のリゾルバーマッピングテンプレートリファレンス」を参照)。有効にすると、基本データソース名と変更が発生した日付の ISO 8601 形式を連結して値が作成されます (例えば、基本テーブルの名前が Comments の場合、このレコードは として設定されますComments:2019-01-01)。

gsi_ds_sk

グローバルセカンダリインデックスをソートキーとしてサポートするために生成される文字列値属性。VTL マッピングテンプレートで フラグcustomPartitionKeypopulateIndexFieldsフラグの両方が有効になっている場合にのみ含まれます (「 AWS AppSync デベロッパーガイド」のDynamoDB のリゾルバーマッピングテンプレートリファレンス」を参照)。有効にすると、変更が発生した時刻の 8601 ISO 形式、ベーステーブルの項目のパーティションキー、ベーステーブルの項目のソートキー、および項目のバージョン (例えば3、時刻が の場合09:30:00、パーティションキーの値は 1a、ソートキーの値は 2b、および のバージョンは になります09:30:00:1a#2b:3) を連結して値が作成されます。

これらのメタデータフィールドは、基盤となるデータソース内の項目の全体的なサイズに影響します。アプリケーションの設計時に、バージョニングされたデータソースメタデータ用に 500 バイト + ストレージの最大プライマリキーサイズ AWS AppSync を予約することをお勧めします。このメタデータをクライアントアプリケーションで使用するには、GraphQL タイプとミューテーションの選択セットに、_version_lastChangedAt、および _deleted フィールドを含めます。