

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

# 認定スイートを実行するように IDT AWS IoT Greengrass 設定を構成する
<a name="set-config"></a>

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

## config.json で AWS 認証情報を設定する
<a name="cfg-aws-gg"></a>

IAM ユーザー認証情報を `<device_tester_extract_location>/configs/config.json` ファイルで設定する必要があります。で作成した IDT for AWS IoT Greengrass V2 ユーザーの認証情報を使用します[の作成と設定 AWS アカウント](dev-tst-prereqs.md#config-aws-account-for-idt)。以下のいずれかの方法で認証情報を指定できます。
+ 認証情報ファイルを使用する
+ 環境変数を使用する

### AWS 認証情報ファイルを使用して認証情報を設定する
<a name="config-cred-file"></a>

IDT では、 AWS CLIと同じ認証情報ファイルが使用されます。詳細については、「[設定ファイルと認証情報ファイル](https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html)」を参照してください。

認証情報ファイルの場所は、使用しているオペレーティングシステムによって異なります。
+ 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`ファイルのプロファイル名を必ず変更してください。詳細については、「[名前付きプロファイル](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)」を参照してください。

### 環境変数を使用して AWS 認証情報を設定する
<a name="config-env-vars"></a>

環境変数は、オペレーティングシステムによって維持され、システムコマンドによって使用される変数です。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 の設定
<a name="device-config"></a>

**注記**  
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>"
            }
          }
        }
      }
    ]
  }
]
```

**注記**  
`method` が `pki` に設定されている場合のみ `privKeyPath` を指定します。  
`method` が `password` に設定されている場合のみ `password` を指定します。

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

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

`sku`  
テスト対象デバイスを一意に識別する英数字の値。SKU は、適格性が確認されたボードの追跡に使用されます。  
 AWS Partner Device Catalog にデバイスを一覧表示する場合、ここで指定する SKU は、一覧表示プロセスで使用する SKU と一致する必要があります。

`features`  
デバイスでサポートされている機能を含む配列。すべての機能が必要です。    
`arch`  
テスト実行で検証される、サポートされているオペレーティングシステムアーキテクチャ。次の値を指定できます。  
+ `x86_64`
+ `armv6l`
+ `armv7l`
+ `aarch64`  
`ml`  
<a name="description-ml"></a>デバイスが、 が提供する機械学習 (ML) AWSコンポーネントを使用するために必要な技術的な依存関係をすべて満たしていることを検証します。  
またこの機能を有効にすると、<a name="description-ml-inference-phrase"></a>デバイスが [深層学習ランタイム](https://github.com/neo-ai/neo-ai-dlr) および [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) ML フレームワークを使用して ML 推論を実行できることも検証されます。  
有効な値は、`dlr` と `tensorflowlite`、または `no` の任意の組み合わせです。  
`docker`  
<a name="description-docker"></a> AWS提供された Docker アプリケーションマネージャー (`aws.greengrass.DockerApplicationManager`) コンポーネントを使用するために必要なすべての技術的依存関係をデバイスが満たしていることを検証します。  
またこの機能を有効にすると、<a name="description-docker-app-manager-qual-phrase"></a>デバイスが Amazon ECR から Docker コンテナイメージをダウンロードできることも検証されます。  
有効な値は、`yes` または `no` の任意の組み合わせです。  
`streamManagement`  
<a name="description-sm"></a>デバイスが [AWS IoT Greengrass ストリームマネージャー](manage-data-streams.md)をダウンロード、インストール、および実行できることを検証します。  
有効な値は、`yes` または `no` の任意の組み合わせです。  
`hsi`  
<a name="description-hsi"></a>ハードウェアセキュリティモジュール (HSM) に保存されているプライベートキーと証明書を使用して、デバイスが AWS IoT および AWS IoT Greengrass サービスへの接続を認証できることを検証します。このテストでは、ベンダー提供 AWSの [PKCS\$111 ライブラリを使用して、提供された PKCS\$111 プロバイダーコンポーネント](pkcs11-provider-component.md)が HSM とインターフェイスできることも検証します。詳細については、「[ハードウェアセキュリティ統合](hardware-security.md)」を参照してください。  
有効な値は `hsm` または `no` です。
`hsi` のテストは IDT v4.9.3 以降のバージョンでのみ利用できます。

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

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

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

`connectivity.ip`  
テスト対象のデバイスの IP アドレス。  
<a name="connectivity-protocol-ssh-only"></a>このプロパティは、`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`) を使用する必要があります。同じ ip-address を持つエントリが複数ある場合、IDT が使用するキータイプのエントリは、ファイル内の他のエントリより前である必要があります。

`connectivity.auth`  
接続の認証情報。  
<a name="connectivity-protocol-ssh-only"></a>このプロパティは、`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`  
テスト対象デバイスにサインインするためのユーザー名。

------
#### [ 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>"
            }
          }
        }
      }
    ]
  }
]
```

**注記**  
`method` が `pki` に設定されている場合のみ `privKeyPath` を指定します。  
`method` が `password` に設定されている場合のみ `password` を指定します。

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

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

`sku`  
テスト対象デバイスを一意に識別する英数字の値。SKU は、適格性が確認されたボードの追跡に使用されます。  
 AWS Partner Device Catalog にデバイスを一覧表示する場合、ここで指定する SKU は、一覧表示プロセスで使用する SKU と一致する必要があります。

`features`  
デバイスでサポートされている機能を含む配列。すべての機能が必要です。    
`arch`  
テスト実行で検証される、サポートされているオペレーティングシステムアーキテクチャ。次の値を指定できます。  
+ `x86_64`
+ `armv6l`
+ `armv7l`
+ `aarch64`  
`docker`  
<a name="description-docker"></a> AWS提供された Docker アプリケーションマネージャー (`aws.greengrass.DockerApplicationManager`) コンポーネントを使用するために必要なすべての技術的依存関係をデバイスが満たしていることを検証します。  
またこの機能を有効にすると、<a name="description-docker-app-manager-qual-phrase"></a>デバイスが Amazon ECR から Docker コンテナイメージをダウンロードできることも検証されます。  
有効な値は、`yes` または `no` の任意の組み合わせです。  
`hsi`  
<a name="description-hsi"></a>ハードウェアセキュリティモジュール (HSM) に保存されているプライベートキーと証明書を使用して、デバイスが AWS IoT および AWS IoT Greengrass サービスへの接続を認証できることを検証します。このテストでは、ベンダー提供 AWSの [PKCS\$111 ライブラリを使用して、提供された PKCS\$111 プロバイダーコンポーネント](pkcs11-provider-component.md)が HSM とインターフェイスできることも検証します。詳細については、「[ハードウェアセキュリティ統合](hardware-security.md)」を参照してください。  
有効な値は `hsm` または `no` です。
`hsi` のテストは IDT v4.9.3 以降のバージョンでのみ利用できます。

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

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

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

`connectivity.ip`  
テスト対象のデバイスの IP アドレス。  
<a name="connectivity-protocol-ssh-only"></a>このプロパティは、`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`) を使用する必要があります。同じ ip-address を持つエントリが複数ある場合、IDT が使用するキータイプのエントリは、ファイル内の他のエントリより前である必要があります。

`connectivity.auth`  
接続の認証情報。  
<a name="connectivity-protocol-ssh-only"></a>このプロパティは、`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 を設定する
<a name="userdata-config"></a>

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をインストールするデバイスのフォルダへのフルパス。プレインストールされた Greengrass の場合、これは Greengrass インストールディレクトリへのパスです。  
このフォルダに必要なファイル権限を設定する必要があります。インストールパス内のフォルダごとに、以下のコマンドを実行します。  

```
sudo chmod 755 folder-name
```

`GreengrassNucleusZip`  
ホストコンピュータの Greengrass nucleus ZIP (`greengrass-nucleus-latest.zip`) ファイルへのフルパス。このフィールドは、プレインストールされた Greengrass でのテストには必要ありません。  
IDT for IDT でサポートされている Greengrass nucleus のバージョンについては AWS IoT Greengrass、「」を参照してください[AWS IoT Greengrass V2 の最新の IDT バージョン](dev-test-versions.md#idt-latest-version)。最新の Greengrass ソフトウェアをダウンロードするには、[AWS IoT Greengrass 「ソフトウェアのダウンロード](https://docs.aws.amazon.com/greengrass/v2/developerguide/dev-tst-prereqs.html#config-gg)」を参照してください。

`PreInstalled`  
この機能は、Linux デバイスでのみ IDT v4.5.8 以降で利用できます。  
(オプション) 値が *yes* の場合、IDT は `InstallationDirRootOnDevice` に記載されているパスを Greengrass がインストールされているディレクトリとみなします。  
デバイスで Greengrass をインストールする方法の詳細については、「[自動リソースプロビジョニングを使用して AWS IoT Greengrass Core ソフトウェアをインストールする](quick-installation.md)」を参照してください。[手動プロビジョニングでインストールする場合は、モノを手動で作成するときに](https://docs.aws.amazon.com/greengrass/v2/developerguide/manual-installation.html)「モノを新規または既存のモノグループに追加する」ステップを含め[AWS IoT ます](https://docs.aws.amazon.com/greengrass/v2/developerguide/manual-installation.html#create-iot-thing)。 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]](dev-tst-prereqs.md#configure-idt-permissions) (テストユーザーの IAM アクセス許可) を更新して、ユーザーが IAM ロールとポリシーを作成および削除できるようにする `iamResourcesUpdate` ステートメントを除外できます。
トークン交換ロールとしてカスタム IAM ロールの作成方法の詳細については、「[カスタムトークン交換ロールを設定する](device-config-setup.md#configure-custom-tes-role-for-idt)」を参照してください。

`hsm`  
この機能は IDT v4.5.1 以降で利用できます。  
(オプション) AWS IoT Greengrass ハードウェアセキュリティモジュール (HSM) でテストするための設定情報。それ以外の場合は、`hsm` プロパティを省略する必要があります。詳細については、「[ハードウェアセキュリティ統合](hardware-security.md)」を参照してください。  
<a name="connectivity-protocol-ssh-only"></a>このプロパティは、`connectivity.protocol` が `ssh` に設定されている場合にのみ適用されます。  
ハードウェアセキュリティモジュールが IDT と別のシステム間で共有されている場合、HSM 設定は機密データとみなされる場合があります。このような状況では、これらの設定値を AWS Parameter Store の SecureString パラメータに格納し、IDT を設定してテストの実行中にフェッチすることによって、これらの設定値をプレーンテキストで保護することを回避できます。詳細については、[Parameter Store AWS から設定を取得する](#fetch-config)を参照してください。  
`hsm.greengrassPkcsPluginJar`  
IDT ホストマシンにダウンロードする [[PKCS\$111 provider component]](pkcs11-provider-component.md) (PKCS\$111 プロバイダコンポーネント) のフルパス。 AWS IoT Greengrass はこのコンポーネントを JAR ファイルとして提供します。このファイルをダウンロードし、インストール時にプロビジョニングプラグインとして指定できます。次の URL としてコンポーネントの JAR ファイルの最新バージョンをダウンロードできます: [https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar](https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar)。  
`hsm.pkcs11ProviderLibrary`  
HSM とやり取りするためのハードウェアセキュリティモジュール (HSM) ベンダーによって提供される PKCS\$111 ライブラリへのフルパス。  
`hsm.slotId`  
キーと証明書をロードする HSM スロットの識別に使用されるスロット ID。  
`hsm.slotLabel`  
キーと証明書をロードする HSM スロットの識別に使用されるスロットラベル。  
`hsm.slotUserPin`  
IDT が HSM に対して AWS IoT Greengrass Core ソフトウェアを認証するために使用するユーザー PIN。  
セキュリティのベストプラクティスとして、実稼働デバイスで同じユーザー PIN を使用しないでください。  
`hsm.keyLabel`  
ハードウェアモジュールでキーを識別するために使用されるラベル。キーと証明書の両方で同じキーラベルを使用する必要があります。  
`hsm.preloadedCertificateArn`  
 AWS IoT クラウドのデバイス証明書の Amazon リソースネーム (ARN)。  
以前に HSM の キーを使用してこの証明書を生成し、HSM にインポートして、 AWS IoT クラウドにアップロードしておく必要があります。証明書の生成とインポートの詳細については、「HSM のドキュメント」を参照してください。  
証明書は、[config.json.](#cfg-aws-gg) で指定したのと同じアカウントとリージョンにアップロードする必要があります。証明書を にアップロードする方法の詳細については AWS IoT、「 *AWS IoT デベロッパーガイド*」の[「クライアント証明書を手動で登録](https://docs.aws.amazon.com/iot/latest/developerguide/manual-cert-registration.html)する」を参照してください。  
`hsm.rootCAPath`  
(オプション) IDT ホストマシンで、証明書に署名したルート認証局 (CA) へのフルパス。これは、作成された HSM の証明書が Amazon ルート CA によって署名されていない場合に必要です。

## Parameter Store AWS から設定を取得する
<a name="fetch-config"></a>

AWS IoT Device Tester (IDT) には、[AWS Systems Manager パラメータストア](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)から設定値を取得するためのオプション機能が含まれています。 AWS パラメータストアを使用すると、設定を安全に暗号化して保存できます。設定すると、IDT AWS は、ファイル内にパラメータをプレーンテキストで保存する代わりに、Parameter Store からパラメータを取得できます`userdata.json`。これは、パスワード、PIN、その他の秘密など、暗号化して保存する必要がある機密データにとって有益です。

1. この機能を使用するには、[IDT ユーザー](https://docs.aws.amazon.com/greengrass/v2/developerguide/dev-tst-prereqs.html)の作成に使用する許可を更新して、IDT が使用するように設定されているパラメータに対する GetParameter アクションを許可する必要があります。IDT ユーザーに追加できる許可ステートメントの例を以下に示します。詳細については、「[AWS Systems Manager ユーザーガイド](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-access.html)」を参照してください。

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

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

1. 設定値は 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
   ```

1.  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 クラウドに保存されます。