RAK7246にBasic Stationを入れてAWS LoRaWAN NetworkServerに接続

自前で作る多分最安のLoRaWAN Gateway。プライベートでLoRaWANをいじる奇特な人にはいいかもしれない。

Raspberry Pi Zero WにLoRaなHATを載せたRAK7246を使う。

Take Your First Step into the IoT World with RAK7246 and RAK7246G – RAKwireless – IoT Made Easy

RAK7246GはGPS対応。ちゃんとやればClass Bもできるんだろうけれど、今回はClass Aのデバイスを接続します。

“RAK7246にBasic Stationを入れてAWS LoRaWAN NetworkServerに接続” の続きを読む

2022年1月18日 DyanmoDB、メタバース、アキネータ

最近全然更新ができていないので、それだったらばと、今日やったことを振り返りの意味も込めてつらつらとメモしていこうかと思う。いわゆるラーニングログにもなるだろうし。タイトルを考えるのも面倒だから、トピックのいくつかを抜き出している。

まぁ定期的に日記のようなものを初めてはすぐにやめるのが僕の通例で、今回もいつまで続くやらといったところだが、何も更新がないよりはいいだろう。一つのトピックについて溜まってきたなと思ったら、単元としてまとめて記事化するかもしれない。

“2022年1月18日 DyanmoDB、メタバース、アキネータ” の続きを読む

DynamoDBの多対多で隣接リストやった時の冗長性対策どうしよう

DynamoDBウキウキで初めて早速引っかかる問題の一つが多対多とn+1問題だと思うんだが、これについてはAWSのドキュメントに一応解決方法が乗っている。それについて書いた記事がこれ→「DynamoDBで多対多のテーブル設計 – 或る阿呆の記」。

隣接リストというデザインパターンで、初めて見た時はギョッとしたけど、実際やってみるとたしかに効率的にクエリが書ける。テーブルの構造についても、ああつまりRDBの中間テーブルに要素をもたせるとこうなるのか、ということで、個人的には納得もした。

ただこの方式は、冗長である。したがって、同一であるべきアイテムの情報に不整合が発生する可能性がある。それについて、どう対応したもんなんだろうか。

“DynamoDBの多対多で隣接リストやった時の冗長性対策どうしよう” の続きを読む

AWS Lambdaのロギングを考える

ロギングをどうするかで困っていた。AWS Lambdaでは、プリント出力したものがCloudWatchに保存されてとても便利なのだが、考えもなしにとりあえずポンポン入れていたところ、確かに情報はあるので追えないことはないんだが、地道に時間にあたりをつけて検索するなど、非常に泥臭い作業が要求され、なにかとつらかった。

APIのコール回数など集計したいという要件も出てきて、重い腰をあげてロギングについて頑張って考えました、という話。

“AWS Lambdaのロギングを考える” の続きを読む

AWS Lambdaをデプロイした時のダウンタイム

AWS Lambdaをデプロイした時、ダウンタイムは発生するのかについて。

直接答えとなる記述をドキュメントで見つけることができていないのだが、AWSフォーラムの開発者による回答を見るに、新旧両方のバージョンが動作する時間はあるものの、ダウンタイム自体は理屈のうえではなさそう。

“AWS Lambdaをデプロイした時のダウンタイム” の続きを読む

DynamoDB から DocumentClient で get() した StringSet型 の値を取り出す

AWS DynamoDBで使える型の一つに、StringSetがある。これは文字列の集合だ。JavaScriptでもES6以降にはSet型があるので、それと対応していればよいのだが、残念ながらしていない。

といっても、値を取り出すには、.values でアクセスすればよいだけ。というメモ。普段Python使っているのですぐに忘れる。

“DynamoDB から DocumentClient で get() した StringSet型 の値を取り出す” の続きを読む