CONEXIOBlackBearでAWS IoT Greengrass V2を使ってみる(2) Lambda関数コンポーネントの作成、デプロイ、動作確認
▼前回の記事はこちら
「CONEXIOBlackBearでAWS IoT Greengrass V2を使ってみる(1)」
目次[非表示]
はじめに
こんにちは。コネクシオIoTブログ 技術記事担当のHです。
前回、AWS IoT Greengrass Coreソフトウェア V2のセットアップができました。今回は、プログラムをLambda関数コンポーネントとして作成、デバイスへデプロイし、動作確認までの手順を整理したいと思います。
実施環境
前回に準拠します。
1. Lambda関数コンポーネントを作成
1.1 Lambda関数を作成
まず、デバイス上で実行したいプログラムを作成していきます。内容は、
5秒ごとにIoT Coreに向けて "hello,world" とメッセージをパブリッシュする
簡単なサンプルです。
LambdaのコンソールでLambda関数を作成する手順は、通常のLambda関数と同様なので詳細は省きますが、設定は以下通りです。ランタイムはPythonです。
ソースコードは、以下のリンクを参考にしました。
https://docs.aws.amazon.com/greengrass/v2/developerguide/ipc-iot-core-mqtt.html
ソースコードができたら、デプロイしてバージョンを作成しておきます。後述のLambda関数コンポーネントの作成のときにバージョン名で参照する必要があるからです。
1.2 Lambda関数コンポーネントを作成
次に、AWS IoT Greengrassのコンソール上で、コンポーネントを作成していきます。
以下のように、先ほど作成したLambda関数およびバージョンを指定してインポートします。この関数は、ずっと動き続ける必要があるため、関数の設定で固定済みの項目はTrueとしています。
2. デプロイする
2.1 AWS IoT Device SDK v2 for Pythonのインストール
今回のサンプルプログラムは、Pythonランタイムで動作し、AWS IoT Device SDKを使用してIoT Coreへパブリッシュするため、CONEXIOBlackBear上へAWS IoT Device SDK v2 for Pythonをインストールする必要があります。
https://github.com/aws/aws-iot-device-sdk-python-v2
上記リンクを参考に以下のコマンドをCONEXIOBlackBear上で実行してインストールします。
なお、本コマンドでawscrtというpipパッケージも同時にインストールされますが、.whlファイルが提供されていないためCONEXIOBlackBearでセルフビルドが走ります。そのため、20-30分程度の時間を要すことにご注意ください。(今後も使用する予定がある場合は、予め.whlファイルを作成しておくとよいと思います。)
2.2 デプロイの編集
AWS IoT Greengrassコンソールを見ると、前回のIoT Coreのセットアップを行った時点で、Deployment for MyGreengrassCoreGroupというデプロイが作成されています。そこで、このデプロイを変更していきます。
まず、コンポーネントの設定で、先ほど作成したcom.example.GreengrassV2_HelloWorldコンポーネントを指定します。
そして、コンポーネントの設定を行います。
以下のように、IoT Coreへのパブリッシュを許可する設定を書き込みます。これは、
https://docs.aws.amazon.com/greengrass/v2/developerguide/ipc-iot-core-mqtt.html
を参考にしました。
そして、以下のようにすべての項目を設定したら、デプロイボタンを押します。
デプロイボタンを押すと、以下のようにデバイスへのデプロイが開始します。
3. 動作確認する
最後に、AWS IoTコンソールのMQTT テストクライアントを使って動作確認を行います。
hello/worldトピックをサブスクライブすると、以下のようにメッセージが飛んできています。成功です。
まとめ
以上のように、AWS IoT Greengrass V2において、Lambdaプログラムを作成、デバイスへデプロイし、動作確認ができました。今後は、以前と同じく機械学習モデルなどのデプロイもしてみたいと考えています。
本記事は担当書き手の個人的感想を述べるもので、コネクシオ株式会社を代表する意思表示をするものでは有りません。