見出し画像

【Part2】AWS Greengrassの特徴と環境構築

AWSでエッジコンピューティング環境を作る、Part2.です。実際に作っていきましょう

※ 下記記事を読んでおくと、わかりやすいと思います。

AWS IoT入門(Raspi接続編)
☑ サーバーレスアーキテクチャの要「Lambda」とはなにか

AWS IoT Greengrassとは?

めちゃくちゃざっくりいうとこんな感じ

AWS IoTの拡張的機能
エッジ端末への遠隔デプロイを可能にする
エッジ側にLambdaの機能をもたせられる

AWS IoT Coreを用いると、AWS側がメッセージブローカとして、ラズパイなどの端末デバイスと、AWSの他サービスを繋げるようになりました。これにより、データの可視化や分析をクラウド上で行えるようになったわけです。

しかし、この場合、AWS IoTにデータを送る部分は、端末デバイスの中でアクセスして書かなければいけませんでした。内部の処理を変えるために、いちいち遠方に出向いて、何百とあるデバイスをぬくもりある手作業で更新はやってられませんね。

画像1

そこで絶大な威力を発揮するのが、AWS Greengrassです。AWSにはLambdaというFaaSがあるわけですが、Lambdaのイベントドリブンな関数機能をエッジ端末に遠隔で付与できるわけです。

つまり何が言いたいかというと、Greengrassをインストールすれば、クラウド上で処理の変更を反映できるということです。わざわざローカルでの変更が必要なくなるのです。これは便利!導入しないわけにはいけませんね。

今回は、エッジ側(Raspberry Pi 3B)と、クラウド側の環境の構築までやってみます。

必要要件のチェック

REF : AWS IoT Greengrass の使用開始

今回はラズパイ3Bで進めていきます。3B+でも利用可能です。基本的にはデフォルトのラズパイなら使えると思います。

CPUハードウェア(ラズパイ)のモデルを確認 : cat /proc/cpuinfo 
  a02082 -> model3B
  a22082 -> model3B+
アーキテクチャ : uname –m
  
armv7l

※実際は、ラズパイ以外の端末でも利用が可能です。下記サイトに、要件が書かれているので、利用したい端末がGreengrass対応しているかはこちらを参考にしてください

REF : サポートされているプラットフォームと要件

端末側の環境構築(Raspberry Pi)

基本的に、無心でAWS公式ドキュメントに従うのが間違いがありません。まずは、Greengrassが利用できる環境構築とチェックをしていきましょう

REF : AWS公式 Raspberry Pi のセットアップ

以下は上記ドキュメントを進めていた中での、注釈的なものです

※1 ssh接続ツールとして、私はmobaXtermを使っています。サーバへのファイル転送とか、画面表示とか直感的にできるので結構オススメです
REF : おすすめの高機能SSHクライアント「MobaXterm」の使い方(基本編)

※2 ドキュメントの一番最後のチェックコマンド(sudo ./check_ggc_dependencies | more)を実行すると下記のようになる

------------------------------------Results-----------------------------------------
Note:
1. It looks like the kernel uses 'systemd' as the init process. Be sure to set the
'useSystemd' field in the file 'config.json' to 'yes' when configuring Greengrass core.

Missing optional dependencies:
1. Could not find the binary 'python3.7'.

If Python 3.7 is installed on the device, name the binary 'python3.7' and add its parent
directory to the PATH environment variable. Python 3.7 is required to execute Python 3.7
lambdas on Greengrass core.

2. Could not find the binary 'nodejs8.10'.

If NodeJS 8.10 or later is installed on the device, name the binary 'nodejs8.10' and
add its parent directory to the PATH environment variable. NodeJS 8.10 or later is
required to execute NodeJS lambdas on Greengrass core.

3. Could not find the binary 'java8'.

If Java 8 or later is installed on the device name the binary 'java8' and add its
parent directory to the PATH environment variable. Java 8 or later is required to
execute Java lambdas on Greengrass core.

Supported lambda isolation modes:
No Container: Supported
Greengrass Container: Supported

----------------------------------Exit status---------------------------------------
You can now proceed to installing the Greengrass core 1.9.x software on the device.
Please reach out to the AWS Greengrass support if issues arise.

python3.7, nodejs8.10, java8は今回は用いないので必要に応じて入れれば良いです。python2.7が無いよというエラーがでたら、きちんと環境を作る必要があります。

AWS IoT側の環境構築+エッジのGreengrassの起動

こちらも下記の公式ドキュメントを参考に進めていきます。

REF1 :  AWS IoT の AWS IoT Greengrass の設定
REF2 :  コアデバイスでの AWS IoT Greengrass の起動
REF3Init システムを設定して Greengrass デーモンを開始する

まずはREF1。ざっくりの手順としては

1. Greengrass グループを作る
グループではどのLambda関数を用いるか、エッジのどのリソースを使うか、どのAWSサービスとつなぐかなどを設定できます。詳しくは次回。
2. コアを作る
エッジ(今回はラズパイ)とAWSをつなぐような役目をしています。つなぐために、セキュリティが必要なので、セキュリティリソース(証明書)を作成[1]します
3.  エッジでGreengrassCoreを起動させるソフトウェア[2]をダウンロードする

ここまでできたら、さっきの[1], [2]をラズパイに転送してセットアップすればOKです。こちらも、公式ドキュメント(REF2)のとおりに進めれば問題なくいけるはずです。

※3. ちなみに、システムが起動するとGreengrassdが自動で起動するようにしておいたほうが、いちいち立ち上げなくて良くて便利なので、設定を行っておくことをおすすめします。(REF3)

まとめ

今回はAWS IoT Greengrassの導入を行ってみました。
まだ恩恵を理解するのは難しいと思います。次回は、実際に利用してみて、その強力さを実感してもらえたらと思います。ではではっ

前記事 : Part1. 全体像
次記事 : Part3. Greengrass/Lambda設定編

サポートいただけると励みになります! よろしくおねがいします!!