0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita100万記事感謝祭!記事投稿キャンペーン開催のお知らせ

AWS IoTルールを使ってUnix時刻タイムスタンプをISO 8601形式(JST)に変換してDynamoDB に保存する方法

Last updated at Posted at 2025-01-13

はじめに

 AWS IoTルールを使って、Unix時刻のタイムスタンプがついているMQTTトピックを、ISO 8601形式(JST)のタイムスタンプに変換して、DynamoDBのソートキーに保存する方法を紹介する。基本的な方法は、公式チュートリアルを参照。ここでは、Unix時刻のタイムスタンプをISO形式に変換する方法を中心に説明する。

動作確認環境

  • AWS
    • IoT Core
    • IoT Rules
    • DynamoDB

前提

 JSONオブジェクトに以下のようにUNIX時刻のタイムスタンプが含まれているMQTTトピックがデバイスから、AWS IoT CoreのBrokerに送られているとする。

JSONオブジェクト例
{
   "device_id": "000001"
   "timestamp": "1736413662"
   "temperature": "25"
}

方法

DynamoDBの設定

 事前にデータを保存するためのDynamoDBテーブルを作成する。時刻でソートしたいので、DynamoDBのソートキーに、timestampを設定しておく。キー名は、MQTTトピックのタイムスタンプ(timestamp)と同じにする。パーティションキーは、別途デバイスIDなど指定しておく。

IoTルールの設定

 ルールアクションのソートキー、レンジキーのタイプ、レンジキーの値を以下のように設定する。

image.png

ポイント

レンジキーの値に、parse_time関数を使って、MQTTトピックのUNIX時間のtimestampを、ISO 8601形式(JST)に変換する。変換式は以下のようになる。

${parse_time("yyyy-MM-dd'T'HH:mm:ssZZ", timestamp, 'Asia/Tokyo')}

DynamoDBに以下のように、timestampが保存されていれば成功。

image.png

まとめ

 AWS IoTルールを使って、Unix時刻のタイムスタンプがついているMQTTトピックを、ISO 8601形式(JST)のタイムスタンプに変換して、DynamoDBのソートキーに保存する方法を紹介した。デバイスで良く利用されるUNIX時間は、直感的にわかりにくいので、DynamoDBへ保存する際に変換しておくと視認性が上がるので本方法が役立つ。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?