翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
IDT 設定を設定して AWS IoT Greengrass 認定スイートを実行する
テストを実行する前に、ホストコンピュータの 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
テンプレートを使用する必要があります。
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をインストールするデバイスのフォルダへのフルパス。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.protocol
がssh
に設定されている場合にのみ適用されます。警告
ハードウェアセキュリティモジュールが 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、その他の秘密など、暗号化して保存する必要がある機密データにとって有益です。
-
この機能を使用するには、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 コンソールまたは 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
-
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 クラウドに保存されます。