AWS IoT GreenglassをRaspberry Pi 3にインストールする

AWS IoTの醍醐味(?) Greenglassを使うためにRaspberry Pi 3にインストールしていきます。

Greenglassを使うとGreenglassに関連付けたAWS IoTデバイスとGreenglassの間でLambdaスクリプトを実行することができ、データを整形したりした上でAWSのDynamoDBなどのサービスに投入することができます。また、GreenglassとAWS間の通信が途絶した場合でも、途絶した情報をGreenglassが保存していて通信が回復した時点で保存しているデータをAWSに送信する機能も付いています。

で、早速インストールします。基本はAWSのドキュメントに従っていれば構築できま………せん!
この通りにセットアップしてデプロイするとこんなメッセージが出ます

[2018-01-08T23:36:54.857+09:00][ERROR]-Runtime execution error: unable to start lambda container. container_linux.go:259: starting container process caused "process_linux.go:345: container init caused \"process_linux.go:286: setting cgroup config for ready process caused \\\"no such directory for memory.limit_in_bytes\\\"\""

ふぁーーー!?もしかしたら先駆者がいるかもしれないので落ち着いてググり……いらっしゃいました

$ sudo nano /boot/cmdline.txt

として末尾に cgroup_memory=1 を追記して再起動すると解決します。

これでAWS ConsoleでGreenglass用のHello Worldをデプロイすると上手く行きます。

自動起動このページを参考にして作りました。

[Unit]
Description=greengrass daemon
After=network.target

[Service]
ExecStart=/greengrass/ggc/core/greengrassd start
Type=simple
RestartSec=2
Restart=always
User=root
PIDFile=/var/run/greengrassd.pid

[Install]
WantedBy=multi-user.target