IDT 設定を設定して AWS IoT Greengrass 認定スイートを実行する - AWS IoT Greengrass

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

IDT 設定を設定して AWS IoT Greengrass 認定スイートを実行する

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

config.json で AWS 認証情報を設定する

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

  • 認証情報ファイルを使用する

  • 環境変数を使用する

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 V2 を設定するには、次のように config.json ファイルを編集します。

{ "awsRegion": "region", "auth": { "method": "file", "credentials": { "profile": "default" } } }
注記

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

環境変数は、オペレーティングシステムによって維持され、システムコマンドによって使用される変数です。SSH セッションを閉じると、これらは保存されません。IDT for AWS IoT Greengrass V2 は、 AWS_ACCESS_KEY_IDおよび AWS_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": "region", "auth": { "method": "environment" } }

device.json の設定

注記

IDT v4.9.3 はml、、docker、および streamManagement機能のテストをサポートしています。IDT v4.9.4 以降のバージョンでは、 のテストがサポートされていますdocker。これらの機能をテストしない場合は、対応する値を no に設定します。

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

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

IDT v4.9.3
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "arch", "value": "x86_64 | armv6l | armv7l | aarch64" }, { "name": "ml", "value": "dlr | tensorflowlite | dlr,tensorflowlite | no" }, { "name": "docker", "value": "yes | no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "hsm | no" } ], "devices": [ { "id": "<device-id>", "operatingSystem": "Linux | Windows", "connectivity": { "protocol": "ssh", "ip": "<ip-address>", "port": 22, "publicKeyPath": "<public-key-path>", "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", "privKeyPath": "/path/to/private/key", "password": "<password>" } } } } ] } ]
注記

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

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

以下に説明するように、値が含まれているすべてのプロパティは必須です。

id

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

sku

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

注記

AWS Partner Device Catalog でデバイスを一覧表示する場合、ここで指定する SKU は、一覧表示プロセスで使用する SKU と一致する必要があります。

features

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

arch

テスト実行で検証される、サポートされているオペレーティングシステムアーキテクチャ。有効な値は次のとおりです。

  • x86_64

  • armv6l

  • armv7l

  • aarch64

ml

デバイスが、 が提供する機械学習 (ML) AWSコンポーネントを使用するために必要な技術的な依存関係をすべて満たしていることを検証します。

この機能を有効にすると、デバイスが Deep Learning RuntimeTensorFlow Lite ML フレームワーク を使用して ML 推論を実行できることも検証されます

有効な値は、dlrtensorflowlite、または no の任意の組み合わせです。

docker

が提供する Docker AWSアプリケーションマネージャー (aws.greengrass.DockerApplicationManager) コンポーネントを使用するために必要なすべての技術的依存関係をデバイスが満たしていることを検証します。

この機能を有効にすると、デバイスが Amazon ECR から Docker コンテナイメージをダウンロードできることも検証されます。

有効な値は、yes または no の任意の組み合わせです。

streamManagement

デバイスが AWS IoT Greengrass ストリームマネージャーをダウンロード、インストール、および実行できることを検証します。

有効な値は、yes または no の任意の組み合わせです。

hsi

ハードウェアセキュリティモジュール (HSM) に保存されているプライベートキーと証明書を使用して、デバイスが AWS IoT および AWS IoT Greengrass サービスへの接続を認証できることを検証します。このテストでは、 が提供する PKCS#11 AWSプロバイダーコンポーネントが、ベンダーが提供する PKCS#11 ライブラリを使用して HSM とインターフェイスできることも検証します。 PKCS#11 プロバイダー詳細については、「ハードウェアセキュリティ統合」を参照してください。

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

注記

のテストhsiは、IDT v4.9.3 以降のバージョンでのみ使用できます。

devices.id

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

devices.operatingSystem

デバイスのオペレーティングシステム。サポートされている値は、Linux および Windows です。

connectivity.protocol

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

connectivity.ip

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

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

connectivity.port

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

デフォルト値は 22 です。

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

connectivity.publicKeyPath

オプション。テスト対象のデバイスへの接続を認証するために使用される公開キーへのフルパス。

publicKeyPath を指定すると、IDT がテスト対象のデバイスへの SSH 接続を確立するときに、デバイスの公開キーを検証します。この値が指定されていない場合、IDT は SSH 接続を作成しますが、デバイスのパブリックキーは検証しません。

公開キーへのパスを指定し、安全な方法を使用して、この公開キーをフェッチすることを強くお勧めします。標準のコマンドラインベースの SSH クライアントの場合、パブリックキーは known_hosts ファイルで提供されます。別の公開キーファイルを指定する場合、このファイルは known_hosts ファイルと同じ形式、つまり ( ip-address key-type public-key) を使用する必要があります。同じ ip-address を持つエントリが複数ある場合、IDT で使用されるキータイプのエントリは、ファイル内の他のエントリより前である必要があります。

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

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

IDT v4.9.4
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "arch", "value": "x86_64 | armv6l | armv7l | aarch64" }, { "name": "docker", "value": "yes | no" }, { "name": "hsi", "value": "hsm | no" } ], "devices": [ { "id": "<device-id>", "operatingSystem": "Linux | Windows", "connectivity": { "protocol": "ssh", "ip": "<ip-address>", "port": 22, "publicKeyPath": "<public-key-path>", "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", "privKeyPath": "/path/to/private/key", "password": "<password>" } } } } ] } ]
注記

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

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

以下に説明するように、値が含まれているすべてのプロパティは必須です。

id

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

sku

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

注記

AWS Partner Device Catalog でデバイスを一覧表示する場合、ここで指定する SKU は、一覧表示プロセスで使用する SKU と一致する必要があります。

features

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

arch

テスト実行で検証される、サポートされているオペレーティングシステムアーキテクチャ。有効な値は次のとおりです。

  • x86_64

  • armv6l

  • armv7l

  • aarch64

docker

が提供する Docker AWSアプリケーションマネージャー (aws.greengrass.DockerApplicationManager) コンポーネントを使用するために必要なすべての技術的依存関係をデバイスが満たしていることを検証します。

この機能を有効にすると、デバイスが Amazon ECR から Docker コンテナイメージをダウンロードできることも検証されます

有効な値は、yes または no の任意の組み合わせです。

hsi

ハードウェアセキュリティモジュール (HSM) に保存されているプライベートキーと証明書を使用して、デバイスが AWS IoT および AWS IoT Greengrass サービスへの接続を認証できることを検証します。このテストでは、 が提供する PKCS#11 AWSプロバイダーコンポーネントが、ベンダーが提供する PKCS#11 ライブラリを使用して HSM とインターフェイスできることも検証します。 PKCS#11 プロバイダー詳細については、「ハードウェアセキュリティ統合」を参照してください。

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

注記

のテストhsiは、IDT v4.9.3 以降のバージョンでのみ使用できます。

devices.id

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

devices.operatingSystem

デバイスのオペレーティングシステム。サポートされている値は、Linux および Windows です。

connectivity.protocol

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

connectivity.ip

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

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

connectivity.port

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

デフォルト値は 22 です。

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

connectivity.publicKeyPath

オプション。テスト対象のデバイスへの接続を認証するために使用される公開キーへのフルパス。

publicKeyPath を指定すると、IDT がテスト対象のデバイスへの SSH 接続を確立するときに、デバイスの公開キーを検証します。この値が指定されていない場合、IDT は SSH 接続を作成しますが、デバイスのパブリックキーは検証しません。

公開キーへのパスを指定し、安全な方法を使用して、この公開キーをフェッチすることを強くお勧めします。標準のコマンドラインベースの SSH クライアントの場合、パブリックキーは known_hosts ファイルで提供されます。別の公開キーファイルを指定する場合、このファイルは known_hosts ファイルと同じ形式、つまり ( ip-address key-type public-key) を使用する必要があります。同じ ip-address を持つエントリが複数ある場合、IDT で使用されるキータイプのエントリは、ファイル内の他のエントリより前である必要があります。

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

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

userdata.json を設定する

IDT for AWS IoT Greengrass V2 には、テストアーティファクトと AWS IoT Greengrass ソフトウェアの場所に関する追加情報も必要です。

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

{ "TempResourcesDirOnDevice": "/path/to/temp/folder", "InstallationDirRootOnDevice": "/path/to/installation/folder", "GreengrassNucleusZip": "/path/to/aws.greengrass.nucleus.zip", "PreInstalled": "yes/no", "GreengrassV2TokenExchangeRole": "custom-iam-role-name", "hsm": { "greengrassPkcsPluginJar": "/path/to/aws.greengrass.crypto.Pkcs11Provider-latest.jar", "pkcs11ProviderLibrary": "/path/to/pkcs11-vendor-library", "slotId": "slot-id", "slotLabel": "slot-label", "slotUserPin": "slot-pin", "keyLabel": "key-label", "preloadedCertificateArn": "certificate-arn" "rootCA": "path/to/root-ca" } }

以下に説明するように、値が含まれているすべてのプロパティは必須です。

TempResourcesDirOnDevice

テストアーティファクトを保存する、テスト対象のデバイスの一時フォルダへのフルパス。このディレクトリへの書き込みに sudo 権限が必要ないことを確認してください。

注記

IDT は、テストの実行が終了すると、このフォルダのコンテンツを削除します。

InstallationDirRootOnDevice

AWS IoT Greengrassをインストールするデバイスのフォルダへのフルパス。PreInstalled Greengrass の場合、これは Greengrass インストールディレクトリへのパスです。

このフォルダに必要なファイル権限を設定する必要があります。インストールパス内のフォルダごとに、以下のコマンドを実行します。

sudo chmod 755 folder-name
GreengrassNucleusZip

ホストコンピュータの Greengrass nucleus ZIP (greengrass-nucleus-latest.zip) ファイルへのフルパス。このフィールドは Greengrass での PreInstalledテストには必要ありません。

注記

IDT for の Greengrass nucleus のサポートされているバージョンについては AWS IoT Greengrass、「」を参照してくださいAWS IoT Greengrass V2 の最新の IDT バージョン。最新の Greengrass ソフトウェアをダウンロードするには、AWS IoT Greengrass 「ソフトウェアのダウンロード」を参照してください。

PreInstalled

この機能は、Linux デバイスでのみ IDT v4.5.8 以降で利用できます。

(オプション) 値が yes の場合、IDT は InstallationDirRootOnDevice に記載されているパスを Greengrass がインストールされているディレクトリとみなします。

デバイスで Greengrass をインストールする方法の詳細については、「自動リソースプロビジョニングを使用して AWS IoT Greengrass Core ソフトウェアをインストールする」を参照してください。手動プロビジョニングで をインストールする場合は、 AWS IoT モノを手動で作成するときに「モノを新規または既存のモノグループに追加する」ステップを含めAWS IoT ます。IDT では、モノとモノのグループがインストールのセットアップ中に作成されると想定しています。これらの値が effectiveConfig.yaml ファイルに反映されていることを確認してください。IDT は <InstallationDirRootOnDevice>/config/effectiveConfig.yaml の下の effectiveConfig.yaml ファイルをチェックします。

HSM でテストを実行する場合は、aws.greengrass.crypto.Pkcs11Provider フィールドが effectiveConfig.yaml で更新されていることを確認してください。

GreengrassV2TokenExchangeRole

(オプション) テスト対象のデバイスが AWS リソースとやり取りすることを想定した、トークン交換ロールとして使用するカスタム IAM ロール。

注記

IDT は、テストの実行中にデフォルトのトークン交換ロールを作成する代わりに、このカスタム IAM ロールを使用します。カスタムロールを使用する場合は、[IAM permissions for the test user] (テストユーザーの IAM アクセス許可) を更新して、ユーザーが IAM ロールとポリシーを作成および削除できるようにする iamResourcesUpdate ステートメントを除外できます。

トークン交換ロールとしてカスタム IAM ロールの作成方法の詳細については、「カスタムトークン交換ロールを設定する」を参照してください。

hsm

この機能は IDT v4.5.1 以降で利用できます。

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

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

警告

ハードウェアセキュリティモジュールが IDT と別のシステム間で共有されている場合、HSM 設定は機密データとみなされる場合があります。このような状況では、これらの設定値を Parameter Store SecureString パラメータに保存し、 AWS テストの実行中に取得するように IDT を設定することで、プレーンテキストで保護することを避けることができます。詳細については、「AWS Parameter Store から設定を取得する」を参照してください。

hsm.greengrassPkcsPluginJar

IDT ホストマシンにダウンロードする [PKCS#11 provider component] (PKCS#11 プロバイダコンポーネント) のフルパス。 AWS IoT Greengrass はこのコンポーネントを JAR ファイルとして提供します。このファイルをダウンロードし、インストール時にプロビジョニングプラグインとして指定できます。次の URL としてコンポーネントの JAR ファイルの最新バージョンをダウンロードできます: https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar

hsm.pkcs11ProviderLibrary

HSM とやり取りするためのハードウェアセキュリティモジュール (HSM) ベンダーによって提供される PKCS#11 ライブラリへのフルパス。

hsm.slotId

キーと証明書をロードする HSM スロットの識別に使用されるスロット ID。

hsm.slotLabel

キーと証明書をロードする HSM スロットの識別に使用されるスロットラベル。

hsm.slotUserPin

IDT が Core ソフトウェアを HSM AWS IoT Greengrass に対して認証するために使用するユーザー PIN。

注記

セキュリティのベストプラクティスとして、実稼働デバイスで同じユーザー PIN を使用しないでください。

hsm.keyLabel

ハードウェアモジュールでキーを識別するために使用されるラベル。キーと証明書の両方で同じキーラベルを使用する必要があります。

hsm.preloadedCertificateArn

AWS IoT クラウドのデバイス証明書の Amazon リソースネーム (ARN)。

HSM の キーを使用してこの証明書を生成し、HSM にインポートして、 AWS IoT クラウドにアップロードしておく必要があります。証明書の生成とインポートの詳細については、「HSM のドキュメント」を参照してください。

証明書は、config.json. で指定したのと同じアカウントとリージョンにアップロードする必要があります。への証明書のアップロードの詳細については AWS IoT、「 AWS IoT デベロッパーガイド」の「クライアント証明書を手動で登録する」を参照してください。

hsm.rootCAPath

(オプション) IDT ホストマシンで、証明書に署名したルート認証局 (CA) へのフルパス。これは、作成された HSM の証明書が Amazon ルート CA によって署名されていない場合に必要です。

AWS Parameter Store から設定を取得する

AWS IoT Device Tester (IDT) には、AWS Systems Manager パラメータストア から設定値を取得するオプション機能が含まれています。 AWS パラメータストアでは、設定を安全かつ暗号化して保存できます。設定すると、IDT は、パラメータをプレーンテキストでuserdata.jsonファイル内に保存する代わりに、 AWS Parameter Store からパラメータを取得できます。これは、パスワード、PIN、その他の秘密など、暗号化して保存する必要がある機密データにとって有益です。

  1. この機能を使用するには、IDT ユーザーの作成に使用されるアクセス許可を更新して、IDT が使用するように設定されたパラメータに対する GetParameter アクションを許可する必要があります。IDT ユーザーに追加できる許可ステートメントの例を以下に示します。詳細については、「AWS Systems Manager ユーザーガイド」を参照してください。

    { "Sid":"parameterStoreResources", "Effect": "Allow", "Action": [ "ssm:GetParameter" ], "Resource": "arn:aws:ssm:*:*:parameter/IDT*" }

    上記の許可は、ワイルドカード文字 * を使用することによって、名前が IDT で始まるすべてのパラメータをフェッチすることを許可するように設定されています。使用しているパラメータの名前に基づいて、設定されたパラメータを IDT がフェッチできるように、必要に応じてこれをカスタマイズする必要があります。

  2. 設定値は AWS Paramater Store に保存する必要があります。これは、 AWS コンソールまたは AWS CLI から実行できます。 AWS Parameter Store では、暗号化されたストレージまたは暗号化されていないストレージを選択できます。シークレット、パスワード、ピンなどの機密値を保存するには、 のパラメータタイプである暗号化されたオプションを使用する必要があります SecureString。 AWS CLI を使用してパラメータをアップロードするには、次のコマンドを使用できます。

    aws ssm put-parameter --name IDT-example-name --value IDT-example-value --type SecureString

    次のコマンドを実行して、パラメータが保存されていることを確認できます。(オプション) --with-decryptionフラグを使用して、復号化されたSecureString パラメータを取得します。

    aws ssm get-parameter --name IDT-example-name

    AWS CLI を使用すると、現在の CLI ユーザーの AWS リージョンに パラメータをアップロードし、IDT は で設定されたリージョンからパラメータを取得しますconfig.json。 AWS CLI からリージョンを確認するには、次を使用します。

    aws configure get region
  3. AWS クラウドに設定値を取得したら、IDT 設定内の任意の値を更新して AWS クラウドから取得できます。そのためには、フォームの IDT 設定でプレースホルダーを使用して{{AWS.Parameter.parameter_name}}、パラメータストアからその名前で AWS パラメータを取得します。

    例えば、ステップ 2 の IDT-example-name パラメータを HSM 設定で HSM keyLabel として使用する場合は、userdata.json を次のように更新できます。

    "hsm": { "keyLabel": "{{AWS.Parameter.IDT-example-name}}", [...] }

    IDT は、ステップ 2 で IDT-example-value に設定されたこのパラメータの値を実行時にフェッチします。この設定は の設定に似ています"keyLabel": "IDT-example-value"が、代わりにその値は暗号化された状態で AWS クラウドに保存されます。