TTLに関するDynamoDBLocalの検証が不十分だった話とか

DynamoDBLocalでTimeToLiveが動かないって記事書いたんですが間違いでした。動きます。

申し訳ありません。

 

該当記事は修正してあります。

kdnakt.hatenablog.com

 

[何が間違っていたのか]

新機能 – TTL(Time to Live)機能を利用したDynamoDBアイテムの管理について | Amazon Web Services ブログ

指定する属性はDynamoDBのNumber型かつ、 UNIX時間でTTLの指定を行います。

UNIX時間、つまり、1970年1月1日午前0時0分0秒からの経過秒数とあるのに、自分のコードではミリ秒を指定していた、というザコいオチ。

 

秒数を使ったコードに修正して、DynamoDBLocalに対してコードを実行したら、期待するほど早くはないものの、一応指定秒数から数秒程度でデータにアクセスできなくなった。

 

GetItemResult自体は帰ってくるものの、そこからItemを取得できなくなり、ItemにアクセスしようとするとNPE。

GetItemResult res = dynamo.getItem(TABLE_NAME, item);
res.getItem().values();// NullPointerException

 

ちなみに、やはりLocalStackでは動かず。残念。

 

[まとめ]

公式ドキュメントはよく読みましょう。