翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
での DynamoDB データソースのバージョニング AWS AppSync
AWS AppSync は現在、DynamoDB データソースでのバージョニングをサポートしています。競合の検出、競合の解決、同期操作には、Versioned
データソースが必要です。データソースでバージョニングを有効にすると、 は自動的に次の AWS AppSync 処理を行います。
-
オブジェクトのバージョン管理メタデータを使用して項目を強化します。
-
Delta テーブルに AWS AppSync ミューテーションのある項目に加えられた変更を記録します。
-
「廃棄」を使用して、ベーステーブル内の削除済み項目を、設定可能な期間保持します。
バージョニングされたデータソースの設定
DynamoDB データソースでバージョン管理を有効にする場合は、次のフィールドを指定します。
-
BaseTableTTL
-
「廃棄」を使用して削除済み項目をベーステーブルに保持する分数。廃棄とは、項目が削除されたことを示すメタデータフィールドです。項目を削除したときにすぐに除外されるようにする場合は、この値を 0 に設定できます。このフィールドは必須です。
-
DeltaSyncTableName
-
AWS AppSync ミューテーションのある項目に加えられた変更が保存されるテーブルの名前。このフィールドは必須です。
-
DeltaSyncTableTTL
-
差分テーブルに項目を保持する分数。このフィールドは必須です。
デルタ同期テーブルのログ記録
AWS AppSync は現在、、PutItem
、UpdateItem
および 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 マッピングテンプレートで フラグ
customPartitionKey
とpopulateIndexFields
フラグの両方が有効になっている場合にのみ含まれます (「 AWS AppSync デベロッパーガイド」のDynamoDB のリゾルバーマッピングテンプレートリファレンス」を参照)。有効にすると、基本データソース名と変更が発生した日付の ISO 8601 形式を連結して値が作成されます (例えば、基本テーブルの名前が Comments の場合、このレコードは として設定されますComments:2019-01-01
)。 gsi_ds_sk
-
グローバルセカンダリインデックスをソートキーとしてサポートするために生成される文字列値属性。VTL マッピングテンプレートで フラグ
customPartitionKey
とpopulateIndexFields
フラグの両方が有効になっている場合にのみ含まれます (「 AWS AppSync デベロッパーガイド」のDynamoDB のリゾルバーマッピングテンプレートリファレンス」を参照)。有効にすると、変更が発生した時刻の 8601 ISO 形式、ベーステーブルの項目のパーティションキー、ベーステーブルの項目のソートキー、および項目のバージョン (例えば3
、時刻が の場合09:30:00
、パーティションキーの値は1a
、ソートキーの値は2b
、および のバージョンは になります09:30:00:1a#2b:3
) を連結して値が作成されます。
これらのメタデータフィールドは、基盤となるデータソース内の項目の全体的なサイズに影響します。アプリケーションの設計時に、バージョニングされたデータソースメタデータ用に 500 バイト + ストレージの最大プライマリキーサイズ AWS AppSync を予約することをお勧めします。このメタデータをクライアントアプリケーションで使用するには、GraphQL タイプとミューテーションの選択セットに、_version
、_lastChangedAt
、および _deleted
フィールドを含めます。