Raspberry Pi でAWS IoT Greengrassを動かしてみた!(Part3)
本記事はGreengrass Core = 1.11.0 で実施した情報です。
ここではコアデバイス(Raspberry Pi)で AWS IoT Greengrass のインストールと起動をします。
- Part1: Raspberry Piのセットアップ
- Part2: AWS IoT Greengrass(クラウド)の設定
- Part3: Raspberry PiへGreengrassソフトウェアインストールと起動
- Part4: Greengrass(Raspberry Pi)とAWS IoT(クラウド)と連携
- Part5: Greengrass(Raspberry Pi)でLambda関数の実行動作
ここのPartはRaspberry Piでの作業がメインです。
IPアドレス、ユーザー名、ファイル名は実際の環境に合わせてください。記載しているファイル名、IPアドレスなどは、自分が実際に行った時のファイル名ですので間違えないように。
AWS構成図
AWS IoT Greengrassソフトウェアのインストール
自分はMACでソフトウェアをダンロードしてRaspberry Piへコピーします。
1. AWS IoT Greengrass Core ソフトウェアのインストール
Part2でダウンロードした「greengrass-linux-armv7l-1.11.0.tar」の圧縮ファイルを解凍し、Raspberry Pi にコピーします。 Raspberry Pi へのコピーは、既にMACにインストールしている「FileZilla」のファイル転送ツールを活用しました。
1.1 ソフトウェアの解凍
「greengrass-linux-armv7l-1.11.0.tar」を解凍します。自分はMACで対象ファイルダブルクリックで解凍しました。
1.2 証明書とキー情報をコピー
Part2で証明書とキー情報をファイルを解凍した「greengrass」配下にコピーします。
1.3 Raspberry Piへコピー
最終的に配置するフォルダがルートディレクトリ直下(アクセス権限対応)のため、「greengrass」フォルダ全部を一旦Raspberry Pi(/home/pi/Downloads)へコピーします。 「FileZilla」のファイル転送ツールを使用しました。
Raspberry PiのIPアドレスIPアドレスは、「Raspberry Pi でAWS IoT Greengrassを動かしてみた!(Part1)」のところで確認した方法でIPアドレスを確認してください。
もし接続できない場合は、IPアドレスが変わっている可能性がありますので、 Raspberry Piに直接HDMIでモニターをつなげて確認してください。
1.4 Raspberry PiにSSHで接続
$ ssh pi@192.168.10.10
1.5 ルートディレクトリ直下へコピー
SSH接続したターミナル画面から「greengrass」フォルダ全部をコピーします。
- コピー元:Raspberry Pi(/home/pi/Downloads/greengrass )
- コピー先:Raspberry Pi (/greengrass)
コピーした後はlsコマンドでルートディレクトリに「greengrass」ができていることを確認してください。
$ cd /home/pi/Downloads $ sudo cp -r greengrass /greengrass $ ls / bin dev greengrass lib media opt root sbin sys usr boot etc home lost+found mnt proc run srv tmp var
1.6 ルートCA証明書のダウンロード
ルート CA 証明書をデバイス上の Raspberry Piの/greengrass/certs フォルダにダウンロードします。
このルート CA 証明書は、Amazon Trust Services (ATS) エンドポイントおよび ATS ルート CA 証明書を使用することを推奨しています。 証明書を使用すると、デバイス(Raspberry Pi)は TLS で MQTT メッセージングプロトコルを使用して AWS IoT Core と通信できます。
次のコマンドを実行して Amazon ルート CA 1 証明書をダウンロードし、名前を root.ca.pem に変更します。
$ cd /greengrass/certs/ $ sudo wget -O root.ca.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
1.7 root.ca.pemの確認
root.ca.pem が空ではないことを確認できます。 ファイルが空の場合は、「wgetの URL情報」を確認してもう一度試してください。
$ cat root.ca.pem
Raspberry Piで AWS IoT Greengrass起動
インストールしたソフトウェアを使用してGreengrass起動します。
1. Greengrass起動
Raspberry PiのGreengrassソフトウェアの場所へ移動し、root権限(sudo)で起動します。
$ cd /greengrass/ggc/core/ $ sudo ./greengrassd start Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 1m10s for Daemon to start Greengrass successfully started with PID: 5293
「Greengrass successfully started」メッセージが表示されます。PIDは別途確認しますので、番号は残しておいてください。
このコマンドで起動しますが、Raspberry Piが再起動したり、プロセスが停止してGreengrassソフトウェアが止まっているときもありますので、その時はInit システムを設定して Greengrass デーモンを開始することをお勧めします。
1.1 Greengrass デーモンを停止したい場合
$ cd /greengrass/ggc/core/ $ sudo ./greengrassd stop Waiting.......... Stopped greengrass daemon, exiting with success
2. システム起動時のGreengrass デーモン自動起動
自分は自動起動登録していません。登録していなくてもRaspberry Pi起動時に「1. Greengrass起動」を実施してもらえれば大丈夫です。
どのようなケースでも毎回自動起動したい場合は、こちらのInit システムを設定して Greengrass デーモンを開始するをご確認ください。
3. Greengrass デーモン起動確認
下記コマンドを実行して AWS IoT Greengrass Core ソフトウェア (Greengrass デーモン) が起動していることを確認できます。 「5293」はGreengrass デーモンを起動して、出力メッセージで表示されたときの番号です。それぞれで違いますのでご注意ください。
$ ps aux | grep 5293 root 5293 0.6 2.3 968440 22704 pts/1 Sl 14:43 0:03 /greengrass/ggc/packages/1.11.0/bin/daemon -core-dir /greengrass/ggc/packages/1.11.0 -greengrassdPid 5288 pi 5936 0.0 0.0 3916 524 pts/1 S+ 14:53 0:00 grep --color=auto 5293
「/greengrass/ggc/packages/1.11.0/bin/daemon」が表示した場合は正常に起動している状態です。