1. ホーム
  2. amazon-web-services

[解決済み] DynamoDBテーブルの複数の項目を一度に更新する方法

2022-02-07 03:54:21

質問内容

DynamoDBを使用していますが、複数のレコードの特定の属性を更新する必要があります。要件を擬似言語で書くと、"update tableという更新を行いたい。 人物 set relationshipStatus = 'married' where personKey IN (key1, key2, key3, ...)" (personKeyがDynamoDBテーブルのKEYであると仮定して).

つまり、IN句を含む更新をしたいのですが、一括更新とでも言うのでしょうか。私は、以下のものを見つけました。 これ のリンクで、一括更新のような操作が存在するかどうかを明確に尋ねており、そこでの回答は「存在しない」でした。ただし、IN-clauseについては触れていない。その ドキュメント を見ると、ConditionalExpressionsでIN-clausesがサポートされていることがわかります(一度に100個の値を供給可能)。しかし、私はそのようなIN句が私の状況に適しているかどうかわからない。なぜなら、私はまだ必須のKEY属性(これは単一の値を期待するようだが、私は間違っているかもしれない)を供給する必要があり、私はそれが更新のたびに完全なテーブルスキャンを行うことを心配しているからである。

そこで質問ですが、複数のDynamoDBレコードの更新を同時に実現するにはどうしたらよいでしょうか?現時点では、私は各キーに対して1つずつ更新文を呼び出す必要があり、それは本当に間違っていると感じているように見えます...

どのように解決するのですか?

ご指摘の通り、DynamoDBは一括更新をサポートしていません。更新したいすべてのレコードのキーを問い合わせ、取得する必要があります。そして、そのリストをループして、1件ずつ更新していくことになります。