greengrassを使ってlambda関数を動かしてみました。AWSのドキュメントがわかりやすいです。
IoT Core
Greengrassの前にIoT Coreについて理解した方がいいと思います。GreengrassはIoT Coreの機能の一部。
こちらの記事をみていると、AWS IoTにメッセージを送るのはRaspberry pi側にコードを書いている。Greengrassを使う場合はLambda内にAWS IoTにメッセージを送るコードを書いておいて、Lambda自体をRaspberry piにデプロイして実行するようにします。そうすることで、速度改善できたり、コードの更新をするときに一括で可能になったりします。GreenGrassについてはこのような記載があります。
AWS IoTの拡張的機能
エッジ端末への遠隔デプロイを可能にする
エッジ側にLambdaの機能をもたせられる
Lambdaのイベントドリブンな関数機能をエッジ端末に遠隔で付与
環境構築
AWSのGreengrassのチュートリアルが非常によくできているので、そのとおりに進めれば問題ないです。
Lambda関数をエッジ用に設定
メッセージの送信
AWS IoT⇨Lambdaの方向にもメッセージを送る事はできるので、双方向の通信が可能です。
デバッグのコツまで書いてくれています。
保存
ラズパイのカメラでとったものをS3に保存。
枝刈り
エッジデバイスで動かすためには軽量化もしなくてはいけないので、その枝刈りをしたり精度を犠牲にして軽いmodelを選んだりします。重みの枝刈り。不要な重みを削っていくことですね。