以下のような、オペレーションがUpdateのDynamoDB書き込み処理があるとします。
sample.py
import boto3
from boto3.dynamodb.types import TypeSerializer
client = boto3.client("dynamodb")
serializer = TypeSerializer()
options = {
"TransactItems": [
{
"Update": {
"TableName": "test-table",
"Key": {"pk": serializer.serialize("test")},
"UpdateExpression": "SET test = :test",
"ExpressionAttributeValues": {":test": serializer.serialize("xxx")},
}
}
]
}
client.transact_write_items(**options)
motoでDynamoDBをモック化し、上記ソースコードのテストを実行すると・・・
The "SET" section can only be used once in an update expression
エラーが出ました。
ちなみにオペレーションがPut、Deleteの時は特にエラーが出ませんでした。
解消法
motoのバージョンを5.0.11以上にアップデートする。
参考