2016-07-10 13 views
1

DynamoDB UpdateItemにオプションを渡して、存在しない項目のUpdateItemを呼び出すことができなくなる可能性がありますか?既存のDynamoDBリソースに対してのみUpdateItemを許可する方法はありますか?

現在、UpdateItemは、パーティションキーが存在しない場合、新しいアイテムを作成します。この特定の状況ではなく、エラーが欲しいです。

もちろん、私はupdateItemの前に取得することができ、存在する場合のみupdateItemを実行することはできますが、それはパフォーマンスが悪く/より面倒です。

+0

パフォーマンスが低下しますか?これをテストしましたか?私は自分自身を知らないが、私は好奇心が強い。 – arjabbar

+1

疑いはありません。私の場合は、少なくとも1回は往復に加えて、Apiゲートウェイを1回は通ることはありません。そのdynamodbの上に条件付きputを実行することが可能である可能性が高いとしたら、getをプラスして別々に置くことができますが、最後の部分は今の前提です。 –

答えて

1

ConditionExpressionを使用して条件付き更新を行うことができます。

条件付き更新APIは非常に強力ですが、あなたのケースでは、更新しようとしているアイテムが項目のパーティションキー(および範囲の条件式を使用して終了するかどうかを確認する条件式を作成する必要がありますあなたのテーブルが1つを使用する場合はキー)。

プログラミング言語を指定していないため、開始するには最適な場所はthe documentationです。

+0

ああ、それはかなり強力です! –

+0

PHPで使用されるConditionExpression構文とは何ですか? –

0

より正確には、ConditionExpression: "attribute_exists(<your key attribute name>)"を設定する必要があります。

キー関連アイテムが存在しない場合は失敗します。 - DynamoDBはキー関連アイテムを検索し、見つからず、attribute_existscondition functionコールがすべて失敗します。

反対に、アイテムが存在する場合、常にキー属性を持つため、attribute_exists(key)はtrueを返します。

関連する問題