Lambda 関数をコンポーネント (AWS CLI) としてインポートする - AWS IoT Greengrass

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

Lambda 関数をコンポーネント (AWS CLI) としてインポートする

CreateComponentVersion オペレーションを使用して、Lambda 関数からコンポーネントを作成します。このオペレーションを呼び出すときは、lambdaFunction を指定して Lambda 関数をインポートします。

ステップ 1: Lambda 関数の設定を定義する

  1. lambda-function-component.json という名前のファイルを作成して、次の JSON オブジェクトをファイルにコピーします。lambdaArn を、インポートする Lambda 関数のARNに置き換えます。

    { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1" } }
    重要

    インポートする関数のバージョンが含まれた ARN を指定する必要があります。$LATEST のようなバージョンエイリアスは使用できません。

  2. (オプション) コンポーネントの名前 (componentName) を指定します。このパラメータを省略すると、AWS IoT Greengrass は Lambda 関数の名前を使用してコンポーネントを作成します。

    { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda" } }
  3. (オプション) コンポーネントのバージョン (componentVersion) を指定します。このパラメータを省略すると、AWS IoT Greengrass は Lambda 関数のバージョンを有効なセマンティックバージョンに変換してコンポーネントを作成します。例えば、関数のバージョンが 3 である場合、コンポーネントのバージョンは 3.0.0 になります。

    注記

    アップロードする各コンポーネントバージョンは一意である必要があります。アップロード後は編集できないため、必ず正しいコンポーネントバージョンをアップロードしてください。

    AWS IoT Greengrass はコンポーネントのセマンティックバージョンを使用します。セマンティックバージョンは、major.minor.patch といった番号システムに準拠します。例えば、バージョン 1.0.0 は、コンポーネントの最初のメジャーリリースを表しています。詳細については、「セマンティックバージョンの仕様」を参照してください。

    { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0" } }
  4. (オプション) この Lambda 関数がサポートするプラットフォームを指定します。各プラットフォームには、プラットフォームを識別するための属性のマップが含まれます。すべてのコアデバイスには、オペレーティングシステム (os) とアーキテクチャ (architecture) の属性があります。AWS IoT Greengrass Core ソフトウェアは、他のプラットフォーム属性を追加する場合があります。コアデバイスに Greengrass nucleus コンポーネント をデプロイする際、カスタムのプラットフォーム属性を指定することもできます。以下の操作を実行します。

    1. lambda-function-component.json の Lambda 関数にプラットフォームのリスト (componentPlatforms) を追加します。

      { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ ] } }
    2. サポートされている各プラットフォームをリストに追加します。各プラットフォームには識別用のフレンドリー name と属性のマップがあります。以下の例は、この関数が Linux を実行する x86 デバイスをサポートすることを指定しています。

      { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } }

      lambda-function-component.json には以下の例のようなドキュメントが含まれる場合があります。

      { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ] } }
  5. (オプション) Lambda 関数のコンポーネントの依存関係を指定します。Lambda 関数コンポーネントをデプロイすると、関数を実行するためのこれらの依存関係がデプロイに含まれます。

    重要

    AWS IoT Greengrass V1 で実行するために作成した Lambda 関数をインポートする際は、シークレット、ローカルシャドウ、ストリームマネージャーなど、関数が使用する機能に対して個々のコンポーネントの依存関係を定義する必要があります。これらのコンポーネントをハード依存関係として定義し、依存関係の状態が変化すると Lambda 関数コンポーネントが再起動するようにしてください。詳細については、「V1 Lambda 関数をインポートする」を参照してください。

    以下の操作を実行します。

    1. lambda-function-component.json の Lambda 関数にコンポーネントの依存関係 (componentDependencies) のマップを追加します。

      { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { } } }
    2. 各コンポーネントの依存関係をマップに追加します。コンポーネント名をキーとして指定し、以下のパラメータを使用してオブジェクトを指定します。

      • versionRequirement – コンポーネントの依存関係において互換性のあるバージョンを識別する npm スタイルのセマンティックバージョン制約。1 つのバージョンまたはバージョンの範囲を指定できます。セマンティックバージョン制約の詳細については、npm semver calculator を参照してください。

      • dependencyType – (オプション) 依存関係のタイプ。次から選択します。

        • SOFT - 依存関係が状態を変化させても、Lambda 関数コンポーネントは再起動しません。

        • HARD - 依存関係が状態を変化させると、Lambda 関数コンポーネントが再起動します。

        デフォルトは HARD です。

      次の例では、この Lambda 関数がストリームマネージャーコンポーネントの最初のメジャーバージョンのすべてのバージョンに依存することを指定しています。Lambda 関数コンポーネントは、ストリームマネージャーが再起動または更新されたときに再起動します。

      { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }

      lambda-function-component.json には以下の例のようなドキュメントが含まれる場合があります。

      { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } } } }
  6. (オプション) 関数の実行に使用する Lambda 関数のパラメータを設定します。環境変数、メッセージイベントソース、タイムアウト、コンテナ設定などのオプションを設定できます。以下の操作を実行します。

    1. Lambda パラメータオブジェクト (componentLambdaParameters) を lambda-function-component.json の Lambda 関数に追加します。

      { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { } } }
    2. (オプション) Lambda 関数が作業メッセージのためにサブスクライブするイベントソースを指定します。この関数をローカルのパブリッシュ/サブスクライブメッセージと AWS IoT Core MQTT メッセージにサブスクライブするように、イベントソースに指定できます。Lambda 関数は、イベントソースからメッセージを受信したときに呼び出されます。

      注記

      この関数を他の Lambda 関数またはコンポーネントからのメッセージにサブスクライブするには、この Lambda 関数コンポーネントをデプロイするときにレガシーサブスクリプションルーターコンポーネントをデプロイしてください。レガシーサブスクリプションルーターコンポーネントをデプロイするときは、Lambda 関数が使用するサブスクリプションを指定します。

      以下の操作を実行します。

      1. Lambda 関数のパラメータにイベントソース (eventSources) のリストを追加します。

        { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ ] } } }
      2. 各イベントソースをリストに追加します。各イベントソースには以下のパラメータがあります。

        • topic – メッセージをサブスクライブするためのトピック。

        • type – イベントソースのタイプ。次のオプションから選択します。

          • PUB_SUB - ローカルのパブリッシュ/サブスクライブメッセージをサブスクライブします。

            Greengrass nucleus v2.6.0 以降と、Lambda マネージャー v2.2.5 以降を使用する場合、topic のタイプを指定する際に (その中で)、MQTT トピックのワイルドカード (+ および #) を使用できます。

          • IOT_CORE – AWS IoT Core MQTT メッセージをサブスクライブ。

            topic のタイプを指定する際に、MQTT ワイルドカード (+ および #) を使用できます。

          次の例は、hello/world/+ トピックのフィルターに一致するトピックに関する AWS IoT Core MQTT にサブスクライブします。

          { "topic": "hello/world/+", "type": "IOT_CORE" }

          lambda-function-component.json は、次の例のようになります。

          { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ] } } }
    3. (オプション) Lambda 関数パラメータオブジェクトで、次のパラメータのいずれかを指定します。

      • environmentVariables – 実行時に Lambda 関数を利用できる環境変数のマップ。

      • execArgs – 実行時に Lambda 関数に渡す引数のリスト。

      • inputPayloadEncodingType – Lambda 関数がサポートするペイロードのタイプ。次のオプションから選択します。

        • json

        • binary

        デフォルト: json

      • pinned – Lambda 関数をピン留めするかどうかを示します。デフォルトは true です。

        • ピン留めされた (または存続期間の長い) Lambda 関数は、AWS IoT Greengrass が起動すると起動し、独自のコンテナで実行し続けます。

        • ピン留めされていない (またはオンデマンドの) Lambda 関数は、作業項目を受け取ったときのみ開始し、アイドル状態のまま指定された最大アイドル時間を過ぎると終了します。関数に複数の作業項目がある場合、AWS IoT Greengrass Core ソフトウェアは関数のインスタンスを複数作成します。

        maxIdleTimeInSeconds を使用して、関数の最大アイドル時間を設定します。

      • timeoutInSeconds - Lambda 関数がタイムアウトするまでの最大実行時間 (秒)。デフォルト値は 3 秒です。

      • statusTimeoutInSeconds – Lambda 関数のコンポーネントが Lambda マネージャーコンポーネントにステータスの更新を送信する間隔 (秒)。このパラメータは、ピン留めされた関数にのみ適用されます。デフォルト値は 60 秒です。

      • maxIdleTimeInSeconds – AWS IoT Greengrass Core ソフトウェアによりプロセスを停止されるまでに、ピン留めされていない Lambda 関数がアイドル状態でいられる最大時間 (秒)。デフォルト値は 60 秒です。

      • maxInstancesCount – ピン留めされていない Lambda 関数が同時に実行できるインスタンスの最大数。デフォルトは 100 件です。

      • maxQueueSize – Lambda 関数コンポーネントのメッセージキューの最大サイズ。AWS IoT Greengrass Core ソフトウェアは、Lambda 関数を実行して各メッセージを消費できるようになるまで、FIFO (first-in-first-out) キューにメッセージを保存します。デフォルトはメッセージ 1,000 件です。

      lambda-function-component.json には以下の例のようなドキュメントが含まれる場合があります。

      { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500 } } }
    4. (オプション) Lambda 関数のコンテナ設定を行います。デフォルトでは、Lambda 関数は AWS IoT Greengrass Core ソフトウェア内の分離されたランタイム環境で実行されます。また、Lambda 関数を分離されないプロセスとして実行することもできます。コンテナで Lambda 関数を実行する場合は、コンテナのメモリサイズと Lambda 関数で利用できるシステムリソースを設定します。以下の操作を実行します。

      1. Linux プロセスパラメータオブジェクト (linuxProcessParams) を、lambda-function-component.json の Lambda パラメータオブジェクトに追加します

        { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500, "linuxProcessParams": { } } } }
      2. (オプション) Lambda 関数をコンテナで実行するかどうかを指定します。isolationMode パラメータをプロセスパラメータオブジェクトに追加し、次のオプションから選択します。

        • GreengrassContainer – Lambda 関数はコンテナで実行されます。

        • NoContainer – Lambda 関数は分離されないプロセスとして実行されます。

        デフォルトは GreengrassContainer です。

      3. (オプション) コンテナで Lambda 関数を実行する場合、コンテナを利用できるメモリの量とシステムリソース (ボリュームやデバイスなど) を設定できます。以下の操作を実行します。

        1. コンテナパラメータオブジェクト (containerParams) を、lambda-function-component.json の Linux プロセスパラメータオブジェクトに追加します

          { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500, "linuxProcessParams": { "containerParams": { } } } } }
        2. (オプション) memorySizeInKB パラメータを追加して、コンテナのメモリサイズを指定します。デフォルトは 16,384 KB (16 MB) です。

        3. (オプション) mountROSysfsパラメータを追加して、コンテナがデバイスの /sys フォルダから情報を読み取れるかどうかを指定します。デフォルトは false です。

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

          1. ボリュームのリスト (volumes) をコンテナパラメータに追加します。

            { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500, "linuxProcessParams": { "containerParams": { "memorySizeInKB": 32768, "mountROSysfs": true, "volumes": [ ] } } } } }
          2. 各ボリュームをリストに追加します。各ボリュームには以下のパラメータがあります。

            • sourcePath – コアデバイスのソースフォルダへのパス。

            • destinationPath – コンテナの保存先フォルダへのパス。

            • permission - (オプション) コンテナからソースフォルダへのアクセス権限。次のオプションから選択します。

              • ro – Lambda 関数はソースフォルダへの読み取り専用アクセス権が与えられます。

              • rw – Lambda 関数はソースフォルダへの読み取り/書き込みアクセス権が与えられます。

              デフォルトは ro です。

            • addGroupOwner – (オプション) Lambda 関数コンポーネントを実行するシステムグループをソースフォルダの所有者として追加するかどうか。デフォルトは false です。

            lambda-function-component.json には以下の例のようなドキュメントが含まれる場合があります。

            { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500, "linuxProcessParams": { "containerParams": { "memorySizeInKB": 32768, "mountROSysfs": true, "volumes": [ { "sourcePath": "/var/data/src", "destinationPath": "/var/data/dest", "permission": "rw", "addGroupOwner": true } ] } } } } }
        5. (オプション) コンテナ化された Lambda 関数がアクセスできるローカルシステムデバイスを設定します。以下の操作を実行します。

          1. システムデバイスのリスト (devices) をコンテナパラメータに追加します。

            { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500, "linuxProcessParams": { "containerParams": { "memorySizeInKB": 32768, "mountROSysfs": true, "volumes": [ { "sourcePath": "/var/data/src", "destinationPath": "/var/data/dest", "permission": "rw", "addGroupOwner": true } ], "devices": [ ] } } } } }
          2. 各システムデバイスをリストに追加します。各システムデバイスには以下のパラメータがあります。

            • path – コアデバイスのシステムデバイスへのパス。

            • permission – (オプション) コンテナからシステムデバイスへのアクセス権限。次のオプションから選択します。

              • ro – Lambda 関数はシステムデバイスへの読み取り専用アクセス権が与えられます。

              • rw – Lambda 関数はシステムデバイスへの読み取り/書き込みアクセス権が与えられます。

              デフォルトは ro です。

            • addGroupOwner – (オプション) Lambda 関数コンポーネントを実行するシステムグループをシステムデバイスの所有者として追加するかどうか。デフォルトは false です。

          lambda-function-component.json には以下の例のようなドキュメントが含まれる場合があります。

          { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500, "linuxProcessParams": { "containerParams": { "memorySizeInKB": 32768, "mountROSysfs": true, "volumes": [ { "sourcePath": "/var/data/src", "destinationPath": "/var/data/dest", "permission": "rw", "addGroupOwner": true } ], "devices": [ { "path": "/dev/sda3", "permission": "rw", "addGroupOwner": true } ] } } } } }
  7. (オプション) コンポーネントのタグ (tags) を追加します。詳細については、「AWS IoT Greengrass Version 2 リソースのタグ付け」を参照してください。

ステップ 2: Lambda 関数コンポーネントを作成する

  1. 以下のコマンドを実行して、lambda-function-component.json から Lambda 関数コンポーネントを作成します。

    aws greengrassv2 create-component-version --cli-input-json file://lambda-function-component.json

    リクエストが成功すると、レスポンスは次の例のようになります。

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorldLambda:versions:1.0.0", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "creationTimestamp": "Mon Dec 15 20:56:34 UTC 2020", "status": { "componentState": "REQUESTED", "message": "NONE", "errors": {} } }

    次のステップでコンポーネントの状態をチェックするために、出力から arn をコピーします。

  2. コンポーネントを作成すると、その状態は REQUESTED になります。その後、AWS IoT Greengrass がコンポーネントがデプロイ可能であるかどうかを検証します。次のコマンドを実行して、コンポーネントのステータスを照会し、コンポーネントがデプロイ可能であることを確認します。arn を、前のステップで書き留めた ARN に置き換えます。

    aws greengrassv2 describe-component \ --arn "arn:aws:greengrass:region:account-id:components:com.example.HelloWorldLambda:versions:1.0.0"

    コンポーネントが検証されると、レスポンスでコンポーネントの状態が DEPLOYABLE であることが示されます。

    { "arn": "arn:aws:greengrass:region:account-id:components:com.example.HelloWorldLambda:versions:1.0.0", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "creationTimestamp": "2020-12-15T20:56:34.376000-08:00", "publisher": "AWS Lambda", "status": { "componentState": "DEPLOYABLE", "message": "NONE", "errors": {} }, "platforms": [ { "name": "Linux x86", "attributes": { "architecture": "x86", "os": "linux" } } ] }

    コンポーネントが DEPLOYABLE になった後は、Lambda 関数をコアデバイスにデプロイできます。詳細については、「デバイスに AWS IoT Greengrass コンポーネントのデプロイ」を参照してください。