AWS IoT Greengrass の Lambda 関数を設定 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 は機能更新を受信しなくなり、2023 年 6 月 30 日までセキュリティパッチとバグ修正のみ受信します。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。重要な新機能新たなプラットフォームのサポートが追加された AWS IoT Greengrass Version 2 への移行を強くお勧めします。

AWS IoT Greengrass の Lambda 関数を設定

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

このステップでは、次の操作を行います。

  • AWS IoT コンソールを使用し、Greengrass グループに Lambda 関数を追加します。

  • Lambda 関数のグループ固有の設定を構成します。

  • Lambda 関数が MQTT メッセージを AWS IoT に発行できるようにするサブスクリプションをグループに追加します。

  • グループのローカルログ設定を構成します。

 

  1. AWS IoT コンソールのナビゲーションペインの [Manage](管理)で、[Greengrass devices](Greengrass デバイス)を展開して、[Group (V1)](グループ (V1))を選択します。

  2. [Greengrass groups] (Greengrass グループ) で、モジュール 2 で作成したグループを選択します。

  3. グループの設定ページで、[Lambda functions] (Lambda 関数) タブを選択してから、[My Lambda functions] (自分の Lambda 関数) セクションをスクロールして、[Add Lambda function] (Lambda 関数を追加) を選択します。

  4. 前のステップで作成した Lambda 関数の名前を選択します (エイリアス名ではなく、Greengrass_HelloWorld)。

  5. このバージョンでは、Alias: GG_HelloWorld を選択します。

  6. [Lambda function configuration] (Lambda 関数の設定) セクションで、次のように変更します。

    • [System user and group] (システムユーザーとグループ) を [Use group default] (グループデフォルトの使用) に設定します。

    • Lambda function containerization (Lambda 関数のコンテナ化) を、[Use group default] (グループデフォルトの使用) に設定します。

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

    • [Pinned] (固定) で、[True] を選択します。

     

    注記

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

  7. [Add Lambda function] (Lambda 関数の追加) を選択して、変更を保存します。Lambda 関数のプロパティについては、「グループ固有の設定による Greengrass Lambda 関数の実行の制御」を参照してください。

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

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

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

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

    注記

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

    注記

    現在、サブスクリプショントピックフィルタでは、1 つのトピック内で 2 つ以上の + 文字を使用することはできません。トピックフィルタでは、トピックの末尾に加えることのできる # 文字は 1 つのみです。

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

  8. グループの設定ページで、[Subscriptions] (サブスクリプション) タブを選択し、[Add subscription] (サブスクリプションの追加) を選択します。

    AWS CLI を使用したサブスクリプションの作成例については、「AWS CLI Command Reference」( コマンドリファレンス) の「create-subscription-definition」を参照してください。

  9. [Source type] (ソースタイプ) で、[Lambda function] (Lambda 関数) を選択し、[Source] (ソース) に [Greengrass_HelloWorld] を選択します。

  10. [Target type] (ターゲットタイプ) には、[Service] (サービス) を選択し、[Target] (ターゲット) には [IoT Cloud] (IoT クラウド) を選択します。

  11. [Topic filter] (トピックのフィルター) には、hello/world と入力し、[Create subscription] (サブスクリプションの作成) を選択します。

  12. グループのログ記録設定を定義します。このチュートリアルでは、Core デバイスのファイルシステムにログを書き込むように、AWS IoT Greengrass システムコンポーネントとユーザー定義の Lambda 関数を設定します。

    1. グループの設定ページで、[Logs] (ログ) タブを選択します。

    2. [Local logs configuration] (ローカルログ設定) セクションで、[Edit] (編集) を選択します。

    3. [Edit local logs configuration] (ローカルログ設定の編集) ダイアログボックスで、ログレベルとストレージサイズの両方についてデフォルト値を保持し、[Save] (保存) を選択します。

    このチュートリアルの実行時に発生する可能性のある問題をトラブルシューティングするには、ログを使用します。問題のトラブルシューティングを行う場合は、ログレベルを一時的に [デバッグ] に変更できます。詳細については、「ファイルシステムログへのアクセス」を参照してください。

  13. Java 8 ランタイムがコアデバイスにインストールされていない場合は、インストールするか、ストリームマネージャーを無効にする必要があります。

    注記

    このチュートリアルではストリームマネージャーを使用しませんが、ストリームマネージャーをデフォルトで有効にする [デフォルトグループの作成] ワークフローを使用します。ストリームマネージャーが有効になっていても Java 8 がインストールされていない場合、グループのデプロイは失敗します。詳細については、「ストリームマネージャーの要件」を参照してください。

    ストリームマネージャーを無効にするには:

    1. グループ設定ページで、[Lambda functions] (Lambda 関数) タブを選択します。

    2. [System Lambda functions] (Lambda システム関数) セクションで、[Stream manager] (ストリームマネージャー)、[Edit] (編集) の順に選択します。

    3. [無効化)] を選択し、[保存] を選択します。