AWS IoT Greengrass Version 1 は機能更新を受信しなくなり、2023 年 6 月 30 日までセキュリティパッチとバグ修正のみ受信します。詳細については、「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 をコアデバイスにインストールする必要があります。
-
AWS IoT Greengrass Core SDK のダウンロードページから、AWS IoT Greengrass Core SDK for Python をお使いのコンピュータにダウンロードします。
-
ダウンロードしたパッケージを解凍して、Lambda 関数コードおよび SDK を取得します。
このモジュールの Lambda 関数では、以下を使用します。
-
examples\HelloWorld
のgreengrassHelloWorld.py
ファイル。このファイルに、Lambda 関数コードが記述されています。関数は 5 秒ごとに 2 つのメッセージのいずれかをhello/world
トピックに発行します。 -
greengrasssdk
フォルダ。これは SDK です。
-
-
greengrassHelloWorld.py
を含むHelloWorld
フォルダにgreengrasssdk
フォルダをコピーします。 -
Lambda 関数デプロイパッケージを作成するには、
greengrassHelloWorld.py
とgreengrasssdk
フォルダをhello_world_python_lambda.zip
という名前のzip
圧縮ファイルに保存します。py
ファイルとgreengrasssdk
フォルダはディレクトリのルートにある必要があります。UNIX 互換システム (Mac のターミナルを含む) では、次のコマンドを使用してファイルとフォルダをパッケージ化できます。
zip -r hello_world_python_lambda.zip greengrasssdk greengrassHelloWorld.py
注記 ディストリビューションによっては、必要に応じて最初に
zip
をインストールします。そのために、sudo apt-get install zip
などを実行します。(インストールコマンドはお客様のディストリビューションと異なる場合があります)。これで、Lambda 関数を作成して、デプロイパッケージをアップロードする準備ができました。
-
Lambda コンソールを開き、[関数の作成] を選択します。
-
Author from scratch(製作者を最初から) を選択します。
-
関数に
Greengrass_HelloWorld
という名前を付け、残りのフィールドを以下のように設定します。-
[Runtime (ランタイム)] で [Python 3.7] を選択します。
-
[Permissions] (アクセス許可) はデフォルト設定のままにしておきます。これで Lambda への基本的なアクセス許可を付与する実行ロールが作成されます。このロールは、AWS IoT Greengrass によっては使用されません。
[Create function] (関数の作成) を選択します。
-
-
Lambda 関数のデプロイパッケージをアップロードします。
-
[Code] (コード) タブの [Code source] (コードソース) で、[Upload from] (アップロード元) を選択します。ドロップダウンから [.zip file] (.zip ファイル) を選択します。
-
[Upload] (アップロード) を選択し、
hello_world_python_lambda.zip
デプロイパッケージを選択します。次に、保存を選択します。 -
関数の [Code] (コード) タブにある [Runtime settings] (ランタイム設定) で [Edit] (編集) を選択し、次の値を入力します。
-
[Runtime (ランタイム)] で [Python 3.7] を選択します。
-
[ハンドラ] に「
greengrassHelloWorld.function_handler
」と入力します。
-
-
[Save] を選択します。
注記 AWS Lambda コンソールの [Test] (テスト) ボタンは、この関数では機能しません。AWS IoT Greengrass Core SDK には、AWS Lambda コンソールで Greengrass Lambda 関数を個別に実行するために必要なモジュールは含まれていません。これらのモジュール (例えば
greengrass_common
) が関数に提供されるのは、Greengrass Core にデプロイされた後になります。
-
-
Lambda 関数を発行します。
-
ページの上部の [Actions] (アクション) メニューから、[Publish new version] (新しいバージョンを発行) を選択します。
-
[バージョンの説明] に「
First version
」と入力し、[発行] を選択します。
-
-
注記 Greengrass グループは、Lambda 関数をエイリアス別 (推奨) またはバージョン別に参照できます。エイリアスを使用すると、関数コードを更新する時にサブスクリプションテーブルやグループ定義を変更する必要がないため、コード更新を簡単に管理できます。その代わりに、新しい関数バージョンにエイリアスを指定するだけで済みます。
-
ページ上部の [Actions] (アクション) メニューから、[Create alias] (エイリアスの作成) を選択します。
-
エイリアスに
GG_HelloWorld
という名前を付け、バージョンを1
(先ほど発行したバージョンに対応) に設定して、[Save] (保存) を選択します。注記 AWS IoT Greengrass は、$LATEST バージョンの Lambda エイリアスをサポートしていません。
-