Lambda 関数の作成とパッケージ化 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 は 2023 年 6 月 30 日に延長ライフフェーズに参加しました。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。この日以降、 AWS IoT Greengrass V1 は機能、機能強化、バグ修正、またはセキュリティパッチを提供する更新をリリースしません。で実行されるデバイスは中断 AWS IoT Greengrass V1 されず、引き続き動作し、クラウドに接続します。に移行することを強くお勧めします。 AWS IoT Greengrass Version 2これにより、重要な新機能が追加され、プラットフォーム のサポートが追加されます

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Lambda 関数の作成とパッケージ化

このモジュールの Python Lambda 関数の例では、Python 用の AWS IoT Greengrass Core SDK を使用して MQTT メッセージを発行しています。

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

  • Python 用の AWS IoT Greengrass Core SDK をコンピュータ (AWS IoT Greengrass Core デバイスではなく) にダウンロードします。

  • Lambda 関数コードと依存関係を含む関数デプロイパッケージを作成します。

  • Lambda コンソールを使用して Lambda 関数を作成し、デプロイパッケージをアップロードします。

  • Lambda 関数のバージョンを発行し、そのバージョンを指すエイリアスを作成します。

このモジュールを完了するには、Python 3.7 をコアデバイスにインストールする必要があります。

 

  1. AWS IoT Greengrass Core SDK のダウンロードページから、AWS IoT Greengrass Core SDK for Python をお使いのコンピュータにダウンロードします。

  2. ダウンロードしたパッケージを解凍して、Lambda 関数コードおよび SDK を取得します。

    このモジュールの Lambda 関数では、以下を使用します。

    • examples\HelloWorldgreengrassHelloWorld.py ファイル。このファイルに、Lambda 関数コードが記述されています。関数は 5 秒ごとに 2 つのメッセージのいずれかを hello/world トピックに発行します。

    • greengrasssdk フォルダ。これは SDK です。

  3. greengrassHelloWorld.py を含む HelloWorld フォルダに greengrasssdk フォルダをコピーします。

  4. Lambda 関数デプロイパッケージを作成するには、greengrassHelloWorld.pygreengrasssdk フォルダを hello_world_python_lambda.zip という名前の zip 圧縮ファイルに保存します。py ファイルと greengrasssdk フォルダはディレクトリのルートにある必要があります。

    zip 圧縮された hello_word_python_lambda.zip の内容を示すスクリーンショット。

    UNIX 互換システム (Mac のターミナルを含む) では、次のコマンドを使用してファイルとフォルダをパッケージ化できます。

    zip -r hello_world_python_lambda.zip greengrasssdk greengrassHelloWorld.py
    注記

    ディストリビューションによっては、必要に応じて最初に zip をインストールします。そのために、sudo apt-get install zip などを実行します。(インストールコマンドはお客様のディストリビューションと異なる場合があります)。

    これで、Lambda 関数を作成して、デプロイパッケージをアップロードする準備ができました。

  5. Lambda コンソールを開き、[関数の作成] を選択します。

  6. Author from scratch(製作者を最初から) を選択します。

  7. 関数に Greengrass_HelloWorld という名前を付け、残りのフィールドを以下のように設定します。

    • [Runtime (ランタイム)] で [Python 3.7] を選択します。

    • [Permissions] (アクセス許可) はデフォルト設定のままにしておきます。これで Lambda への基本的なアクセス許可を付与する実行ロールが作成されます。このロールは、AWS IoT Greengrass によっては使用されません。

    [Create function] (関数の作成) を選択します。

  8. Lambda 関数のデプロイパッケージをアップロードします。

    1. [Code] (コード) タブの [Code source] (コードソース) で、[Upload from] (アップロード元) を選択します。ドロップダウンから [.zip file] (.zip ファイル) を選択します。

      [.zip file] (.zip ファイル) が強調表示された [Upload from] (アップロード元) ドロップダウンリスト。
    2. [Upload] (アップロード) を選択し、hello_world_python_lambda.zip デプロイパッケージを選択します。次に、保存を選択します。

    3. 関数の [Code] (コード) タブにある [Runtime settings] (ランタイム設定) で [Edit] (編集) を選択し、次の値を入力します。

      • [Runtime (ランタイム)] で [Python 3.7] を選択します。

      • [ハンドラ] に「greengrassHelloWorld.function_handler」と入力します。

      [Runtime] (ランタイム) フィールドが [Python 3.7] に設定され、[Handler] (ハンドラ) フィールドが [greengrassHelloWorld.function_handler] に設定された [Runtime settings] (ランタイム設定) セクション。
    4. [Save] を選択します。

      注記

      AWS Lambda コンソールの [Test] (テスト) ボタンは、この関数では機能しません。AWS IoT Greengrass Core SDK には、AWS Lambda コンソールで Greengrass Lambda 関数を個別に実行するために必要なモジュールは含まれていません。これらのモジュール (例えば greengrass_common) が関数に提供されるのは、Greengrass Core にデプロイされた後になります。

  9. Lambda 関数を発行します。

    1. ページの上部の [Actions] (アクション) メニューから、[Publish new version] (新しいバージョンを発行) を選択します。

      [新しいバージョンを発行] が強調表示された [アクション] メニューのスクリーンショット。
    2. [バージョンの説明] に「First version」と入力し、[発行] を選択します。

      [バージョンの説明] フィールドが「First version」に設定され、[発行] ボタンが強調表示されたスクリーンショット。
  10. Lambda 関数のバージョンエイリアスを作成します。

    注記

    Greengrass グループは、Lambda 関数をエイリアス別 (推奨) またはバージョン別に参照できます。エイリアスを使用すると、関数コードを更新する時にサブスクリプションテーブルやグループ定義を変更する必要がないため、コード更新を簡単に管理できます。その代わりに、新しい関数バージョンにエイリアスを指定するだけで済みます。

    1. ページ上部の [Actions] (アクション) メニューから、[Create alias] (エイリアスの作成) を選択します。

      [エイリアスの作成] に設定された [アクション] メニューのスクリーンショット。
    2. エイリアスに GG_HelloWorld という名前を付け、バージョンを 1 (先ほど発行したバージョンに対応) に設定して、[Save] (保存) を選択します。

      注記

      AWS IoT Greengrass は、$LATEST バージョンの Lambda エイリアスをサポートしていません。

       

      [名前] フィールドが [GG_HelloWorld]、[Version] (バージョン) が [1] に設定された [Create a new alias] (新しいエイリアスの作成) のスクリーンショット。