catch-img

CONEXIOBlackBearでAWS IoT Greengrass V2を使ってみる(2) Lambda関数コンポーネントの作成、デプロイ、動作確認

はじめに

こんにちは。コネクシオ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

import json
import logging
import sys
from threading import Timer

import awsiot.greengrasscoreipc
import awsiot.greengrasscoreipc.client as client
from awsiot.greengrasscoreipc.model import (
    QOS,
    PublishToIoTCoreRequest
)

logger = logging.getLogger(__name__)
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

TIMEOUT = 10

topic = "hello/world"
message = {"message": "Hello, World"}
qos = QOS.AT_LEAST_ONCE

ipc_client = awsiot.greengrasscoreipc.connect()


def greengrass_hello_world_run():
    try:
        request = PublishToIoTCoreRequest()
        request.topic_name = topic
        request.payload = bytes(json.dumps(message), "utf-8")
        request.qos = qos
        operation = ipc_client.new_publish_to_iot_core()
        operation.activate(request)
        future = operation.get_response()
        future.result(TIMEOUT)
    except Exception as e:
        logger.error("Failed to publish message: " + repr(e))

    Timer(5, greengrass_hello_world_run).start()


greengrass_hello_world_run()


def lambda_handler(event, context):
    return


ソースコードができたら、デプロイしてバージョンを作成しておきます。後述の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上で実行してインストールします。

apt-get update
apt-get install python3-dev
apt-get install cmake

python3.7 -m pip install awsiotsdk

なお、本コマンドで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プログラムを作成、デバイスへデプロイし、動作確認ができました。今後は、以前と同じく機械学習モデルなどのデプロイもしてみたいと考えています。


本記事は担当書き手の個人的感想を述べるもので、コネクシオ株式会社を代表する意思表示をするものでは有りません。


5分で理解できる!
Smart Ready IoTソリューションセット
ご質問やご要望はこちらから
お気軽にお問い合わせください

設備保全とは? 種類やIoT導入による効果について解説

2021-11-29

設備保全とは、工場の定期点検・監視をはじめ、定期整備、故障の修理などを行う業務を指します。工場内の設備・機械を円滑に稼働させ、トラブルを防ぐために必要不可欠な取り組みの一つです。この記事では、設備保全の種類や重要性、IoT導入の効果について解説します。

生産現場の見える化とは? 目的や実施のステップを解説

2021-11-29

生産現場の問題として、「業務が熟練工に属人化している」「生産効率が上がらない」「設備の故障で生産が停止してしまう」などが挙げられます。業務の標準化や生産効率の向上、稼働の安定化を実現するためには現場の“見える化”が必要です。本記事では、生産現場における見える化の目的や実施のステップについて解説します。

【実録】IoTの活用事例と導入した効果

2021-11-29

近年、さまざまなモノがインターネットとつながるIoTの活用が広がっています。しかし、IoTでどのようなことを実現できるのか、仕組みや活用シーンなどが分からないという方もいらっしゃるのではないでしょうか。この記事ではIoTでできることをはじめ、業界別の導入事例を紹介します。

CONEXIOBlackBearでAWS IoT Greengrass V2を使ってみる(2) Lambda関数コンポーネントの作成、デプロイ、動作確認

2021-11-05

前回、AWS IoT Greengrass Coreソフトウェア V2のセットアップができました。今回は、プログラムをLambda関数コンポーネントとして作成、デバイスへデプロイし、動作確認までの手順を整理したいと思います。

CONEXIOBlackBearでAWS IoT Greengrass V2を使ってみる(1) Greengrass Coreソフトウェアのセットアップ

2021-11-05

現在、AWS IoT GreengrassはV2に移行し、以前と使い勝手が少し変わったため、今回改めてV2においてセットアップ~プログラム動作確認までの手順を整理したいと思います。今回は、セットアップを行います。