DeleteItem
DeleteItem リクエストマッピングドキュメントを使用すると、AWS の AppSync DynamoDB リゾルバーから DynamoDB への DeleteItem リクエストで、以下のように指定できます。
-
DynamoDB の項目のキー
-
処理が成功する条件
DeleteItem マッピングドキュメントの構造は次のとおりです。
{ "version" : "2018-05-29", "operation" : "DeleteItem", "customPartitionKey" : "foo", "populateIndexFields" : boolean value, "key": { "foo" : ... typed value, "bar" : ... typed value }, "condition" : { ... }, "_version" : 1 }
各フィールドの定義は以下のようになります。
DeleteItem フィールド
-
version -
テンプレート定義バージョン
2017-02-28と2018-05-29は現在サポートされています。この値は必須です。 -
operation -
実行する DynamoDB の処理。
DeleteItemDynamoDB の処理を実行するには、これをDeleteItemに設定する必要があります。この値は必須です。 -
key -
DynamoDB の項目のキー。DynamoDB の項目には、単一のハッシュキー、またはハッシュキーとソートキーが含まれています。これはテーブルの構造によって変わります。「型付き値」を指定する方法の詳細については、「型システム (リクエストマッピング)」を参照してください。この値は必須です。
-
condition -
DynamoDB 内に既に存在するオブジェクトの状態に基づき、リクエストが成功するかどうかを判断する条件です。条件を指定していない場合、
DeleteItemリクエストによって、現在の状態にかかわらず、項目が削除されます。条件の詳細については、「条件式」を参照してください。この値はオプションです。 -
_version -
項目の既知の最新バージョンを表す数値。この値はオプションです。このフィールドは競合の検出に使用され、バージョン管理されたデータソースでのみサポートされます。
customPartitionKey-
有効にすると、この文字列値は、バージョニングが有効になっているときにデルタ同期テーブルで使用される
ds_skおよびds_pkレコードの形式を変更します (詳細については、「AWS AppSyncデベロッパーガイド」の「競合検出と同期」を参照)。有効にすると、populateIndexFieldsエントリの処理も有効になります。このフィールドはオプションです。 populateIndexFields-
ブール値で、
customPartitionKeyと一緒に有効にすると、差分同期テーブル、具体的にはgsi_ds_pkとgsi_ds_sk列のレコードごとに新しいエントリが作成されます。詳細については、「AWS AppSyncデベロッパーガイド」の「競合検出と同期」を参照してください。このフィールドはオプションです。
DynamoDB から削除された項目が自動的に GraphQL プリミティブ型と JSON プリミティブ型に変換され、マッピングコンテキスト ($context.result) で参照できます。
DynamoDB の型変換の詳細については、「型システム (リクエストマッピング)」を参照してください。
レスポンスマッピングテンプレートの詳細については、「リゾルバーのマッピングテンプレートの概要」を参照してください。
例 1
以下は、GraphQL ミューテーション deleteItem(id: ID!) のマッピングテンプレートです。この ID に対応する項目がある場合は、削除されます。
{ "version" : "2017-02-28", "operation" : "DeleteItem", "key" : { "id" : $util.dynamodb.toDynamoDBJson($ctx.args.id) } }
例 2
以下は、GraphQL ミューテーション deleteItem(id: ID!, expectedVersion: Int!) のマッピングテンプレートです。この ID に対応する項目がある場合は、その version フィールドに expectedVersion が設定されているときにのみ削除されます。
{ "version" : "2017-02-28", "operation" : "DeleteItem", "key" : { "id" : $util.dynamodb.toDynamoDBJson($ctx.args.id) }, "condition" : { "expression" : "attribute_not_exists(id) OR version = :expectedVersion", "expressionValues" : { ":expectedVersion" : $util.dynamodb.toDynamoDBJson($expectedVersion) } } }
DynamoDB DeleteItem API の詳細については、「DynamoDB API のドキュメント」を参照してください。