Atom's tech blog

Raspberry Pi でAWS IoT Greengrassを動かしてみた!(Part3)

f:id:iAtom:20201202141428j:plain

本記事はGreengrass Core = 1.11.0 で実施した情報です。


ここではコアデバイスRaspberry Pi)で AWS IoT Greengrass のインストールと起動をします。

ここのPartはRaspberry Piでの作業がメインです。

IPアドレス、ユーザー名、ファイル名は実際の環境に合わせてください。記載しているファイル名、IPアドレスなどは、自分が実際に行った時のファイル名ですので間違えないように。

AWS構成図

f:id:iAtom:20201203142522j:plain

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で対象ファイルダブルクリックで解凍しました。


f:id:iAtom:20201127113517j:plain

1.2 証明書とキー情報をコピー

Part2で証明書とキー情報をファイルを解凍した「greengrass」配下にコピーします。


f:id:iAtom:20201218211107j:plain

1.3 Raspberry Piへコピー

最終的に配置するフォルダがルートディレクトリ直下(アクセス権限対応)のため、「greengrass」フォルダ全部を一旦Raspberry Pi(/home/pi/Downloads)へコピーします。 「FileZilla」のファイル転送ツールを使用しました。

Raspberry PiIPアドレスIPアドレスは、「Raspberry PiAWS IoT Greengrassを動かしてみた!(Part1)」のところで確認した方法でIPアドレスを確認してください。

もし接続できない場合は、IPアドレスが変わっている可能性がありますので、 Raspberry Piに直接HDMIでモニターをつなげて確認してください。


f:id:iAtom:20201127114348p:plain

1.4 Raspberry PiSSHで接続

MACのターミナルを起動しSSH接続してください。

    $ ssh pi@192.168.10.10
1.5 ルートディレクトリ直下へコピー

SSH接続したターミナル画面から「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 PiAWS 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」が表示した場合は正常に起動している状態です。