警告メッセージ

Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。

Howto : Armadillo-X1, Armadillo-IoT G3/G3LにAWS Greengrass Coreをインストールする

対象製品: Armadillo-IoT G3Armadillo-IoT G3LArmadillo-X1

Armadillo-X1, Armadillo-IoT G3/G3LにAWS Greengrass Coreをインストールする手順を説明します。

AWS Greengrassとは

AWS Greengrassは、Amazon Web Servicesが提供している、クラウドおよび相互に接続されたデバイスでIoT ソリューションを構築するためのソフトウェアとサービスです。

AWS Greengrass

Greengrass CoreというソフトウェアをArmadilloにインストールすることで、Armadillo上でAWS Lambda関数を実行したり、相互に接続されたデバイスの状態を常に同期させ他のデバイスと安全に通信することができます。

Armadillo本体の設定

Linuxカーネルで必要なコンフィグ

AWS Greengrass Coreは、linux-4.9-x1-at3 以降で実行可能です。 それより古いLinuxカーネルでは動作できません。

Linuxカーネルイメージのビルド手順書き換え手順については、製品マニュアルをご覧ください。

カーネルパラメータの設定

保守モードで電源を入れ、u-bootで以下のカーネルパラメータを設定してください。

=> setenv optargs cgroup_enable=memory cgroup_memory=1
=> saveenv

ユーザーとグループの追加

Linuxを起動し、Greengrass Coreを実行するために必要なユーザーとグループを追加します。

[armadillo ~]# adduser --system ggc_user
[armadillo ~]# groupadd --system ggc_group

必要なランタイムのインストール

デプロイして実行させるLambda関数に合ったランタイムをインストールする必要があります。 この記事では例として、Python2.7で記述したLambda関数を実行させるためパッケージをインストールします。

[armadillo ~]# apt-get install python2.7

ハードリンク/ソフトリンクの保護

Greengrass Coreでは、起動時にハードリンク/ソフトリンクの保護が有効かどうかを確認します。デバイスのセキュリティを向上させるために、この保護を有効にします。 /etc/sysctl.d/99-sysctl.conf の最後の2行を以下のように変更します。

fs.protected_hardlinks = 1
fs.protected_symlinks = 1

その後、再起動してください。

[armadillo ~]# reboot

Greengrass Coreのインストール

Greengrass Coreパッケージの展開

AWS IoTコンソールから、AWS IoT Greengrass Core ソフトウェアをダウンロードし、Armadilloにコピーしてください。使用するのは ARMv7l 版です。

ダウンロードしたら、Armadilloのルートファイルシステムに展開します。

[armadillo ~]# tar xvzf greengrass-linux-armv7l-1.7.1.tar.gz -C /
本記事編集時点で動作確認したAWS IoT Greengrass Coreのバージョンは v1.7.1 です。また、AWS IoT Greengrass CoreはAWS IoTコンソールにログインしていないとダウンロードできません。

各証明書のコピー

/greengrass/certs ディレクトリに、各証明書をコピーします。

  • AWS IoT ルートCA 証明書
  • AWS Greengrass コア 証明書
  • AWS Greengrass コア プライベートキー

各証明書は、Greengrass グループ作成時にダウンロードすることができます。詳しくはAWS IoT の AWS IoT Greengrass の設定をご覧ください。

これで、Greengrass Coreのインストールと設定が完了しました。

Greengrass Coreの起動

手動で起動する

以下のコマンドで、Greengrass Coreが起動します。

[armadillo ~]# /greengrass/ggc/core/greengrassd start
Setting up greengrass daemon
Validating execution environment
Found cgroup subsystem: memory
Found cgroup subsystem: devices
Found cgroup subsystem: freezer
Found cgroup subsystem: net_cls

Starting greengrass daemon
Greengrass successfully started with PID: 8614

systemdで自動起動する

Greengrass Coreをsystemdで自動起動したい場合は、/etc/systemd/system/greengrass.service のようなUnitファイルを作成し、以下のように記述してください。

[Unit]
Description=Greengrass Daemon

[Service]
Type=forking
PIDFile=/var/run/greengrassd.pid
Restart=on-failure
ExecStart=/greengrass/ggc/core/greengrassd start
ExecReload=/greengrass/ggc/core/greengrassd restart
ExecStop=/greengrass/ggc/core/greengrassd stop

[Install]
WantedBy=multi-user.target

systemctlコマンドで、Unitの自動起動を有効にします。次回起動時から、Greengrass Coreが自動起動します。

[armadillo ~]# systemctl enable greengrass
Created symlink from /etc/systemd/system/multi-user.target.wants/greengrass.service to /etc/systemd/system/greengrass.service.

Greengrass グループの作成手順や各証明書の取得方法、Lambda関数のデプロイ方法など、AWS Greengrassの詳しい使い方についてはAWS Greengrass チュートリアルをご覧ください。