LoginSignup
5
6

More than 5 years have passed since last update.

AWS Greengrassのチュートリアルをやってみた

Posted at

Greengrassのユーザガイドにあるチュートリアルをやってみました。
http://docs.aws.amazon.com/greengrass/latest/userguide/gg-deploy-simple-lambda.html

事前に用意するもの

  • AWSアカウント
  • Raspberry Pi3

作業内容

1. GreengrassグループとGreengrassコアを作成する

マネジメントコンソールにログイン後、「AWS IoT」-「Greengrass」-「今すぐ始める」を選択します。次に「Greengrassグループを設定する」画面になったら、「簡単な作成の使用」を選択します。

01_welcome.png

グループ名とコア名を指定後、「グループとコアの作成」をクリックします。

02_group.png

03_core.png

「コアデバイスへの接続」 の画面になったら、証明書、パブリックキー、プライベートキーとGreengrassコアソフトウェアをダウンロードします。

05_key.png

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
/etc/sysctl.d/98-rpi.conf
・・・
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を表示します。

06_core.png

07_core_detail.png

aws cliでIoTのエンドポイントを取得します。

$ aws iot describe-endpoint
{
    "endpointAddress": "xxxxxxxxxxxx.iot.us-east-1.amazonaws.com"
}

上記で取得した値を元に、config.jsonファイルを設定します。

  • ルート証明書
  • 証明書
  • プライベートキー
  • ARN
  • IoTエンドポイント
  • systemdの利用有無
/greengrass/configuration/config.json
{
    "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を作成します。
08_lambda.png

作成後、Lambdaに対し新しいバージョンを発行します。

12_lambda.png

8. 作成したLambdaをグループの定義に追加・設定する

「最初のLambdaを追加する」を選択します。

14_lambda_add.png

「既存のLambdaを使用」を選択し、Lambda名とバージョンを指定します。

15_lambda_add.png

16_lambda_add.png

17_lambda_add.png

Lambdaを追加したら、ライフサイクルを「存在時間が長く無制限に稼働する関数にする」に変更します。

18_lambda_modify.png

19_lambda_modify.png

9. subscriptionをグループの定義に追加する

「最初のサブスクリプションの追加」を選択します。

20_subscription.png

以下のように指定して、「完了」を選択します。

25_subscription.png

10. グループをデプロイする

「デプロイ」を選択します。

26_deploy.png

「自動検出」を選択します。

27_deploy.png

「権限の付与」を選択します。

28_deploy.png

「デプロイメントが正常に完了しました」のメッセージが表示されればデプロイ成功です。

30_deploy.png

動作確認

トピックのサブスクリプションを指定後、「トピックへのサブスクライブ」を選択します。

31_test.png

Greengrassコアからのメッセージが表示されればOKです。

32_test.png

雑感

Lambdaに続き、AWSは何か破壊的なサービスを出してきたように思えます。
Greengrassが今後どのように発展していくのか、とても楽しみです。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6