【小ネタ】[AWS IoT Greengrass] クイックスタートを使用して、コマンド3行でセットアップする(RaspberryPi)
1 はじめに
CX事業本部の平内(SIN)です。
AWS IoT Greengrass(以下、Greengrass)では、グループ及び、デバイスの設定を簡単に行うことができるように、クイックスタートが用意されています。
クイックスタート: Greengrass デバイスのセットアップ
今回は、上記の内容そのままなのですが、本当に初めて利用する場合などに、最低限準備するべき事項(手順)などを纏めてみました。利用したデバイスは、RaspbrerryPi Mode4です。
2 準備
最低限、準備するべき事項は、以下のとおりです。
- RespberryPiの準備
- 認証情報の準備
- リージョン決定
- グループ名の決定
(1) RespberryPiの準備
サポートされているプラットフォームは、2020/06/01現在、Armv7lでは、Raspbian Buster、2019-07-10となっています。他のディストリビューションでも動作可能のようですが、正式にサポートされているディストリビューションの利用が推奨されています。
サポートされているプラットフォームと要件
OSをインストールし、ネットワーク環境をセットアップします。
$ cat /proc/cpuinfo | grep Revision Revision : c03112 $ uname -a Linux raspberrypi 4.19.57-v7l+ #1244 SMP Thu Jul 4 18:48:07 BST 2019 armv7l GNU/Linux
(2) 認証情報
アクセスキー及びシークレットアクセスキーを準備します。Greengrassの設定や、Lambdaの構築の権限が必要です。 一時的セキュリティ認証情報を利用する場合は、アクセスキー、シークレットアクセスキー、及びセッショントークンの3つになります。 なお、セッショントークンは、パラータ --aws-session-tokenで指定します。
(3) リージョン
Greengrassを構築するリージョンは、デフォルトでus-west-2となります。何処のリージョンで構築するかを決定します。
例)ap-northeast-1
(4) グループ名決定
グループ名を決定します。GreenGrassのグループ名は、設定するリージョンで一意である必要があります。指定しないと、デフォルト値のGreengrassDeviceSetup_Group_guidとなります。
例)My_GG_Group
3 3行セットアップ
セットアップは、以下の3ステップです。パラメータを以下のように設定すれば、特に設定を求められることもありません。
- スクリプトをダウンロードして起動
- 再起動
- スクリプトの再起動
$ wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh \ && chmod +x ./gg-device-setup-latest.sh \ && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass \ --aws-access-key-id XXXXX \ --aws-secret-access-key XXXXX \ --region ap-northeast-1 \ --group-name My_GG_Group \ --hello-world-lambda \ --verbose
$ sudo reboot
$ sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass \ --aws-access-key-id XXXXX \ --aws-secret-access-key XXXXX
途中、新規インストールを開始するかのプロンプトには、yesを入力します。
最後に、以下のようなログが出力されます。
======================================================================================= Your device is running the Greengrass core software. Your Greengrass group and Hello World Lambda function were deployed to the core device. Setup information: Device info: Linux-4.19.57-v7l+-armv7l-with-debian-10.0 Greengrass core software location: / Installed Greengrass core software version: 1.10.1 Greengrass core: arn:aws:iot:ap-northeast-1:XXXXXXXXXXX:thing/GreengrassDeviceSetup_Core_bb905a24-c454-48a1-9031-faa0cb3a0892 Greengrass core IoT certificate: arn:aws:iot:ap-northeast-1:XXXXXXXXXXX:cert/3ed441ab697dd30c0064c625c3f4102ad7960a5f56608e755d9d56bf5716a6a3 Greengrass core IoT certificate location: /greengrass/certs/3ed441ab69.cert.pem Greengrass core IoT key location: /greengrass/certs/3ed441ab69.private.key Deployed Greengrass group name: My_GG_Group Deployed Greengrass group ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Deployed Greengrass group version: arn:aws:greengrass:ap-northeast-1:XXXXXXXXXXX:/greengrass/groups/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/versions/a2c4277c-b18b-436a-a6d8-b6795d178978 Greengrass service role: arn:aws:iam::XXXXXXXXXXX:role/service-role/Greengrass_ServiceRole GreengrassDeviceSetup log location: GreengrassDeviceSetup-20200531-221745.log Deployed the HelloWorld Lambda function: arn:aws:lambda:ap-northeast-1:XXXXXXXXXXX:function:Greengrass_HelloWorld_eCr8p:1 Hello-world subscriber topic: hello/world You can now use the AWS IoT Console to subscribe to the 'hello/world' topic to receive messages published from your Greengrass core. =======================================================================================
4 セットアップ内容
セットアップが成功すると、以下のような環境が構築されます。
- Greengrassのグループ(My_GG_Group)が追加されています。
- Lambdaがデプロイされ、グループに追加されています。
- Lambdaは、存続期間の長い Lambda(OS起動時、Invokeされ、起動し続ける)として設定されています。
- サプスクリプションは、デバイスから、IoT Core方向でトピックhello/worldが指定されます。
- デプロイは、すでに完了した状態となります。
- AWS IoTのテストで、トピックhello/worldをSubscribeすると、デバイス上のLambdaがPublishしているメッセージをモニターする事ができます。
5 自動起動
簡単ですが、greeengrassが、OS起動時に有効になるSystemdの設定要領です。
/etc/systemd/system/greengrass.serviceを作成します。
[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
サービスの有効化
$ sudo systemctl enable greengrass.service
サービスの起動
$ sudo systemctl start greengrass.service
確認
$ ps aux | grep -E 'greengrass.*daemon'
6 最後に
クイックスタートを利用すると、本当に、簡単にセットアップが完了できます。
少し、冗長となって恐縮ですが、下記への注意があると、まず、詰まらないと思います。
- グループ名は、リージョンで一意である必要がある
- Lambdaの名前は、指定できない
- 認証情報は、パラメータとして使用して保存しない
- --hello-world-lambdaのパラメータを外せば、Lambdaは構築されない
- デバイスのセットアップのログは、/tmp/greengrass-device-setup-bootstrap-epoch-timestamp.logを確認する
- グループまたは、コアの問題は、~/GreengrassDeviceSetup-date-time.logを確認する