[AWS IoT Greengrass V2] ローカルデバッグコンソール(aws.greengrass.LocalDebugConsole)を使用してみました

2021.08.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

1 はじめに

IoT事業部の平内(SIN)です。

AWS IoT Greengrass V2(以下、Greengrass V2)での開発形態は、デバイス側でコンポーネントの開発を行い、最終的に、クラウドから他の多数のデバイスにデプロイ(配布)するというスタイルになると思います。

そして、デバイス(ローカル)側で開発を行う上で、非常に有効なツールとしてローカルデバッグコンソール(aws.greengrass.LocalDebugConsole)という、パブリックなコンポーネントが用意されています。

ローカルデバッグコンソールは、ブラウザでアクセス可能なダッシュボードを提供し、コアデバイスやローカルコンポーネントを管理できます。

今回は、ローカルデバッグコンソールをデプロイしてみました。


参考:ローカルデバッグコンソール

2 デプロイ

開発用のコアデバイスをgg-devide-001とし、こちらにデプロイしました。

このコンポーネントは、開発環境でのみ使用することが目的となっているとのことです。
https://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/local-debug-console-component.html

AWS IoTのコンソールから、Greengrass - デプロイ - デプロイを作成と辿り、対象が、gg-device-001のみとなるデプロイ定義を新規に作成しました。

パブリックコンポーネントで、aws.greengrass.LocalDebugConsoleを追加します。

バージョンは、2.2.2となっていました。

そのほか、ジョブに関するオプション等は、デフォルトのままでデプロイしました。

$ sudo /greengrass/v2/bin/greengrass-cli component list

・・・略・・・

Component Name: aws.greengrass.LocalDebugConsole
    Version: 2.2.2
    State: RUNNING
    Configuration: {"bindHostname":"localhost","httpsEnabled":"true","port":"1441","websocketPort":"1442"}

・・・略・・・

3 パスワード

ダッシュボードへのアクセスには、パスワード必要ですが、下記のコマンドで確認できます。

$ sudo /greengrass/v2/bin/greengrass-cli get-debug-password
AWS libcrypto resolve: searching process and loaded modules
AWS libcrypto resolve: found static aws-lc HMAC symbols
AWS libcrypto resolve: found static aws-lc libcrypto 1.1.1 EVP_MD symbols
Aug 12, 2021 4:04:56 PM software.amazon.awssdk.eventstreamrpc.EventStreamRPCConnection$1 onConnectionSetup
INFO: Socket connection /greengrass/v2/ipc.socket:8033 to server result [AWS_ERROR_SUCCESS]
Aug 12, 2021 4:04:56 PM software.amazon.awssdk.eventstreamrpc.EventStreamRPCConnection$1 onProtocolMessage
INFO: Connection established with event stream RPC server
Username: debug
Password: rD2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxmBvZ6E4
Password expires at: 2021-08-13T00:04:56.525583982+09:00

The local debug console is configured to use TLS security. The certificate is self-signed so you will need to bypass your web browser's security warnings to open the console.
Before you bypass the security warning, verify that the certificate fingerprint matches one of the following fingerprints.
SHA-256: 90 XX XX XX XX XX XX XX XX XX XX XX XX 0F 73 7D 6D 14 9E F8 87 7A 93 F9 45 7F 47 74 EB F4 03
SHA-1: 99 XX XX XX XX XX XX XX XX E9 11 88 51 45 90 EC 6A 4F 7D C4

4 ブラウザでのアクセス

127.0.0.1で1441及び1442(websocket)がオープンしています。

$ netstat -atn | grep 144
tcp6       0      0 127.0.0.1:1441          :::*                    LISTEN
tcp6       0      0 127.0.0.1:1442          :::*                    LISTEN

ブラウザで、アクセスしている様子です。

ユーザー名とパスワードを入力すると下記のような画面が表示されます。

5 Hello World

確認のために、下記で作成したプライベートのコンポーネント(com.example.HelloWorld)をローカルでデプロイしました。

$ sudo /greengrass/v2/bin/greengrass-cli component list

・・・略・・・

Component Name: com.example.HelloWorld
    Version: 1.0.0
    State: FINISHED
    Configuration: {"Message":"world"}

・・・略・・・

そして、ブラウザから確認している様子です。 この画面から、レシピの変更や、再起動・再インストールなどがクリックのみで行えるため、非常に作業が捗りそうです。

6 最後に

今回は、ローカルデバッグコンソールを試してみました。

Greengrass V2で、開発形態が、ローカルでのコンポーネント開発というスタイルとなる中、このようなツールを上手く使いこなすことが重要かも知れません。

2023/06/04 追記 Dockerなどで利用する場合、bindHostname属性を0.0.0.0に設定すると、ローカル以外から起動できる https://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/local-debug-console-component.html

7 参考リンク


[AWS IoT Greengrass V2] RaspberryPIにインストールしてみました
[AWS IoT Greengrass V2] RaspberryPIでコンポーネントを作成してみました
[AWS IoT Greengrass V2] クラウド側から複数のコアデバイスにコンポーネントをデプロイしてみました
[AWS IoT Greengrass V2] クラウド側からコンポーネントを削除してみました
[AWS IoT Greengrass V2] ローカルデバッグコンソール(aws.greengrass.LocalDebugConsole)を使用してみました
[AWS IoT Greengrass V2] Lambda関数(コンポーネント)をデプロイしてみました
[AWS IoT Greengrass V2] コンポーネントからIoT CoreのメッセージブローカーにPublish/Subscribeしてみました
[AWS IoT Greengrass V2] コンポーネントからシークレットマネージャにアクセスしてみました