AWS IoT Greengrass 認定スイートを実行するための IDT 設定 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 は、2023 年 6 月 30 日に延長ライフフェーズに入りました。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。この日以降、 AWS IoT Greengrass V1 は機能、機能強化、バグ修正、またはセキュリティパッチを提供する更新をリリースしません。で実行されるデバイスは中断 AWS IoT Greengrass V1 されず、引き続き運用され、クラウドに接続されます。への移行 AWS IoT Greengrass Version 2を強くお勧めします。これにより、重要な新機能が追加され、追加のプラットフォーム がサポートされます

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

AWS IoT Greengrass 認定スイートを実行するための IDT 設定

テストを実行する前に、AWS 認証情報およびデバイスをホストコンピュータに設定する必要があります。

AWS 認証情報を設定する

IAM ユーザー認証情報を <device-tester-extract-location> /configs/config.json ファイルで設定する必要があります。「を作成して設定する AWS アカウント」で作成した IDT for AWS IoT Greengrass ユーザーの認証情報を使用します。以下のいずれかの方法で認証情報を指定できます。

  • 認証情報ファイル

  • 環境変数

IDT では、AWS CLI と同じ認証情報ファイルが使用されます。詳細については、「設定ファイルと認証情報ファイル」を参照してください。

認証情報ファイルの場所は、使用しているオペレーティングシステムによって異なります。

  • macOS、Linux: ~/.aws/credentials

  • Windows: C:\Users\UserName\.aws\credentials

AWS 認証情報を次の形式で credentials ファイルに追加します。

[default] aws_access_key_id = <your_access_key_id> aws_secret_access_key = <your_secret_access_key>

credentials ファイルの AWS 認証情報を使用するように IDT for AWS IoT Greengrass を設定するには、config.json ファイルを次のように編集します。

{ "awsRegion": "us-west-2", "auth": { "method": "file", "credentials": { "profile": "default" } } }
注記

default の AWS ファイルを使用しない場合は、必ず config.json ファイルのプロファイル名を変更してください。詳細については、「名前付きプロファイル」を参照してください。

環境変数は、オペレーティングシステムによって維持され、システムコマンドによって使用される変数です。SSH セッションを閉じると、これらは保存されません。IDT for AWS IoT Greengrass は、AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY という環境変数を使用して AWS 資格情報を保存します。

これらの変数を Linux、macOS、または Unix で設定するには、export を使用します。

export AWS_ACCESS_KEY_ID=<your_access_key_id> export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

Windows でこれらの変数を設定するには、set を使用します。

set AWS_ACCESS_KEY_ID=<your_access_key_id> set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

環境変数を使用するように IDT を設定するには、config.json ファイルの auth セクションを編集します。以下がその例です。

{ "awsRegion": "us-west-2", "auth": { "method": "environment" } }

device.json の設定

AWS 認証情報に加えて、IDT for AWS IoT Greengrass では、テストが実行されるデバイスに関する情報 (IP アドレス、ログイン情報、オペレーティングシステム、CPU アーキテクチャなど) が必要です。

これらの情報を指定するには、 <device_tester_extract_location>/configs/device.json にある device.json テンプレートを使用する必要があります。

Physical device
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "os", "value": "linux | ubuntu | openwrt" }, { "name": "arch", "value": "x86_64 | armv6l | armv7l | aarch64" }, { "name": "container", "value": "yes | no" }, { "name": "docker", "value": "yes | no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "yes | no" }, { "name": "ml", "value": "mxnet | tensorflow | dlr | mxnet,dlr,tensorflow | no" }, *********** Remove the section below if the device is not qualifying for ML **************, { "name": "mlLambdaContainerizationMode", "value": "container | process | both" }, { "name": "processor", "value": "cpu | gpu" }, ****************************************************************************************** ], *********** Remove the section below if the device is not qualifying for HSI *************** "hsm": { "p11Provider": "/path/to/pkcs11ProviderLibrary", "slotLabel": "<slot_label>", "slotUserPin": "<slot_pin>", "privateKeyLabel": "<key_label>", "openSSLEngine": "/path/to/openssl/engine" }, ******************************************************************************************** *********** Remove the section below if the device is not qualifying for ML **************** "machineLearning": { "dlrModelPath": "/path/to/compiled/dlr/model", "environmentVariables": [ { "key": "<environment-variable-name>", "value": "<Path:$PATH>" } ], "deviceResources": [ { "name": "<resource-name>", "path": "<resource-path>", "type": "device | volume" } ] }, ****************************************************************************************** "kernelConfigLocation": "", "greengrassLocation": "", "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh", "ip": "<ip-address>", "port": 22, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", "privKeyPath": "/path/to/private/key", "password": "<password>" } } } } ] } ]
注記

methodpki に設定されている場合のみ privKeyPath を指定します。

methodpassword に設定されている場合のみ password を指定します。

Docker container
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "os", "value": "linux | ubuntu | openwrt" }, { "name": "arch", "value": "x86_64" }, { "name": "container", "value": "no" }, { "name": "docker", "value": "no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "no" }, { "name": "ml", "value": "mxnet | tensorflow | dlr | mxnet,dlr,tensorflow | no" }, *********** Remove the section below if the device is not qualifying for ML **************, { "name": "mlLambdaContainerizationMode", "value": "process" }, { "name": "processor", "value": "cpu | gpu" }, ****************************************************************************************** ], *********** Remove the section below if the device is not qualifying for ML **************** "machineLearning": { "dlrModelPath": "/path/to/compiled/dlr/model", "environmentVariables": [ { "key": "<environment-variable-name>", "value": "<Path:$PATH>" } ], "deviceResources": [ { "name": "<resource-name>", "path": "<resource-path>", "type": "device | volume" } ] }, ****************************************************************************************** "kernelConfigLocation": "", "greengrassLocation": "", "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "docker", "containerId": "<container-name | container-id>", "containerUser": "<user>" } } ] } ]

以下に説明するように、値が含まれているすべてのフィールドは必須です。

id

デバイスプールと呼ばれるデバイスのコレクションを一意に識別するユーザー定義の英数字の ID。プールに属するデバイスには、同一のハードウェアが必要です。テストスイートを実行する場合、プールのデバイスを使用してワークロードを並列化します。複数のデバイスを使用して異なるテストを実行します。

sku

テスト対象デバイスを一意に識別する英数字の値。SKU は、適格性が確認されたボードの追跡に使用されます。

注記

AWS Partner Device Catalog にボードを出品する場合は、ここで指定する SKU と出品プロセスで使用する SKU が一致しなければなりません。

features

デバイスでサポートされている機能を含む配列。すべての機能が必要です。

os および arch

サポート対象のオペレーティングシステム (OS) とアーキテクチャの組み合わせ。

  • linux, x86_64

  • linux, armv6l

  • linux, armv7l

  • linux, aarch64

  • ubuntu, x86_64

  • openwrt, armv7l

  • openwrt, aarch64

注記

IDT を使用して Docker コンテナで稼働している AWS IoT Greengrass をテストする場合、x86_64 Docker アーキテクチャのみがサポートされます。

container

デバイスが Greengrass コアのコンテナモードで Lambda 関数を実行するためのすべてのソフトウェア要件とハードウェア要件を満たしているかどうかを検証します。

有効な値は yes または no です。

docker

Greengrass Docker アプリケーションデプロイコネクタを使用してコンテナを実行するために必要なすべての技術的依存関係をデバイスが満たしていることを検証します。

有効な値は yes または no です。

streamManagement

AWS IoT Greengrass ストリームマネージャーを実行するために必要なすべての技術的依存関係をデバイスが満たしていることを検証します。

有効な値は yes または no です。

hsi

提供された HSI 共有ライブラリがハードウェアセキュリティモジュール (HSM) とやり取りでき、必要な PKCS#11 API を正しく実装することを検証します。HSM および共有ライブラリは、CSR に署名し、TLS オペレーションを実行して、正しいキー長と公開キーアルゴリズムを提供できる必要があります。

有効な値は yes または no です。

ml

ML 推論をローカルで実行するために必要なすべての技術的依存関係をデバイスが満たしていることを検証します。

有効な値は、mxnettensorflowdlr、および no の任意の組み合わせです (例: mxnetmxnet,tensorflowmxnet,tensorflow,dlr、または no)。

mlLambdaContainerizationMode

コンテナモードの Greengrass デバイスで ML 推論を実行するための技術的依存関係要件をデバイスがすべて満たしていることを検証します。

有効な値は containerprocess、または both です。

processor

指定したプロセッサタイプのハードウェア要件をデバイスがすべて満たしていることを検証します。

有効な値は cpu または gpu です。

注記

containerdockerstreamManagerhsi、または ml 機能を使用しない場合は、対応する valueno に設定できます。

Docker は、streamManagementml の機能認定のみをサポートしています。

machineLearning

オプション。ML 認定テストの設定情報。詳細については、「ML 認定のための device.json の設定」を参照してください。

hsm

オプション。AWS IoT Greengrass ハードウェアセキュリティモジュール (HSM) でテストするための設定情報。それ以外の場合は、hsm プロパティを省略する必要があります。詳細については、「ハードウェアセキュリティ統合」を参照してください。

このプロパティは、connectivity.protocolssh に設定されている場合にのみ適用されます。

hsm.p11Provider

PKCS#11 実装の libdl-loadable ライブラリへの絶対パス。

hsm.slotLabel

ハードウェアモジュールを識別するために使用されるスロットラベル。

hsm.slotUserPin

AWS IoT Greengrass コアをモジュールに対して認証するために使用されるユーザー PIN。

hsm.privateKeyLabel

ハードウェアモジュールでキーを識別するために使用されるラベル。

hsm.openSSLEngine

OpenSSL での PKCS#11 のサポートを有効にするための、OpenSSL エンジンの .so ファイルへの絶対パス。AWS IoT Greengrass OTA 更新エージェントによって使用されます。

devices.id

テスト対象のデバイスのユーザー定義の一意の識別子。

connectivity.protocol

このデバイスと通信するために使用される通信プロトコル。現在、サポートされている値は、物理デバイス用の ssh と Docker コンテナ用の docker のみです。

connectivity.ip

テスト対象のデバイスの IP アドレス。

このプロパティは、connectivity.protocolssh に設定されている場合にのみ適用されます。

connectivity.containerId

テスト対象の Docker コンテナのコンテナ ID または名前。

このプロパティは、connectivity.protocoldocker に設定されている場合にのみ適用されます。

connectivity.auth

接続の認証情報。

このプロパティは、connectivity.protocolssh に設定されている場合にのみ適用されます。

connectivity.auth.method

指定された接続プロトコルを介してデバイスにアクセスするために使用される認証方法。

サポートされている値は以下のとおりです。

  • pki

  • password

connectivity.auth.credentials

認証に使用される認証情報。

connectivity.auth.credentials.password

テスト中のデバイスにサインインするためのパスワード。

この値は、connectivity.auth.methodpassword に設定されている場合にのみ適用されます。

connectivity.auth.credentials.privKeyPath

テスト中のデバイスにサインインするためのプライベートキーへの完全パス。

この値は、connectivity.auth.methodpki に設定されている場合にのみ適用されます。

connectivity.auth.credentials.user

テスト対象デバイスにサインインするためのユーザー名。

connectivity.auth.credentials.privKeyPath

テスト対象デバイスにサインインするためのプライベートキーへの完全パス。

connectivity.port

オプション。SSH 接続に使用するポート番号。

デフォルト値は 22 です。

このプロパティは、connectivity.protocolssh に設定されている場合にのみ適用されます。

greengrassLocation

デバイス上の AWS IoT Greengrass Core ソフトウェアの場所。

物理デバイスの場合、この値は、インストール済みの AWS IoT Greengrass の使用時にのみ使用します。この属性を使用して、デバイスにインストール済みのバージョンの AWS IoT Greengrass Core ソフトウェアを使用するよう IDT に指示します。

AWS IoT Greengrass に用意されている Docker イメージまたは Dockerfile から Docker コンテナでテストを実行する場合は、この値を /greengrass に設定します。

kernelConfigLocation

オプション。カーネル設定ファイルへのパス。AWS IoTDevice Tester は、このファイルを使用してデバイスで必要なカーネル機能が有効にされているかどうかを確認します。指定しない場合、IDT は /proc/config.gz/boot/config-<kernel-version> のパスを使用して、カーネル設定ファイルを検索します。AWS IoTDevice Tester は、検出した最初のパスを使用します。

ML 認定のための device.json の設定

このセクションでは、ML 認定に適用されるデバイス設定ファイルのオプションプロパティについて説明します。ML 認定のテストを実行する場合は、ユースケースに適したプロパティを定義する必要があります。

device-ml.json テンプレートを使用して、デバイスの構成設定を定義できます。このテンプレートには、オプションの ML プロパティが含まれています。また、device.json を使用して ML 修飾プロパティを追加することもできます。これらのファイルは <device-tester-extract-location>/configs にあり、これらには ML 認定プロパティが含まれています。device-ml.json を使用する場合は、IDT テストを実行する前に、ファイルの名前を device.json に変更する必要があります。

ML 認定に適用されないデバイス設定プロパティについては、「device.json の設定」を参照してください。

 

features 配列内の ml

ボードがサポートする ML フレームワーク。このプロパティには IDT v3.1.0 以降が必要です。

  • 対象のボードでサポートされるフレームワークが 1 つだけの場合は、そのフレームワークを指定します。例:

    { "name": "ml", "value": "mxnet" }
  • 対象のボードで複数のフレームワークがサポートされている場合は、フレームワークをカンマで区切って指定します。例:

    { "name": "ml", "value": "mxnet,tensorflow" }
features 配列内の mlLambdaContainerizationMode

テストに使用するコンテナ化モードこのプロパティには IDT v3.1.0 以降が必要です。

  • コンテナ化されていない Lambda 関数を使用して ML 推論コードを実行するには、process を選択します。このオプションを使用するには、AWS IoT Greengrass v1.10.x 以降が必要です。

  • コンテナ化された Lambda 関数を使用して ML 推論コードを実行するには、container を選択します。

  • 両方のモードで ML 推論コードを実行するには、both を選択します。このオプションを使用するには、AWS IoT Greengrass v1.10.x 以降が必要です。

features 配列内の processor

対象のボードがサポートするハードウェアアクセラレーターを示します。このプロパティには IDT v3.1.0 以降が必要です。

  • 対象のボードがプロセッサとして CPU を使用する場合は cpu を選択します。

  • 対象のボードがプロセッサとして GPU を使用する場合は gpu を選択します。

machineLearning

オプション。ML 認定テストの設定情報。このプロパティには IDT v3.1.0 以降が必要です。

dlrModelPath

dlr フレームワークを使用するために必要です。DLR コンパイル済みモデルディレクトリへの絶対パス。resnet18 を指定する必要があります。詳細については、「DLR モデルのコンパイル」を参照してください。

注記

macOS でのパスの例は次のとおりです: /Users/<user>/Downloads/resnet18

environmentVariables

ML 推論テストに設定を動的に渡すことができるキーと値のペアの配列。CPU デバイスの場合はオプションです。このセクションを使用して、デバイスタイプに必要なフレームワーク固有の環境変数を追加できます。これらの要件の詳細については、フレームワークまたはデバイスの公式ウェブサイトを参照してください。たとえば、一部のデバイスで MXNet 推論テストを実行するには、次のような環境変数が必要になります。

"environmentVariables": [ ... { "key": "PYTHONPATH", "value": "$MXNET_HOME/python:$PYTHONPATH" }, { "key": "MXNET_HOME", "value": "$HOME/mxnet/" }, ... ]
注記

value フィールドは、MXNet のインストールによって異なる場合があります。

GPU デバイスでコンテナ化によって実行される Lambda 関数をテストしている場合は、GPU ライブラリの環境変数を追加します。これにより、GPU が計算を実行できるようになります。異なる GPU ライブラリを使用するには、ライブラリまたはデバイスの公式ドキュメントを参照してください。

注記

mlLambdaContainerizationMode 機能が container または both に設定されている場合は、次のキーを設定します。

"environmentVariables": [ { "key": "PATH", "value": "<path/to/software/bin>:$PATH" }, { "key": "LD_LIBRARY_PATH", "value": "<path/to/ld/lib>" }, ... ]
deviceResources

GPU デバイスの場合に必要です。Lambda 関数からアクセス可能なローカルリソースが含まれています。このセクションを使用して、ローカルデバイスとボリュームリソースを追加します。

  • デバイスリソースの場合は、"type": "device" を指定します。GPU デバイスの場合、デバイスリソースは、/dev 以下にある GPU 関連デバイスファイルである必要があります。

    注記

    /dev/shm ディレクトリは例外です。これは、ボリュームリソースとしてのみ設定できます。

  • ボリュームリソースの場合は、"type": "volume" を指定します。