LoginSignup
9
5

More than 5 years have passed since last update.

AWS Greengrassを利用する際の「センサー制御部」と「新しいLambda関数のデプロイ」について

Last updated at Posted at 2017-09-26

9/26のJAWS-UG IoT専門支部主催「AWS Greengrass Handson」を受講し終わったばかりの松下です

受講目的

  1. AWS Greengrass Coreからセンサー制御ってどうするの?
  2. Lambda関数の更新時の手順は?

この2点が前から気になっていました。運用するのに必須だからさ。

結論

AWS Greengrass についてわかった事 (たぶん)

AWS Greengrass Core (エッジデバイス上で動くコンテナプロセス、以下ggc) は、AWS IoT に対するMQTT Proxyサーバ的役割と、Lambda実行環境を持っている。

そのため

  • ggcを起動すると 8883 ポートでMQTT接続を待ち受ける
  • オフラインとなったとしても、センサー制御部プログラム側から見ると、AWS IoTに直接接続しているかの如く動作し続けることができる

AWS Greengrass Coreとセンサー制御部の関係

NEW(3/7): re:Invent 2017 で AWS Greengrass のアップデートがされ ローカルLambdaからローカルリソースへのアクセスも可能になりました

ggcやその上で動くLambdaからOSが持っているローカルリソース、例えば /dev/ttyUSB0 をRead/Writeすることはできない。(と推測される)

  • そのため、「センサーからReadする→AWS Greengrass SDKを使って)ggcにデータを投げる」というプログラムが必要。また、このプログラムが動くようにする環境が必須
  • また、上記プログラムの活動制御はggcは行ってくれないので、systemdのUnitを作る※、そのプログラム自体の更新の仕組みを考える、等が必須
    • ※ggc上のLambdaを更新する際、ggcのMQTT接続が切れる模様。そうなると、センサー制御部のプログラムは再接続の仕組みを持たせるか、supervisor的なところから再起動してもらう必要がある

Lambda関数の更新時の手順

ggc上で動くLambdaのイメージ

ハンズオンでの構成を再現すると

ThingShadowSensor.py
  (publishするように書く)
     ↓
(8883:sensing/data/Sensor-01)
     ↑
  (subscribeするように設定)
Lambda:cpuUsageChecker-01:VERSION
  (publishするように書く)
     ↓
(8883:$aws/things/Alert-01/shadow/#)
     ↑
  (subscribeするように書く)
ThingAlertSensor.py

わかりづらくてゴメン。何が言いたいかというと、Lambda関数だ~とか言わず、結局のところMQTTのトピックを介してパイプ処理をしている。そして、ggc内はスクリプトじゃなくてLambda関数を実行できるよ、という解釈で大丈夫。(たぶん)

そのため、この行先(=サブスクリプション)に、たとえば Lambda:cpuUsageChecker-01:NEW-VERSION が含まれるエントリー(トピックの組み合わせ)を作ってあげれば NEW-VERSION な Lambda関数が起動する。

手順は以下の通り;

  1. AWS Lambda関数を更新、発行する (新しいバージョンができる)
  2. クラウド側AWS Greengrassの「Lambda」メニューで、新しいバージョンのLambda関数を「追加」する (複数のバージョンが存在することになる)
  3. クラウド側AWS Greengrassの「サブスクリプション」メニューで、新しいバージョンのLambda関数を「ソース」や「ターゲット」とするエントリーを作成し、古いバージョンのLambda関数を利用しているエントリーを消す
    • 消さなくても良い。その代わり、トピックを調整する必要がある
  4. クラウド側AWS Greengrassの「グループ」メニューから、デプロイする

まだわからないこと

  • ggcに対してすっぴんのMQTTクライアント接続が可能なのか? (AWS Greengrass SDKはデカすぎる。センサー制御プログラムは極力小さくしたいはずだ!)

あとがき

市川さんはじめ、全国のJAWS-UG IoT 専門支部の方々、お疲れ様でしたー!!!

9
5
1

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
9
5