DynamoDBでMySQLでのオートインクリメントのような事をするには、
数値カウント用のテーブルを作って、そこで一意の数値を採番し、
採番した数値をオートインクリメントの値として使用する。
- カウンタの管理用のテーブルを用意 (テーブル名、カラム名はなんでも良い)
- テーブル名 :
AtomicCounter
- パーティションキー名 :
CountNumber
- テーブル名 :
- カラム名に
Counter
は使用出来なかった
import boto3
def get_increment_number(counter_key):
dynamoDB = boto3.resource("dynamodb")
atom_cnt = dynamoDB.Table("AtomicCounter")
res = atom_cnt.update_item(
Key={
'CounterKey': counter_key
},
UpdateExpression='ADD CountNumber :incr',
ExpressionAttributeValues={
':incr': 1
},
ReturnValues="UPDATED_NEW"
)
return res['Attributes']['CountNumber']