翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
テストを実行する前に、ホストコンピュータで AWS 認証情報とデバイスの設定を行う必要があります。
config.json で AWS 認証情報を設定する
IAM ユーザー認証情報を
ファイルで設定する必要があります。で作成した IDT for AWS IoT Greengrass V2 ユーザーの認証情報を使用しますの作成と設定 AWS アカウント。以下のいずれかの方法で認証情報を指定できます。<device_tester_extract_location>
/configs/config.json
-
認証情報ファイルを使用する
-
環境変数を使用する
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.jsondevice.json
テンプレートを使用する必要があります。
[
{
"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>
"
}
}
}
}
]
}
]
注記
method
が pki
に設定されている場合のみ privKeyPath
を指定します。
method
が password
に設定されている場合のみ password
を指定します。
以下に説明するように、値が含まれているすべてのプロパティは必須です。
id
-
デバイスプールと呼ばれるデバイスのコレクションを一意に識別するユーザー定義の英数字の ID。プールに属するデバイスには、同一のハードウェアが必要です。テストスイートを実行する場合、プールのデバイスを使用してワークロードを並列化します。複数のデバイスを使用して異なるテストを実行します。
sku
-
テスト対象デバイスを一意に識別する英数字の値。SKU は、適格性が確認されたボードの追跡に使用されます。
注記
AWS Partner Device Catalog にデバイスを一覧表示する場合、ここで指定する SKU は、一覧表示プロセスで使用する SKU と一致する必要があります。
features
-
デバイスでサポートされている機能を含む配列。すべての機能が必要です。
arch
-
テスト実行で検証される、サポートされているオペレーティングシステムアーキテクチャ。次の値を指定できます:
-
x86_64
-
armv6l
-
armv7l
-
aarch64
-
ml
-
デバイスが、 が提供する機械学習 (ML) AWSコンポーネントを使用するために必要なすべての技術的依存関係を満たしていることを検証します。
またこの機能を有効にすると、デバイスが 深層学習ランタイム
および TensorFlow Lite ML フレームワークを使用して ML 推論を実行できることも検証されます。 有効な値は、
dlr
とtensorflowlite
、または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.protocol
がssh
に設定されている場合にのみ適用されます。 connectivity.port
-
オプション。SSH 接続に使用するポート番号。
デフォルト値は 22 です。
このプロパティは、
connectivity.protocol
がssh
に設定されている場合にのみ適用されます。 connectivity.publicKeyPath
-
オプション。テスト対象のデバイスへの接続を認証するために使用される公開キーへのフルパス。
publicKeyPath
を指定すると、IDT がテスト対象のデバイスへの SSH 接続を確立するときに、デバイスの公開キーを検証します。この値が指定されていない場合、IDT は SSH 接続を作成しますが、デバイスのパブリックキーは検証しません。公開キーへのパスを指定し、安全な方法を使用して、この公開キーをフェッチすることを強くお勧めします。標準のコマンドラインベースの SSH クライアントの場合、パブリックキーは
known_hosts
ファイルで提供されます。別の公開キーファイルを指定する場合、このファイルはknown_hosts
ファイルと同じ形式、つまり (ip-address
key-type
public-key
connectivity.auth
-
接続の認証情報。
このプロパティは、
connectivity.protocol
がssh
に設定されている場合にのみ適用されます。connectivity.auth.method
-
指定された接続プロトコルを介してデバイスにアクセスするために使用される認証方法。
サポートされている値は以下のとおりです。
-
pki
-
password
-
connectivity.auth.credentials
-
認証に使用される認証情報。
connectivity.auth.credentials.password
-
テスト中のデバイスにサインインするためのパスワード。
この値は、
connectivity.auth.method
がpassword
に設定されている場合にのみ適用されます。 connectivity.auth.credentials.privKeyPath
-
テスト中のデバイスにサインインするためのプライベートキーへの完全パス。
この値は、
connectivity.auth.method
がpki
に設定されている場合にのみ適用されます。 connectivity.auth.credentials.user
-
テスト対象デバイスにサインインするためのユーザー名。
userdata.json を設定する
IDT for AWS IoT Greengrass V2 には、テストアーティファクトと AWS IoT Greengrass ソフトウェアの場所に関する追加情報も必要です。
これらの情報を指定するには、
にある
<device_tester_extract_location>
/configs/userdata.jsonuserdata.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をインストールするデバイスのフォルダへのフルパス。プレインストールされた Greengrass の場合、これは Greengrass インストールディレクトリへのパスです。
このフォルダに必要なファイル権限を設定する必要があります。インストールパス内のフォルダごとに、以下のコマンドを実行します。
sudo chmod 755
folder-name
GreengrassNucleusZip
-
ホストコンピュータの Greengrass nucleus ZIP (
greengrass-nucleus-latest.zip
) ファイルへのフルパス。このフィールドは、プレインストールされた Greengrass でのテストには必要ありません。注記
IDT for の Greengrass nucleus のサポートされているバージョンについては AWS IoT Greengrass、「」を参照してください最新バージョンの IDT for AWS IoT Greengrass V2。最新の 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.protocol
がssh
に設定されている場合にのみ適用されます。警告
ハードウェアセキュリティモジュールが IDT と別のシステム間で共有されている場合、HSM 設定は機密データとみなされる場合があります。このような状況では、これらの設定値を AWS Parameter Store の SecureString パラメータに格納し、IDT を設定してテストの実行中にフェッチすることによって、これらの設定値をプレーンテキストで保護することを回避できます。詳細については、「Parameter Store AWS から設定を取得する」を参照してください
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 が AWS IoT Greengrass Core ソフトウェアを HSM に対して認証するために使用するユーザー 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 によって署名されていない場合に必要です。
Parameter Store AWS から設定を取得する
AWS IoT Device Tester (IDT) には、AWS Systems Manager パラメータストアから設定値を取得するためのオプション機能が含まれています。 AWS パラメータストアを使用すると、設定を安全に暗号化して保存できます。設定すると、IDT AWS は、パラメータをプレーンテキストでuserdata.json
ファイル内に保存する代わりに、Parameter Store からパラメータを取得できます。これは、パスワード、PIN、その他の秘密など、暗号化して保存する必要がある機密データにとって有益です。
-
この機能を使用するには、IDT ユーザーの作成に使用する許可を更新して、IDT が使用するように設定されているパラメータに対する GetParameter アクションを許可する必要があります。IDT ユーザーに追加できる許可ステートメントの例を以下に示します。詳細については、「AWS Systems Manager ユーザーガイド」を参照してください。
{ "Sid":"parameterStoreResources", "Effect": "Allow", "Action": [ "ssm:GetParameter" ], "Resource": "arn:aws:ssm:*:*:parameter/IDT*" }
上記の許可は、ワイルドカード文字
*
を使用することによって、名前がIDT
で始まるすべてのパラメータをフェッチすることを許可するように設定されています。使用しているパラメータの名前に基づいて、設定されたパラメータを IDT がフェッチできるように、必要に応じてこれをカスタマイズする必要があります。 -
設定値は AWS Paramater Store に保存する必要があります。これは、 AWS コンソールまたは CLI AWS から実行できます。 AWS Parameter Store では、暗号化されたストレージまたは暗号化されていないストレージを選択できます。秘密、パスワード、PIN などの機密の値を保存する場合には、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
CLI を使用すると、現在の CLI AWS ユーザーの AWS リージョンに パラメータをアップロードし、IDT は で設定されたリージョンからパラメータを取得します
config.json
。 AWS CLI からリージョンを確認するには、次を使用します。aws configure get region
-
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 クラウドに保存されます。