

サポート終了通知: 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="package"></a>

このステップでは、次の操作を行います。
+ Lambda 関数コードと依存関係を含む関数デプロイパッケージを作成します。
+ Lambda コンソールを使用して Lambda 関数を作成し、デプロイパッケージをアップロードします。
+ Lambda 関数のバージョンを発行し、そのバージョンを指すエイリアスを作成します。

 

1. コンピュータで、モジュール 3-1 の [Lambda 関数の作成とパッケージ化](create-lambda.md)でダウンロードして抽出した AWS IoT Greengrass Core SDK for Python に移動します。

   このモジュールの Lambda 関数では、以下を使用します。
   + `examples\HelloWorldCounter` の `greengrassHelloWorldCounter.py` ファイル。このファイルに、Lambda 関数コードが記述されています。
   + `greengrasssdk` フォルダ。これは SDK です。

1. Lambda 関数デプロイパッケージを作成します。

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

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

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

      ```
      zip -r hello_world_counter_python_lambda.zip greengrasssdk greengrassHelloWorldCounter.py
      ```

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

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

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

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

   [**Create function** (関数の作成)] を選択します。  
![\[[Function name] (関数名) フィールドが [Greengrass_HelloWorld] に設定され、[Runtime] (ランタイム) フィールドが [Python 3.7] に設定された [Basic information] (基本情報) セクション。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/gg-get-started-023-3.png)

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_counter_python_lambda.zip` デプロイパッケージを選択します。次に、**[保存]** を選択します。

   1. <a name="lambda-console-runtime-settings-para"></a>関数の **[Code]** (コード) タブにある **[Runtime settings]** (ランタイム設定) で **[Edit]** (編集) を選択し、次の値を入力します。
      + **[ランタイム]** で **[Python 3.7]** を選択します。
      + **[ハンドラ]** に **greengrassHelloWorldCounter.function\$1handler** と入力します。

   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. 関数の最初のバージョンを発行します。

   1. ページの上部の **[Actions]** (アクション) メニューから、**[Publish new version]** (新しいバージョンを発行) を選択します。[**バージョンの説明**] に「**First version**」と入力します。

   1. **[発行]** を選択します。

1. 関数バージョンのエイリアスを作成します。

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

   1. **[名前]** に **GG\$1HW\$1Counter** と入力します。

   1. **[バージョン]** で、**[1]** を選択します。

   1. [**Save**] を選択します。  
![\[[Name] (名前) フィールドが [GG_HW_Counter] に設定され、[Version] (バージョン) フィールドが [1] に設定された、[Create alias] (エイリアスの作成) のスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/gg-get-started-048.png)

   エイリアスは、Greengrass デバイスがサブスクライブできる Lambda 関数の単一のエンティティを作成します。この方法では、関数が変更されるたびにサブスクリプションを新しい Lambda 関数バージョン番号で更新する必要がありません。