テストの実行者向けの設定の構成 - 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ことを強くお勧めします。これにより、重要な新機能が追加され、追加のプラットフォームのサポートが追加されます

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

テストの実行者向けの設定の構成

カスタムテストスイートを実行するには、テストの実行者は、実行するテストスイートに基づいて設定を構成する必要があります。設定は、<device-tester-extract-location>/configs/ フォルダにある JSON 設定ファイルテンプレートに基づいて指定します。必要に応じて、テストの実行者は、IDT が AWS クラウドへの接続に使用する AWS 認証情報も設定する必要があります。

テストを作成するユーザーは、テストスイートをデバッグするために、以下に示すファイルの設定が必要になります。また、テストスイートを実行するために必要な以下の設定を構成できるように、テストの実行者に指示を提供する必要があります。

device.json の設定

device.json ファイルには、テストが実行されるデバイスに関する情報 (IP アドレス、ログイン情報、オペレーティングシステム、CPU アーキテクチャなど) が含まれています。

テストの実行者は、<device-tester-extract-location>/configs/ フォルダにある次のテンプレート device.json ファイルを使用してこの情報を指定できます。

[ { "id": "<pool-id>", "sku": "<pool-sku>", "features": [ { "name": "<feature-name>", "value": "<feature-value>", "configs": [ { "name": "<config-name>", "value": "<config-value>" } ], } ], "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh | uart | docker", // ssh "ip": "<ip-address>", "port": <port-number>, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", // pki "privKeyPath": "/path/to/private/key", // password "password": "<password>", } }, // uart "serialPort": "<serial-port>", // docker "containerId": "<container-id>", "containerUser": "<container-user-name>", } } ] } ]

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

id

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

sku

テスト対象デバイスを一意に識別する英数字の値。SKU は、認定されたデバイスの追跡に使用されます。

注記

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

features

オプション。デバイスでサポートされている機能を含む配列。デバイス機能は、テストスイートに設定するユーザー定義の値です。テストの実行者に、device.json ファイルに含める機能名および値に関する情報を提供する必要があります。例えば、他のデバイスの MQTT サーバーとして機能するデバイスをテストする場合は、MQTT_QOS という名前の機能に対する特定のサポートレベルを検証するようにテストロジックを設定します。テストの実行者は、この機能名を指定し、デバイスによってサポートされる QOS レベルにその機能値を設定します。指定された情報は、devicePool.features クエリを使用して IDT コンテキストから、または pool.features クエリを使用してステートマシンコンテキストから取得できます。

features.name

機能の名前。

features.value

サポートされている機能値。

features.configs

機能の構成設定 (必要な場合)。

features.config.name

構成設定の名前。

features.config.value

サポートされている設定値。

devices

テスト対象のプール内のデバイスの配列。少なくとも 1 つのデバイスが必要です。

devices.id

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

connectivity.protocol

このデバイスと通信するために使用される通信プロトコル。プール内の各デバイスは、同じプロトコルを使用する必要があります。

現在、サポートされている値は、物理デバイス用の ssh および uart と、Docker コンテナ用の docker のみです。

connectivity.ip

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

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

connectivity.port

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

デフォルト値は 22 です。

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

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.serialPort

オプション。デバイスが接続されているシリアルポート。

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

connectivity.containerId

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

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

connectivity.containerUser

オプション。コンテナ内のユーザー名。デフォルト値は Dockerfile で指定されたユーザーです。

デフォルト値は 22 です。

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

注記

テストの実行者がテストに対して誤ったデバイス接続を構成しているかどうかを確認するには、ステートマシンコンテキストから pool.Devices[0].Connectivity.Protocol を取得し、この値を Choice ステート内の予想値と比較します。正しくないプロトコルが使用されている場合は、LogMessage ステートを使用してメッセージを出力し、Fail ステートに移行します。

または、エラー処理コードを使用して、誤ったデバイスタイプによるテスト失敗をレポートすることもできます。

(オプション) userdata.json の設定

userdata.json ファイルには、device.json ファイルには指定されていない、テストスイートに必要とされる追加情報が含まれています。このファイルの形式は、テストスイートに定義されている userdata_scheme.json ファイルによって異なります。テストを作成するユーザーは、作成したテストスイートを実行するユーザーにこの情報を提供してください。

(オプション) resource.json の設定

resource.json ファイルには、リソースデバイスとして使用されるすべてのデバイスに関する情報が含まれています。リソースデバイスは、テスト対象のデバイスの特定の機能をテストするために必要なデバイスです。例えば、デバイスの Bluetooth 機能をテストするには、リソースデバイスを使用して、デバイスがリソースデバイスに正常に接続できるかどうかをテストできます。リソースデバイスはオプションで、必要な数だけリソースデバイスを要求できます。テストを作成するユーザーは、test.json ファイル を使用して、テストに必要なリソースデバイスの機能を定義します。テストの実行者は、resource.json ファイルを使用して、必要な機能を持つリソースデバイスのプールを指定します。作成したテストスイートを実行するユーザーに、以下の情報を提供してください。

テストの実行者は、<device-tester-extract-location>/configs/ フォルダにある次のテンプレート resource.json ファイルを使用してこの情報を指定できます。

[ { "id": "<pool-id>", "features": [ { "name": "<feature-name>", "version": "<feature-value>", "jobSlots": <job-slots> } ], "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh | uart | docker", // ssh "ip": "<ip-address>", "port": <port-number>, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", // pki "privKeyPath": "/path/to/private/key", // password "password": "<password>", } }, // uart "serialPort": "<serial-port>", // docker "containerId": "<container-id>", "containerUser": "<container-user-name>", } } ] } ]

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

id

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

features

オプション。デバイスでサポートされている機能を含む配列。このフィールドに必要な情報は、テストスイートの test.json ファイル に定義されています。この情報によって、実行するテストと、テストの実行方法が決まります。テストスイートに機能が必要ない場合は、このフィールドは必須ではありません。

features.name

機能の名前。

features.version

機能バージョン。

features.jobSlots

デバイスを同時に使用できるテストの数を示すための設定。デフォルト値は 1 です。

devices

テスト対象のプール内のデバイスの配列。少なくとも 1 つのデバイスが必要です。

devices.id

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

connectivity.protocol

このデバイスと通信するために使用される通信プロトコル。プール内の各デバイスは、同じプロトコルを使用する必要があります。

現在、サポートされている値は、物理デバイス用の ssh および uart と、Docker コンテナ用の docker のみです。

connectivity.ip

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

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

connectivity.port

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

デフォルト値は 22 です。

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

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.serialPort

オプション。デバイスが接続されているシリアルポート。

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

connectivity.containerId

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

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

connectivity.containerUser

オプション。コンテナ内のユーザー名。デフォルト値は Dockerfile で指定されたユーザーです。

デフォルト値は 22 です。

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

(オプション) config.json の設定

config.json ファイルには、IDT 向けの設定情報が含まれています。通常、テストの実行者は、IDT 用の AWS ユーザー認証情報、AWS リージョン (オプション) を指定することを除き、このファイルを変更する必要はありません。必要なアクセス許可が付与される AWS 認証情報が指定されると、AWS IoT Device Tester は使用状況メトリクスを収集して AWS に送信します。これはオプトイン機能で、IDT 機能を改善するために使用されます。詳細については、IDT 使用状況メトリクス を参照してください。

テストの実行者は、以下のいずれかの方法で AWS 認証情報を入手します。

  • 認証情報ファイル

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

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

    • macOS、Linux: ~/.aws/credentials

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

  • 環境変数

    環境変数は、オペレーティングシステムによって維持され、システムコマンドによって使用される変数です。SSH セッション中に定義された変数は、そのセッションの終了後は使用できません。IDT は、環境変数の 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 用の AWS 認証情報を設定するには、テストの実行者は、auth フォルダにある config.json ファイルの <device-tester-extract-location>/configs/ セクションを編集します。

{ "log": { "location": "logs" }, "configFiles": { "root": "configs", "device": "configs/device.json" }, "testPath": "tests", "reportPath": "results", "awsRegion": "<region>", "auth": { "method": "file | environment", "credentials": { "profile": "<profile-name>" } } } ]

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

注記

このファイル内のすべてのパスは、<device-tester-extract-location> に関連して定義されています。

log.location

<device-tester-extract-location> のログフォルダへのパス。

configFiles.root

設定ファイルが含まれるフォルダへのパス。

configFiles.device

device.json ファイルへのパス。

testPath

テストスイートが含まれるフォルダへのパス。

reportPath

IDT がテストスイートを実行した後にテスト結果が含まれるフォルダへのパス。

awsRegion

オプション。テストスイートが使用する AWS リージョン。設定されない場合、テストスイートは各テストスイートに指定されているデフォルトのリージョンを使用します。

auth.method

IDT が AWS 認証情報の取得に使用する方法。サポートされる値は、file (認証情報ファイルから認証情報を取得) と environment (環境変数を使用して認証情報を取得) です。

auth.credentials.profile

認証情報ファイルから使用する認証情報プロファイル。このプロパティは、auth.methodfile に設定されている場合にのみ適用されます。