V1 アプリケーションをテストする新しい V2 コアデバイスをセットアップする - AWS IoT Greengrass

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

V1 アプリケーションをテストする新しい V2 コアデバイスをセットアップする

AWS IoT Greengrass V1 アプリケーション用に AWSが提供するコンポーネントと機能をデプロイして AWS Lambda テストするために、新しい AWS IoT Greengrass V2 コアデバイスをセットアップします。この V2 コアデバイスを使用して、コアデバイスでネイティブプロセスを実行する追加のカスタム Greengrass コンポーネントを開発およびテストすることもできます。V2 コアデバイスでアプリケーションをテストした後、既存の V1 コアデバイスを V2 にアップグレードし、V1 機能を提供する V2 コンポーネントをデプロイできます。

ステップ 1: 新しいデバイスに AWS IoT Greengrass V2 をインストールする

Core AWS IoT Greengrass ソフトウェア v2.x を新しいデバイスにインストールします。[getting started tutorial] (入門チュートリアル) に従ってデバイスをセットアップし、コンポーネントを開発およびデプロイする方法を学ぶことができます。このチュートリアルでは、[automatic provisioning] (自動プロビジョニング) を使用して、デバイスをすばやくセットアップできます。 AWS IoT Greengrass Core ソフトウェア v2.x をインストールするときは、Greengrass CLI をデプロイする --deploy-dev-tools引数を指定して、コンポーネントをデバイス上で直接開発、テスト、デバッグできるようにします。プロキシの背後で AWS IoT Greengrass Core ソフトウェアをインストールする方法やハードウェアセキュリティモジュール (HSM) を使用する方法など、その他のインストールオプションの詳細については、「」を参照してくださいAWS IoT Greengrass Core ソフトウェアをインストールします。

(オプション) Amazon CloudWatch Logs へのログ記録を有効にする

V2 コアデバイスが Amazon CloudWatch Logs にログをアップロードできるようにするには、 AWSが提供するログマネージャーコンポーネント をデプロイできます。 CloudWatch Logs を使用してコンポーネントログを表示できるため、コアデバイスのファイルシステムにアクセスせずにデバッグとトラブルシューティングを行うことができます。詳細については、「AWS IoT Greengrass ログのモニタリング」を参照してください。

ステップ 2: AWS IoT Greengrass V2 コンポーネントを作成してデプロイし、 AWS IoT Greengrass V1 アプリケーションを移行する

ほとんどの AWS IoT Greengrass V1 アプリケーションは で実行できます AWS IoT Greengrass V2。Lambda 関数は、 で実行されるコンポーネントとしてインポートでき AWS IoT Greengrass V2、 AWS IoT Greengrass コネクタと同じ機能を提供する AWSが提供するコンポーネントを使用できます。

カスタムコンポーネントを開発して、Greengrass コアデバイスで実行する任意の機能またはランタイムをビルドすることもできます。コンポーネントをローカルで開発およびテストする方法の詳細については、「AWS IoT Greengrass コンポーネントの作成」を参照してください。

V1 Lambda 関数をインポートする

Lambda 関数を AWS IoT Greengrass V2 コンポーネントとしてインポートできます。以下のアプローチのいずれかを選択できます。

  • V1 Lambda 関数を Greengrass コンポーネントとして直接インポートします。

  • AWS IoT Device SDK v2 の Greengrass ライブラリを使用するように Lambda 関数を更新し、Lambda 関数を Greengrass コンポーネントとしてインポートします。

  • Lambda 以外のコードと AWS IoT Device SDK v2 を使用して、Lambda 関数と同じ機能を実装するカスタムコンポーネントを作成します。

Lambda 関数がストリームマネージャーやローカルシークレットなどの機能を使用する場合は、これらの機能をパッケージ化する AWSが提供するコンポーネントへの依存関係を定義する必要があります。Lambda 関数コンポーネントをデプロイすると、依存関係として定義する各機能のコンポーネントもデプロイに含まれます。デプロイでは、コアデバイスにデプロイするシークレットなどのパラメータを設定できます。V1 のすべての機能で、V2 の Lambda 関数にコンポーネントの依存関係が必要なわけではありません。次のリストは、V2 Lambda 関数コンポーネントで V1 機能を使用する方法を説明しています。

  • 他の AWS サービスにアクセスする

    Lambda 関数が AWS 認証情報を使用して他の AWS サービスにリクエストを行う場合、コアデバイスのトークン交換ロールは、コアデバイスが Lambda 関数が使用する AWS オペレーションを実行することを許可する必要があります。詳細については、「コアデバイスが AWS サービスとやり取りできるように認証する」を参照してください。

  • ストリームマネージャー

    Lambda 関数がストリームマネージャーを使用している場合は、関数をインポートするときのコンポーネントの依存関係として aws.greengrass.StreamManager を指定します。ストリームマネージャーコンポーネントをデプロイするときに、ターゲットコアデバイスに設定するストリームマネージャーパラメータを指定します。コアデバイスのトークン交換ロールは、コアデバイスがストリームマネージャーで使用する AWS クラウド 送信先にアクセスできるようにする必要があります。詳細については、「ストリームマネージャー」を参照してください。

  • ローカルシークレット

    Lambda 関数がローカルシークレットを使用している場合は、関数をインポートするときのコンポーネントの依存関係として aws.greengrass.SecretManager を指定します。シークレットマネージャーコンポーネントをデプロイするときは、ターゲットコアデバイスにデプロイするシークレットリソースを指定します。コアデバイスのトークン交換ロールは、コアデバイスがデプロイするシークレットリソースを取得できるようにする必要があります。詳細については、「シークレットマネージャー」を参照してください。

    Lambda 関数コンポーネントをデプロイするときは、 AWS IoT Device SDK V2 で IPC オペレーションを使用するアクセス許可を付与する IPC 承認ポリシーを持つように設定します。 GetSecretValue

  • ローカルシャドウ

    Lambda 関数がローカルシャドウとやり取りする場合は、 AWS IoT Device SDK V2 を使用するように Lambda 関数コードを更新する必要があります。また、関数をインポートするときのコンポーネントの依存関係として aws.greengrass.ShadowManager を指定する必要があります。詳細については、「デバイスシャドウとやり取り」を参照してください。

    Lambda 関数コンポーネントをデプロイするときは、 AWS IoT Device SDK V2 でシャドウ IPC オペレーションを使用するアクセス許可を付与する IPC 承認ポリシーを持つように設定してください。

  • サブスクリプション

    • Lambda 関数がクラウドソースからのメッセージをサブスクライブする場合は、関数をインポートするときにそれらのサブスクリプションをイベントソースとして指定します。

    • Lambda 関数が別の Lambda 関数からのメッセージをサブスクライブしている場合、または Lambda 関数が AWS IoT Core または他の Lambda 関数にメッセージを発行する場合は、Lambda 関数をデプロイするときにレガシーサブスクリプションルーターコンポーネントを設定してデプロイします。レガシーサブスクリプションルーターコンポーネントをデプロイするときは、Lambda 関数が使用するサブスクリプションを指定します。

      注記

      レガシーサブスクリプションルーターコンポーネントは、Lambda 関数が AWS IoT Greengrass Core SDK の publish()関数を使用する場合にのみ必要です。 AWS IoT Device SDK V2 でプロセス間通信 (IPC) インターフェイスを使用するように Lambda 関数コードを更新する場合、レガシーサブスクリプションルーターコンポーネントをデプロイする必要はありません。詳細については、次のプロセス間通信サービスを参照してください。

    • Lambda 関数がローカルに接続されたデバイスからのメッセージをサブスクライブする場合は、関数をインポートするときにそれらのサブスクリプションをイベントソースとして指定します。また、接続されたデバイスからイベントソースとして指定したローカルのパブリッシュ/サブスクライブトピックにメッセージを中継するために、MQTT ブリッジコンポーネントを設定およびデプロイする必要があります。

    • Lambda 関数がローカルに接続されたデバイスにメッセージを発行する場合は、 AWS IoT Device SDK V2 を使用してローカルのパブリッシュ/サブスクライブメッセージを発行するように Lambda 関数コードを更新する必要があります。また、ローカルのパブリッシュ/サブスクライブメッセージブローカーから接続されたデバイスにメッセージを中継するために、[MQTT bridge component] (MQTT ブリッジコンポーネント) を設定およびデプロイする必要があります。

  • ローカルボリュームとデバイス

    コンテナ化された Lambda 関数がローカルボリュームまたはデバイスにアクセスする場合は、Lambda 関数をインポートするときにそれらのボリュームとデバイスを指定します。この機能では、コンポーネントの依存関係は必要ありません。

詳細については、「AWS Lambda 関数を実行する」を参照してください。

V1 コネクタを使用する

一部の AWS IoT Greengrass コネクタと同じ機能を提供する AWSが提供するコンポーネントをデプロイできます。デプロイを作成するときに、コネクタのパラメータを設定できます。

Docker コンテナを実行する

AWS IoT Greengrass V2 には、V1 Docker アプリケーションデプロイコネクタを直接置き換えるコンポーネントはありません。ただし、Docker アプリケーションマネージャーコンポーネントを使用して Docker イメージをダウンロードし、ダウンロードしたイメージから Docker コンテナを実行するカスタムコンポーネントを作成できます。詳細については、Docker コンテナの実行およびDocker アプリケーションマネージャーを参照してください。

機械学習推論を実行する

AWS IoT Greengrass V2 は、Amazon SageMaker Edge Manager エージェントをインストールし、 SageMaker Neo でコンパイルされたモデルを Greengrass コアデバイスのモデルコンポーネントとして使用できる Amazon SageMaker Edge Manager コンポーネントを提供します。 は、デバイスに Deep Learning RuntimeTensorFlow Lite をインストールするコンポーネント AWS IoT Greengrass V2 も提供します。対応する DLR および TensorFlow Lite モデルおよび推論コンポーネントを使用して、サンプル画像分類およびオブジェクト検出推論を実行できます。MXNet や などの他の機械学習フレームワークを使用するには TensorFlow、これらのフレームワークを使用する独自のカスタムコンポーネントを開発できます。

V1 Greengrass デバイスを接続する

の接続されたデバイスは、 でクライアントデバイス AWS IoT Greengrass V1 と呼ばれます AWS IoT Greengrass V2。クライアントデバイスの AWS IoT Greengrass V2 サポートは と下位互換性があるため AWS IoT Greengrass V1、アプリケーションコードを変更せずに V1 クライアントデバイスを V2 コアデバイスに接続できます。クライアントデバイスが V2 コアデバイスに接続できるようにするには、クライアントデバイスのサポートを有効にする Greengrass コンポーネントをデプロイし、クライアントデバイスをコアデバイスに関連付けます。クライアントデバイス、 AWS IoT Core クラウドサービス、Greengrass コンポーネント (Lambda 関数を含む) 間でメッセージを中継するには、[MQTT bridge component] (MQTT ブリッジコンポーネント) をデプロイおよび設定します。[IP detector component] (IP 検出コンポーネント) をデプロイして接続情報を自動検出することも、エンドポイントを手動で管理することも可能です。詳細については、「ローカル IoT デバイスとやり取りする」を参照してください。

ローカルシャドウサービスを有効にする

では AWS IoT Greengrass V2、ローカルシャドウサービスは、 AWSが提供するシャドウマネージャーコンポーネントによって実装されます。 には、名前付きシャドウのサポート AWS IoT Greengrass V2 も含まれています。コンポーネントがローカルシャドウとやり取りし、シャドウの状態を に同期できるようにするには AWS IoT Core、シャドウマネージャーコンポーネントを設定してデプロイし、コンポーネントコードでシャドウ IPC オペレーションを使用します。詳細については、「デバイスシャドウとやり取り」を参照してください。

との統合 AWS IoT SiteWise

V1 コアデバイスを AWS IoT SiteWise ゲートウェイとして使用している場合は、手順に従って新しい V2 コアデバイスを AWS IoT SiteWise ゲートウェイとしてセットアップします。 AWS IoT SiteWise には、 AWS IoT SiteWise コンポーネントをデプロイするインストールスクリプトが用意されています。

ステップ 3: AWS IoT Greengrass V2 アプリケーションをテストする

V2 コンポーネントを作成して新しい V2 コアデバイスにデプロイしたら、アプリケーションが期待を満たしていることを確認します。デバイスのログをチェックして、コンポーネントの標準出力 (stdout) および標準エラー (stderr) メッセージを表示できます。詳細については、「AWS IoT Greengrass ログのモニタリング」を参照してください。

Greengrass CLI をコアデバイスにデプロイした場合は、それを使用してコンポーネントとその設定をデバッグできます。詳細については、「Greengrass CLI コマンド」を参照してください。

アプリケーションが V2 コアデバイスで動作することを確認したら、アプリケーションの Greengrass コンポーネントを他のコアデバイスにデプロイできます。ネイティブプロセスまたは Docker コンテナを実行するカスタムコンポーネントを開発する場合は、まずそれらのコンポーネントを サービスにパブリッシュして、他のコアデバイスにデプロイする必要があります。 AWS IoT Greengrass