翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS IoT Greengrass 認定スイートを実行するための IDT 設定を設定する
テストを実行する前に、ホストコンピュータの AWS 認証情報およびデバイスの設定を設定する必要があります。
config.json で AWS 認証情報を設定する
IAM ユーザー認証情報を ファイルで設定する必要があります。の作成と設定 AWS アカウント で作成した IDT for AWS IoT Greengrass V2 ユーザーの認証情報を使用します。以下のいずれかの方法で認証情報を指定できます。<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 を設定するには、auth ファイルの config.json セクションを編集します。以下がその例です。
{ "awsRegion": "region", "auth": { "method": "environment" } }
device.json の設定
注記
IDT v4.9.3 は、ml、docker、および streamManagement 機能のテストをサポートしています。IDT v4.9.4 以降のバージョンでは、docker のテストをサポートしています。これらの機能をテストしない場合は、対応する値を no に設定します。
AWS 認証情報に加えて、AWS IoT Greengrass V2 の IDT は、テストが実行されるデバイスに関する情報を必要とします。情報の例としては、IP アドレス、ログイン情報、オペレーティングシステム、CPU アーキテクチャなどがあります。
これらの情報を指定するには、device.json にある テンプレートを使用する必要があります。
<device_tester_extract_location>/configs/device.json
userdata.json を設定する
IDT for AWS IoT Greengrass V2 では、テストアーティファクトと AWS IoT Greengrass ソフトウェアの場所に関する追加情報も必要です。
これらの情報を指定するには、userdata.json にある テンプレートを使用する必要があります。
<device_tester_extract_location>/configs/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 をインストールするデバイスのフォルダへのフルパス。プレインストールされた Greengrass の場合、これは Greengrass インストールディレクトリへのパスです。
このフォルダに必要なファイル権限を設定する必要があります。インストールパス内のフォルダごとに、以下のコマンドを実行します。
sudo chmod 755folder-name GreengrassNucleusZip-
ホストコンピュータの Greengrass nucleus ZIP (
greengrass-nucleus-latest.zip) ファイルへのフルパス。このフィールドは、プレインストールされた Greengrass でのテストには必要ありません。注記
IDT for AWS IoT Greengrass でサポートされている Greengrass nucleus のバージョンの詳細については、「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.protocolがsshに設定されている場合にのみ適用されます。警告
ハードウェアセキュリティモジュールが IDT と別のシステム間で共有されている場合、HSM 設定は機密データとみなされる場合があります。このような状況では、これらの設定値を AWS Parameter Store の SecureString パラメータに格納し、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 が 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 デベロッパーガイド」の「Register a client certificate manually」を参照してください。
hsm.rootCAPath-
(オプション) IDT ホストマシンで、証明書に署名したルート認証局 (CA) へのフルパス。これは、作成された HSM の証明書が Amazon ルート CA によって署名されていない場合に必要です。
AWS Parameter Store から設定をフェッチする
AWS IoT Device Tester (IDT) には、AWSSystems Manager Parameter StoreAWS から設定値をフェッチするオプション機能が含まれています。Parameter Store を使用することで、設定を暗号化して安全に保存できます。設定すると、IDT は、userdata.json ファイル内にプレーンテキストでパラメータを格納する代わりに、AWS 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 Parameter Store 内に設定値を保存する必要があります。これは、AWS コンソールまたは AWS CLI から実行できます。AWSParameter 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-nameAWS CLI を使用すると、現在の CLI ユーザーの AWS リージョンにパラメータがアップロードされ、IDT は
config.jsonで設定されたリージョンからパラメータをフェッチします。AWS CLI からリージョンを確認するには、次を使用します。aws configure get region -
AWS クラウドで設定値を取得すると、IDT 設定内の任意の値を更新して、AWS クラウドからフェッチできるようになります。これを実行するには、フォーム
{{AWS.Parameter.parameter_name}}の IDT 設定でプレースホルダーを使用して、AWS Parameter Store からその名前でパラメータをフェッチします。例えば、ステップ 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 クラウドに保存される点で異なります。