

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

# Lambda 関数をコンポーネントとしてインポートする (コンソール)
<a name="import-lambda-function-console"></a>

[AWS IoT Greengrass コンソール](https://console.aws.amazon.com/greengrass)を使用して Lambda 関数コンポーネントを作成する場合、既存の AWS Lambda 関数をインポートしてから、Greengrass デバイス上で動作するコンポーネントを作成するように設定します。

開始する前に、Greengrass デバイスで Lambda 関数を実行するための[要件](https://docs.aws.amazon.com/greengrass/v2/developerguide/run-lambda-functions.html#run-lambda-functions-requirements)を確認してください。

**Topics**
+ [ステップ 1: インポートする Lambda 関数を選択する](#import-lambda-console-choose-function)
+ [ステップ 2: Lambda 関数パラメータを設定する](#import-lambda-console-configure-function-parameters)
+ [ステップ 3: (オプション) Lambda 関数がサポートするプラットフォームを指定します。](#import-lambda-console-configure-platforms)
+ [ステップ 4: (オプション) Lambda 関数のコンポーネントの依存関係を指定します。](#import-lambda-console-configure-dependencies)
+ [ステップ 5: (オプション) コンテナで Lambda 関数を実行する](#import-lambda-console-run-isolated)
+ [ステップ 6: Lambda 関数コンポーネントを作成する](#import-lambda-console-create-deploy)

## ステップ 1: インポートする Lambda 関数を選択する
<a name="import-lambda-console-choose-function"></a>

1. [AWS IoT Greengrass コンソール](https://console.aws.amazon.com/greengrass)のナビゲーションメニューで、**[Components]** (コンポーネント) を選択します。

1. **[Components]** (コンポーネント) ページで、**[Create component]** (コンポーネントの作成) を選択します。

1. **[Component information]** (コンポーネント情報) の **[Create component]** (コンポーネントの作成) ページで、**[Import Lambda function]** (Lambda 関数のインポート) を選択します。

1. **[Lambda function]** (Lambda 関数) で、インポートする Lambda 関数を検索して選択します。

   AWS IoT Greengrass は、Lambda 関数の名前でコンポーネントを作成します。

1. **[Lambda function version]** (Lambda 関数のバージョン) で、インポートするバージョンを選択します。`$LATEST` などの Lambda エイリアスを選択することはできません。

   AWS IoT Greengrass は、Lambda 関数のバージョンを有効なセマンティックバージョンとしてコンポーネントを作成します。例えば、関数のバージョンが `3` である場合、コンポーネントのバージョンは `3.0.0` になります。

## ステップ 2: Lambda 関数パラメータを設定する
<a name="import-lambda-console-configure-function-parameters"></a>

**[Lambda function configuration]** (Lambda 関数の設定) の **[Create component]** (コンポーネントの作成) ページで、Lambda 関数の実行に使用する次のパラメータを設定します。

1. (オプション) Lambda 関数が作業メッセージのためにサブスクライブするイベントソースのリストを追加します。イベントソースを指定して、この関数をローカルのパブリッシュ/サブスクライブメッセージと AWS IoT Core MQTT メッセージにサブスクライブできます。Lambda 関数は、イベントソースからメッセージを受信したときに呼び出されます。
**注記**  
この関数を他の Lambda 関数またはコンポーネントからのメッセージにサブスクライブするには、この Lambda 関数コンポーネントをデプロイするときに[レガシーサブスクリプションルーターコンポーネント](legacy-subscription-router-component.md)をデプロイしてください。レガシーサブスクリプションルーターコンポーネントをデプロイするときは、Lambda 関数が使用するサブスクリプションを指定します。

   **[Event sources]** (イベントソース) で以下を実行して、イベントソースを追加します。

   1. 追加したイベントソースごとに、次のオプションを指定します。
      + **[Topic]** (トピック) – メッセージをサブスクライブするためのトピック。
      + **[Type]** (タイプ) – イベントソースのタイプ。次のオプションから選択します。
        + **ローカルの公開/サブスクライブ** – ローカルの公開/サブスクライブメッセージに対するサブスクライブ。

          [Greengrass nucleus](greengrass-nucleus-component.md) v2.6.0 以降、または [Lambda マネージャー](lambda-manager-component.md) v2.2.5 以降を使用する場合、**[Topic]** (トピック) でタイプを指定する際に、MQTT トピックのワイルドカード (`+` および `#`) を使用できます。
        + **AWS IoT Core MQTT** – AWS IoT Core MQTT メッセージをサブスクライブします。

          **[Topic]** (トピック) でタイプを指定する際に、MQTT ワイルドカード (`+` および `#`) を使用できます。

   1. 別のイベントソースを追加するには、**[Add event source]** (イベントソースの追加) をクリックし、前の手順を繰り返します。イベントソースを削除するには、削除するイベントソースの横にある **[Remove]** (削除) を選択します。

1. **[Timeout (seconds)]** (タイムアウト (秒)) には、ピン留めされていない Lambda 関数のタイムアウトまでの最大実行時間 (秒) を入力してください。デフォルト値は 3 秒です。

1. **[Pinned]** (ピン留め) では、Lambda 関数コンポーネントをピン留めするかどうかを選択します。デフォルトは **[True]** (真) です。<a name="lambda-function-lifecycle-type"></a>
   + 固定 (または存続期間の長い) Lambda 関数は、 AWS IoT Greengrass が起動したときに開始され、独自のコンテナで実行され続けます。
   + ピン留めされていない (またはオンデマンドの) Lambda 関数は、作業項目を受け取ったときのみ開始し、アイドル状態のまま指定された最大アイドル時間を過ぎると終了します。関数に複数の作業項目がある場合、 AWS IoT Greengrass Core ソフトウェアは関数の複数のインスタンスを作成します。

1. (オプション) **[Additional parameters]** (その他のパラメータ) で、以下の Lambda 関数パラメータを設定します。
   + **[Status timeout (seconds)]** (ステータスタイムアウト (秒)) – Lambda 関数のコンポーネントが Lambda マネージャーコンポーネントにステータスの更新を送信する間隔 (秒)。このパラメータは、ピン留めされた関数にのみ適用されます。デフォルト値は 60 秒です。
   + **[Maximum queue size]** (最大キューサイズ) – Lambda 関数コンポーネントのメッセージキューの最大サイズ。 AWS IoT Greengrass Core ソフトウェアは、Lambda 関数を実行して各メッセージを消費できるようになるまで、メッセージを FIFO (先入れ先出し) キューに保存します。デフォルトはメッセージ 1,000 件です。
   + **[Maximum number of instances]** (インスタンスの最大数) – ピン留めされていない Lambda 関数が同時に実行できるインスタンスの最大数。デフォルトは 100 件です。
   + **最大アイドル時間 (秒)** — AWS IoT Greengrass Core ソフトウェアがプロセスを停止するまでに、ピン留めされていない Lambda 関数がアイドル状態になる最大時間を秒単位で表します。デフォルト値は 60 秒です。
   + **[Encoding type]** (エンコードタイプ) – Lambda 関数がサポートするペイロードのタイプ。次のオプションから選択します。
     + **JSON**
     + **バイナリ**

     デフォルトは JSON です。

1. (オプション) 実行時に Lambda 関数に渡すコマンドライン引数のリストを指定します。

   1. **[Additional parameters, Process arguments]** (追加パラメータ、プロセス引数) で **[Add argument]** (引数を追加) を選択します。

   1. 追加する引数ごとに、関数に渡す引数を入力します。

   1. 引数を削除するには、削除する引数の横にある **[Remove]** (削除) を選択します。

1. (オプション) 実行時に Lambda 関数を利用できる環境変数を指定してください。環境変数を使用すると、関数コードを変更することなく設定を保存および更新できます。

   1. **[Additional parameters, Environment variables]** (追加パラメータ、環境変数) で、**[Add environment variables]** (環境変数を追加) を選択します。

   1. 追加する環境変数ごとに、次のオプションを指定します。
      + **[Key]** (キー) – 変数名。
      + **[Value]** (値) – この変数のデフォルト値。

   1. 環境変数を削除するには、削除する環境変数の横にある **[Remove]** (削除) を選択します。

## ステップ 3: (オプション) Lambda 関数がサポートするプラットフォームを指定します。
<a name="import-lambda-console-configure-platforms"></a>

すべてのコアデバイスには、オペレーティングシステムとアーキテクチャの属性があります。Lambda 関数コンポーネントをデプロイすると、 AWS IoT Greengrass Core ソフトウェアは指定したプラットフォーム値とコアデバイスのプラットフォーム属性を比較して、Lambda 関数がそのデバイスでサポートされているかどうかを判断します。

**注記**  
コアデバイスに Greengrass nucleus コンポーネント をデプロイする際、カスタムのプラットフォーム属性を指定することもできます。詳細については、「[Greengrass nucleus コンポーネント](greengrass-nucleus-component.md)」の「[プラットフォームの上書きパラメータ](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-platform-overrides)」を参照してください。

**[Lambda function configuration, Additional parameters, Platforms]** (Lambda 関数の設定、追加パラメータ、プラットフォーム) で以下の手順を実行して、この Lambda 関数がサポートするプラットフォームを指定します。

1. プラットフォームごとに以下のオプションを指定します。
   + **[Operating system]** (オペレーティングシステム) – プラットフォームのオペレーティングシステムの名前。現在、サポートされている値は `linux` のみです。
   + **[Architecture]** (アーキテクチャ) – プラットフォームのプロセッサアーキテクチャ。サポートされている値は以下のとおりです。
     + `amd64`
     + `arm`
     + `aarch64`
     + `x86`

1. 別のプラットフォームを追加するには、**[Add platform]** (プラットフォームを追加) を選択して、先の手順を繰り返します。サポートされているプラットフォームを削除するには、削除するプラットフォームの横にある **[Remove]** (削除) を選択します。

## ステップ 4: (オプション) Lambda 関数のコンポーネントの依存関係を指定します。
<a name="import-lambda-console-configure-dependencies"></a>

コンポーネントの依存関係は AWS、関数が使用する追加の提供コンポーネントまたはカスタムコンポーネントを識別します。Lambda 関数コンポーネントをデプロイすると、関数を実行するためのこれらの依存関係がデプロイに含まれます。

**重要**  <a name="import-v1-lambda-note"></a>
 AWS IoT Greengrass V1 で実行するために作成した Lambda 関数をインポートするには、シークレット、ローカルシャドウ、ストリームマネージャーなど、関数が使用する機能の個々のコンポーネントの依存関係を定義する必要があります。これらのコンポーネントを[ハード依存関係](component-recipe-reference.md)として定義し、依存関係の状態が変化すると Lambda 関数コンポーネントが再起動するようにしてください。詳細については、「[V1 Lambda 関数をインポートする](set-up-v2-test-device.md#run-v1-lambda-functions)」を参照してください。

**[Lambda function configuration, Additional parameters, Component dependencies]** (Lambda 関数の設定、追加パラメータ、コンポーネントの依存関係) で以下の手順を実行し、Lambda 関数のコンポーネントの依存関係を指定します。

1.  **[Add dependency]** (依存関係の追加) を選択します。

1. 追加したコンポーネントの依存関係ごとに、以下のオプションを指定します。
   + **[Component name]** (コンポーネント名) – コンポーネント名。たとえば **aws.greengrass.StreamManager** と入力して[ストリームマネージャーコンポーネント](stream-manager-component.md)を含めます。
   + **[Version requirement]** (バージョン要件) – このコンポーネントの依存関係において互換性のあるバージョンを識別する npm スタイルのセマンティックバージョン制約。1 つのバージョンまたはバージョンの範囲を指定できます。たとえば **^1.0.0** と入力すると、この Lambda 関数がストリームマネージャーコンポーネントの最初のメジャーバージョンのすべてのバージョンに依存することを指定できます。セマンティックバージョン制約の詳細については、[npm semver calculator](https://semver.npmjs.com/) を参照してください。
   + **[Type]** (タイプ) – 依存関係のタイプ。次のオプションから選択します。
     + **[Hard]** (強) – 依存関係が状態を変化させると、Lambda 関数コンポーネントが再起動します。デフォルトではこれが選択されています。
     + **[Soft]** (弱) – 依存関係が状態を変化させても、Lambda 関数コンポーネントは再起動しません。

1. コンポーネントの依存関係を削除するには、コンポーネントの依存関係の横にある**[Remove]** (削除) を選択します。

## ステップ 5: (オプション) コンテナで Lambda 関数を実行する
<a name="import-lambda-console-run-isolated"></a>

デフォルトでは、Lambda 関数は AWS IoT Greengrass Core ソフトウェア内の分離されたランタイム環境で実行されます。また、Lambda 関数を分離されないプロセスとして (つまり**[No container]** (コンテナなし) モードで) 実行することもできます。

**[Linux process configuration]** (Linux プロセス設定) で、**[Isolation mode]** (分離モード) について、Lambda 関数のコンテナ化を以下のオプションから選択します。
+ **[Greengrass container]** (Greengrass コンテナ) – The Lambda 関数はコンテナで実行されます。デフォルトではこれが選択されています。
+ **[No container]** (コンテナなし) – Lambda 関数は分離されないプロセスとして実行されます。

コンテナで Lambda 関数を実行する場合は、以下の手順で Lambda 関数のプロセス設定を行います。

1. コンテナを利用できるメモリの量とシステムリソース (ボリュームやデバイスなど) を設定します。

   **[Container parameters]** (コンテナパラメータ) で以下を行います。

   1. **[Memory size]** (メモリサイズ) にはコンテナに割り当てるメモリサイズを入力します。メモリサイズは **[MB]** または **[KB]** で指定できます。

   1. **[Read-only sys folder]** (読み取り専用の Sys フォルダ) について、コンテナがデバイスの `/sys` フォルダから情報を読み取れるかどうか指定します。デフォルトは **[False]** (偽) です。

1. (オプション) コンテナ化された Lambda 関数がアクセスできるローカルボリュームを設定します。ボリュームを定義すると、 AWS IoT Greengrass Core ソフトウェアはソースファイルをコンテナ内の宛先にマウントします。

   1. **[Volumes]** (ボリューム) で、**[Add volume]** (ボリュームを追加) を選択します。

   1. 追加したボリュームごとに、次のオプションを指定します。
      + **[Physical volume]** (物理ボリューム) –コアデバイスのソースフォルダへのパス。
      + **[Logical volume]** (論理ボリューム) – コンテナの保存先フォルダへのパス。
      + **[Permission]** (アクセス権限) – (オプション) コンテナからソースフォルダへのアクセス権限。次のオプションから選択します。
        + **[Read-only]** (読み取り専用) – Lambda 関数はソースフォルダへの読み取り専用アクセス権が与えられます。デフォルトではこれが選択されています。
        + **[Read-write]** (読み取り/書き取り) – Lambda 関数はソースフォルダへの読み取り/書き込みアクセス権が与えられます。
      + **[Add group owner]** (グループ所有者の追加) – (オプション) Lambda 関数コンポーネントを実行するシステムグループをソースフォルダの所有者として追加するかどうか。デフォルトは **[False]** (偽) です。

   1. ボリュームを削除するには、削除するボリュームの横にある **[Remove]** (削除) を選択します。

1. (オプション) コンテナ化された Lambda 関数がアクセスできるローカルシステムデバイスを設定します。

   1. **[Devices]** (デバイス) で、**[Add device]** (デバイスの追加) を選択します。

   1. 追加したデバイスごとに、次のオプションを指定します。
      + **[Mount path]** (マウントパス) – コアデバイスのシステムデバイスへのパス。
      + **[Permission]** (アクセス権限) – (オプション) コンテナからシステムデバイスへのアクセス権限。次のオプションから選択します。
        + **[Read-only]** (読み取り専用) – Lambda 関数はシステムデバイスへの読み取り専用アクセス権が与えられます。デフォルトではこれが選択されています。
        + **[Read-write]** (読み取り/書き取り) – Lambda 関数はソースフォルダへの読み取り/書き込みアクセス権が与えられます。
      + **[Add group owner]** (グループ所有者の追加) – (オプション) Lambda 関数コンポーネントを実行するシステムグループをシステムデバイスの所有者として追加するかどうか。デフォルトは **[False]** (偽) です。

## ステップ 6: Lambda 関数コンポーネントを作成する
<a name="import-lambda-console-create-deploy"></a>

Lambda 関数コンポーネントを設定した後は、**[Create]** (作成) をクリックして新しいコンポーネントの作成を完了します。

コアデバイスで Lambda 関数を実行するには、新しいコンポーネントをコアデバイスにデプロイします。詳細については、「[AWS IoT Greengrass コンポーネントをデバイスにデプロイする](manage-deployments.md)」を参照してください。