Greengrassのユーザガイドにあるチュートリアルをやってみました。
http://docs.aws.amazon.com/greengrass/latest/userguide/gg-deploy-simple-lambda.html
事前に用意するもの
- AWSアカウント
- Raspberry Pi3
作業内容
1. GreengrassグループとGreengrassコアを作成する
マネジメントコンソールにログイン後、「AWS IoT」-「Greengrass」-「今すぐ始める」を選択します。次に「Greengrassグループを設定する」画面になったら、「簡単な作成の使用」を選択します。
グループ名とコア名を指定後、「グループとコアの作成」をクリックします。
「コアデバイスへの接続」 の画面になったら、証明書、パブリックキー、プライベートキーとGreengrassコアソフトウェアをダウンロードします。
2. Raspberry Piを設定する
Raspberry Piへログインし、下記の設定をします。
- ユーザー・グループの作成
- カーネル4.9へアップデート
- sqlite3のインストール
- セキュリティ設定
$ sudo adduser --system ggc_user
$ sudo addgroup --system ggc_group
$ sudo apt-get install rpi-update
$ sudo rpi-update
$ sudo apt-get install sqlite3
$ sudo vi /etc/sysctl.d/98-rpi.conf
$ sudo reboot
・・・
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
3. Raspberry PiにGreengrassソフトウェアパッケージを展開する
ダウンロードしたソフトウェアパッケージをscp等でRaspberry Piにコピー後、展開します。
$ sudo tar -zxf greengrass-linux-armv7l-1.0.0.tar.gz -C /
4. Raspberry Piに証明書をインストールする
シマンテックのサイトからルート証明書をダウンロードします。
http://docs.aws.amazon.com/ja_jp/greengrass/latest/userguide/install-core-certs.html
ダウンロードした証明書、プライベートキーとルート証明書をscp等でRaspberry Piに転送後、配置します。
$ sudo mv xxxxxxxxxx-certificate.pem.crt /greengrass/configuration/certs/cloud.pem.crt
$ sudo mv xxxxxxxxxx-private.pem.key /greengrass/configuration/certs/cloud.pem.key
$ sudo mv root-ca.pem /greengrass/configuration/certs/
5. Greengrassコアを設定する
「コア」-「詳細」を選択して、ARNを表示します。
aws cliでIoTのエンドポイントを取得します。
$ aws iot describe-endpoint
{
"endpointAddress": "xxxxxxxxxxxx.iot.us-east-1.amazonaws.com"
}
上記で取得した値を元に、config.jsonファイルを設定します。
- ルート証明書
- 証明書
- プライベートキー
- ARN
- IoTエンドポイント
- systemdの利用有無
{
"coreThing": {
"caPath": "root-ca.pem",
"certPath": "cloud.pem.crt",
"keyPath": "cloud.pem.key",
"thingArn": "arn:aws:iot:us-east-1:yyyyyyyyyyyy:thing/MyFirstGroup_Core",
"iotHost": "xxxxxxxxxxxx.iot.us-east-1.amazonaws.com",
"ggHost": "greengrass.iot.us-east-1.amazonaws.com"
},
"runtime": {
"cgroup": {
"useSystemd": "yes"
}
}
}
6. Raspberry Pi上のGreengrassコアをAWS IoTに接続する
greengrassデーモンを起動します。
$ cd /greengrass
$ sudo ./greengrassd start
7. サンプルのLambdaを作成する
マネジメントコンソールで「Lambda」-「greengrass-hello-world」を選択し、Lambdaを作成します。
作成後、Lambdaに対し新しいバージョンを発行します。
8. 作成したLambdaをグループの定義に追加・設定する
「最初のLambdaを追加する」を選択します。
「既存のLambdaを使用」を選択し、Lambda名とバージョンを指定します。
Lambdaを追加したら、ライフサイクルを「存在時間が長く無制限に稼働する関数にする」に変更します。
9. subscriptionをグループの定義に追加する
「最初のサブスクリプションの追加」を選択します。
以下のように指定して、「完了」を選択します。
10. グループをデプロイする
「デプロイ」を選択します。
「自動検出」を選択します。
「権限の付与」を選択します。
「デプロイメントが正常に完了しました」のメッセージが表示されればデプロイ成功です。
動作確認
トピックのサブスクリプションを指定後、「トピックへのサブスクライブ」を選択します。
Greengrassコアからのメッセージが表示されればOKです。
雑感
Lambdaに続き、AWSは何か破壊的なサービスを出してきたように思えます。
Greengrassが今後どのように発展していくのか、とても楽しみです。