AWS IoT Greengrass
開発者ガイド

AWS IoT Greengrass の Lambda 関数の設定

これで、AWS IoT Greengrass の Lambda 関数を設定する準備が整いました。

  1. AWS IoT Core コンソール で、[Greengrass] の下の [グループ] を選択します。次に [モジュール 2] で作成したグループを選択します。

  2. グループの設定ページで [Lambda]、[Add Lambda] の順に選択します。

    
                            [Lambda] と [Lambda の追加] が強調表示されたグループページ。
  3. [既存の Lambda の使用] を選択します。

    
                            [既存の Lambda の使用] ボタンが強調表示された [Greengrass グループへの Lambda の追加] のスクリーンショット。
  4. 前のステップで作成した Lambda の名前 (Greengrass_HelloWorld、エイリアス名ではない) を検索し、それを選択してから、[次へ] を選択します。

    
                            Greengrass_HelloWorld と [次へ] ボタンが強調表示された Use existing Lambda のスクリーンショット。
  5. このバージョンでは、[Alias:GG_HelloWorld] を選択して、[Finish] を選択します。GG_HelloWorld エイリアスを使用して、グループ内の Greengrass_HelloWorld Lambda 関数を参照する必要があります。

  6. 省略記号 () を選択し、[設定の編集] を選択します。

    
                            省略記号と [設定の編集] メニュー項目が強調表示された MyFirstGroup のスクリーンショット。
  7. [グループ固有の Lambda 設定] ページで、以下の変更を加えます。

    • [タイムアウト] を 25 秒に設定します。この Lambda 関数は、各呼び出しの前に 20 秒間スリープします。

    • [Lambda のライフサイクル] で、[存続期間が長く無制限に稼働する関数にする] を選択します。

     

    
                            25 (秒) と [存続期間が長く無制限に稼働する関数にする] ラジオボタンが選択された設定ページのスクリーンショット。

    注記

    存続期間の長い Lambda 関数 は、AWS IoT Greengrass の起動後に自動的に起動し、独自のコンテナ (またはサンドボックス) で実行し続けます。これはオンデマンドの Lambda 関数とは対照的です。この関数は呼び出されたときに開始し、実行するタスクが残っていないときに停止します。詳細については、「Greengrass Lambda 関数のライフサイクル設定」を参照してください。

  8. [Run as (として実行)]、[Containerization (コンテナ化)]、[入力ペイロードのデータ型] など、他のすべてのフィールドはデフォルト値のままにして、[更新] を選択して変更を保存します。Lambda 関数プロパティの詳細については、「グループ固有の設定による Greengrass Lambda 関数の実行の制御」を参照してください。

    次に、AWS IoT に MQTT メッセージを送信することを Lambda に許可するサブスクリプションを作成します。

    Greengrass Lambda 関数を使用して MQTT メッセージを交換することができます。

    グループはサブスクリプションを使用して、これらのエンティティが互いに通信する方法を制御します。サブスクリプションは、予測可能なやり取りとセキュリティの層を提供します。

    サブスクリプションはソース、ターゲット、およびトピックで構成されます。ソースはメッセージの送信元です。ターゲットはメッセージの送信先です。このトピックでは、ソースからターゲットに送信されるデータをフィルタリングできます。ソースまたはターゲットは、Greengrass デバイス、Lambda 関数、コネクタ、デバイスシャドウ、AWS IoT のいずれかです。

    注記

    サブスクリプションは、メッセージが送信元から宛先への特定の方向に流れるという意味でコントロールされます。双方向通信を許可するには、2 つのサブスクリプションを設定する必要があります。

    次の greengrassHelloWorld.py コードスニペットに示すように、Greengrass_HelloWorld Lambda 関数は AWS IoT の hello/world トピックにのみメッセージを送信します。

    def greengrass_hello_world_run(): if not my_platform: client.publish(topic='hello/world', payload='Hello world! Sent from Greengrass Core.') else: client.publish(topic='hello/world', payload='Hello world! Sent from Greengrass Core running on platform: {}'.format(my_platform)) Timer(5, greengrass_hello_world_run).start()

    Greengrass_HelloWorld Lambda 関数は AWS IoT の hello/world トピックにのみメッセージを送信するため、次に示すとおり、Lambda 関数から AWS IoT へのサブスクリプションを 1 つ作成するだけで済みます。

  9. グループの設定ページで、[サブスクリプション] を選択し、[最初のサブスクリプションの追加] を選択します。

    
                            Subscription と Add your first Subscription が強調表示された、グループ設定ページのスクリーンショット。
  10. [ソースの選択] で [選択] を選択します。次に、[Lambda] タブで、ソースとして [Greengrass_HelloWorld] を選択します。

    
                            Lambda と Greengrass_HelloWorld が強調表示された [ソースの選択] ページのスクリーンショット。
  11. [ターゲットの選択] で、[選択] を選択します。次に、[サービス] タブで、[IoT クラウド] を選択し、[次へ] を選択します。

    
                            Services タブ、IoT Cloud、および Next ボタンが強調表示された ターゲットの選択。
  12. [トピックのフィルター] で「hello/world」と入力し、[次へ] を選択します。

    
                            [トピックのフィルター] で hello/world が強調表示されたスクリーンショット。
  13. [Finish] を選択します。