この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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を確認する