

サポート終了通知: 2026 年 10 月 7 日、 AWS はサポートを終了します AWS IoT Greengrass Version 1。2026 年 10 月 7 日以降、 AWS IoT Greengrass V1 リソースにアクセスできなくなります。詳細については、[「 からの移行 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)」を参照してください。

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

# Lambda 関数の作成とパッケージ化
<a name="create-lambda"></a>

このモジュールの Python Lambda 関数の例では、Python 用の [AWS IoT Greengrass Core SDK](lambda-functions.md#lambda-sdks-core) を使用して MQTT メッセージを発行しています。

このステップでは、次の操作を行います。
+  AWS IoT Greengrass Core SDK for Python をコンピュータ ( AWS IoT Greengrass コアデバイスではない) にダウンロードします。
+ Lambda 関数コードと依存関係を含む関数デプロイパッケージを作成します。
+ Lambda コンソールを使用して Lambda 関数を作成し、デプロイパッケージをアップロードします。
+ Lambda 関数のバージョンを発行し、そのバージョンを指すエイリアスを作成します。

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

 <a name="create-lambda-procedure"></a>

1. <a name="download-ggc-sdk"></a> [AWS IoT Greengrass Core SDK](what-is-gg.md#gg-core-sdk-download) ダウンロードページから、 AWS IoT Greengrass Core SDK for Python をコンピュータにダウンロードします。

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

   このモジュールの Lambda 関数では、以下を使用します。
   + `examples\HelloWorld` の `greengrassHelloWorld.py` ファイル。このファイルに、Lambda 関数コードが記述されています。関数は 5 秒ごとに 2 つのメッセージのいずれかを `hello/world` トピックに発行します。
   + `greengrasssdk` フォルダ。これは SDK です。

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

1. Lambda 関数デプロイパッケージを作成するには、`greengrassHelloWorld.py` と `greengrasssdk` フォルダを `hello_world_python_lambda.zip` という名前の `zip` 圧縮ファイルに保存します。`py` ファイルと `greengrasssdk` フォルダはディレクトリのルートにある必要があります。  
![\[zip 圧縮された hello_word_python_lambda.zip の内容を示すスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/gg-get-started-017.png)

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

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

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

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

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

1. 関数に **Greengrass\$1HelloWorld** という名前を付け、残りのフィールドを以下のように設定します。
   + **[ランタイム]** で **[Python 3.7]** を選択します。
   + **[アクセス許可]** はデフォルト設定のままにしておきます。これで Lambda への基本的なアクセス許可を付与する実行ロールが作成されます。このロールは では使用されません AWS IoT Greengrass。

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

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

   1. <a name="lambda-console-upload"></a>**[Code]** (コード) タブの **[Code source]** (コードソース) で、**[Upload from]** (アップロード元) を選択します。ドロップダウンから **[.zip ファイル]** を選択します。  
![\[[.zip ファイル] が強調表示された [アップロード元] ドロップダウンリスト。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. **[アップロード]** を選択し、`hello_world_python_lambda.zip` デプロイパッケージを選択します。次に、**[保存]** を選択します。

   1. <a name="lambda-console-runtime-settings-para"></a>関数の **[Code]** (コード) タブにある **[Runtime settings]** (ランタイム設定) で **[Edit]** (編集) を選択し、次の値を入力します。
      + **[ランタイム]** で **[Python 3.7]** を選択します。
      + **[ハンドラ]** に **greengrassHelloWorld.function\$1handler** と入力します。  
![\[[Runtime] (ランタイム) フィールドが [Python 3.7] に設定され、[Handler] (ハンドラ) フィールドが [greengrassHelloWorld.function_handler] に設定された [Runtime settings] (ランタイム設定) セクション。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/gg-get-started-023-2.png)

   1. <a name="lambda-console-save-config"></a>[**Save**] を選択します。
**注記**  
 AWS Lambda コンソールの**テスト**ボタンは、この関数では機能しません。 AWS IoT Greengrass Core SDK には、Greengrass Lambda 関数を AWS Lambda コンソールで個別に実行するために必要なモジュールは含まれていません。これらのモジュール (例えば `greengrass_common`) が関数に提供されるのは、Greengrass Core にデプロイされた後になります。

1. <a name="publish-function-version"></a>Lambda 関数を発行します。

   1. ページの上部の **[Actions]** (アクション) メニューから、**[Publish new version]** (新しいバージョンを発行) を選択します。  
![\[[新しいバージョンを発行] が強調表示された [アクション] メニューのスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/gg-get-started-026.png)

   1. **[バージョンの説明]** に **First version** と入力し、**[発行]** を選択します。  
![\[[バージョンの説明] フィールドが「First version」に設定され、[発行] ボタンが強調表示されたスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/gg-get-started-027.png)

1. <a name="create-version-alias"></a>Lambda 関数の[バージョン](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html)の[エイリアス](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html)を作成します。
**注記**  
Greengrass グループは、Lambda 関数をエイリアス別 (推奨) またはバージョン別に参照できます。エイリアスを使用すると、関数コードを更新する時にサブスクリプションテーブルやグループ定義を変更する必要がないため、コード更新を簡単に管理できます。その代わりに、新しい関数バージョンにエイリアスを指定するだけで済みます。

   1. ページ上部の **[Actions]** (アクション) メニューから、**[Create alias]** (エイリアスの作成) を選択します。  
![\[[エイリアスの作成] に設定された [アクション] メニューのスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/gg-get-started-028.png)

   1. エイリアスに **GG\$1HelloWorld** という名前を付け、バージョンを **1** (先ほど発行したバージョンに対応) に設定して、**[Save]** (保存) を選択します。
**注記**  
AWS IoT Greengrass は、**\$1LATEST** バージョンの Lambda エイリアスをサポートしていません。

         
![\[[名前] フィールドが [GG_HelloWorld]、[Version] (バージョン) が [1] に設定された [Create a new alias] (新しいエイリアスの作成) のスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/gg-get-started-029.png)