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

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

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

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

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

新しいデバイスで AWS IoT Greengrass Core ソフトウェア v2.x をインストールします。[getting started tutorial] (入門チュートリアル) に従ってデバイスをセットアップし、コンポーネントを開発およびデプロイする方法を学ぶことができます。このチュートリアルでは、[automatic provisioning] (自動プロビジョニング) を使用して、デバイスをすばやくセットアップできます。AWS IoT Greengrass Core ソフトウェア v2.x をインストールするときは、--deploy-dev-tools 引数を指定して Greengrass CLI をデプロイし、デバイスで直接コンポーネントの開発、テスト、デバッグができるようにします。プロキシの背後に 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 で [GetSecretValue IPC operation] (GetSecretValue IPC オペレーション) を使用するアクセス許可を付与する [IPC authorization policy] (IPC 承認ポリシー) を持つように設定します。

  • ローカルシャドウ

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

    Lambda 機能コンポーネントをデプロイするときは、AWS IoT Device SDK V2 で [shadow IPC operations] (シャドウ IPC オペレーション) を使用するアクセス許可を付与する [IPC authorization policy] (IPC 承認ポリシー) を持つように設定します。

  • サブスクリプション

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

    • Lambda 関数が別の Lambda 関数からのメッセージをサブスクライブする場合、または Lambda 関数が AWS IoT Core または他の Lambda 関数にメッセージを公開する場合、Lambda 関数のデプロイ時に [legacy subscription router component] (レガシースクリプションルーターコンポーネント) を設定し、デプロイします。レガシーサブスクリプションルーターコンポーネントをデプロイするときは、Lambda 関数が使用するサブスクリプションを指定します。

      注記

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

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

    • Lambda 関数がローカルに接続されたデバイスにメッセージを公開する場合、AWS IoT Device SDK V2 を使用して [publish local publish/subscribe messages] (ローカルのパブリッシュ/サブスクライブメッセージを公開する) ように 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 AI Edge Manager エージェントをインストールし、SageMaker AI Neo でコンパイルされたモデルを Greengrass コアデバイスのモデルコンポーネントとして使用できるようにする Amazon SageMaker AI Edge Manager コンポーネントを提供します。AWS IoT Greengrass V2 は、デバイスに深層学習ランタイムTensorFlow Lite をインストールするコンポーネントも提供します。対応する 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 ゲートウェイとして使用する場合は、[follow instructions] (指示に従って)、新しい 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 サービスに [publish those components] (これらのコンポーネントを公開) して、他のコアデバイスにデプロイする必要があります。