概要

AWSのGreengrassを使ってエッジにLambdaをデプロイし、実行させてみた。


背景と目的

AWSのGreengrassを使ってみようと思っていながらしばらく時間がなくトライしていなかった。少し時間ができたので使ってみる。


詳細

0.参考

https://aws.amazon.com/jp/greengrass/features/

https://aws.amazon.com/jp/greengrass/faqs/

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/what-is-gg.html

基本的なやり方は、上記のURLを参考に進めた。


1.Raspberry Piの設定

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module1.html

上記URLにある手順に従って実施したのだが、私の環境の場合、Memory cgroupという項目でDisabledが出た。そこで、

https://www.raspberrypi.org/forums/viewtopic.php?t=203128

に従って、/boot/cmdline.txtに以下を追記して再起動。

cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1


2.Greengrass Core SDKのインストール

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module2.html

上記URLに従って、作業を実施。

ただし、以下を追加で実施した。なぜかというと、はじめgreengrassdの起動がうまくいかず、トラブルシューティングを見ながら、権限の問題がありそうだったから。(ただし、これは本当に要るのか?はわからない。)

sudo chmod 755 /greengrass -R


3.Lambdaのデプロイ

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module3-I.html

次に、Lambda関数をデバイスにデプロイした。作業手順は上記URLに従っている。

コンソールのGreengrass groupで、正常に完了しましたという表示になればOK.


4.テスト

AWS IoTのコンソールで、テスト。

hello/worldトピックをサブスクライブした結果、定期的にエッジで実行されたLambda関数から、MQTTメッセージがパブリッシュされている。


b8b280c8

まとめ

AWSのGreengrassを使ってエッジにLambdaをデプロイし、実行させた。