

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Gunakan IDT untuk menjalankan suite AWS IoT Greengrass kualifikasi
<a name="idt-greengrass-qualification"></a>

Anda dapat menggunakan AWS IoT Greengrass V2 AWS IoT Device Tester untuk memverifikasi bahwa perangkat lunak AWS IoT Greengrass Core berjalan pada perangkat keras Anda dan dapat berkomunikasi dengan perangkat keras AWS Cloud. Ini juga melakukan end-to-end tes dengan AWS IoT Core. Misalnya, aplikasi ini memverifikasi bahwa perangkat Anda dapat men-deploy komponen dan memperbaruinya. 

Selain perangkat pengujian, IDT untuk AWS IoT Greengrass V2 menciptakan sumber daya (misalnya, AWS IoT hal-hal, grup, dan sebagainya) di Anda Akun AWS untuk memfasilitasi proses kualifikasi.

<a name="idt-aws-credentials"></a>Untuk membuat sumber daya ini, IDT untuk AWS IoT Greengrass V2 menggunakan AWS kredenal yang dikonfigurasi dalam `config.json` file untuk melakukan panggilan API atas nama Anda. Sumber daya ini disediakan pada berbagai waktu selama tes.

Ketika Anda menggunakan IDT untuk AWS IoT Greengrass V2 untuk menjalankan suite AWS IoT Greengrass kualifikasi, ia melakukan langkah-langkah berikut:

1. Memuat dan memvalidasi konfigurasi perangkat dan kredensial Anda.

1. Melakukan tes yang dipilih dengan sumber daya lokal dan cloud yang diperlukan.

1. Membersihkan sumber daya lokal dan cloud.

1. Menghasilkan laporan tes yang menunjukkan jika forum Anda lulus tes yang diperlukan untuk kualifikasi.

## Versi rangkaian tes
<a name="idt-test-suite-versions"></a>

IDT untuk AWS IoT Greengrass V2 mengatur pengujian ke dalam rangkaian pengujian dan grup pengujian.<a name="idt-test-suites-groups"></a>
+ Rangkaian uji adalah rangkaian grup uji yang digunakan untuk memverifikasi bahwa perangkat bekerja dengan versi AWS IoT Greengrass tertentu.
+ Grup uji adalah serangkaian pengujian individu yang terkait dengan fitur tertentu, seperti deployment komponen.

Rangkaian uji dibuat dalam versi baru dengan menggunakan format `major.minor.patch`, misalnya `GGV2Q_1.0.0`. Ketika Anda men-download IDT, paketnya mencakup versi terbaru rangkaian Greengrass kualifikasi.

**penting**  
Pengujian dari versi rangkaian uji yang tidak didukung tidak valid untuk kualifikasi perangkat. IDT tidak mencetak laporan kualifikasi untuk versi yang tidak didukung. Untuk informasi selengkapnya, lihat [Kebijakan Support AWS IoT Device Tester untuk AWS IoT Greengrass](idt-support-policy.md).  
Anda dapat `list-supported-products` menjalankan daftar versi AWS IoT Greengrass dan test suite yang didukung oleh versi IDT Anda saat ini. 

## Deskripsi grup uji
<a name="dt-test-groups"></a>

**Kelompok Uji yang Diperlukan untuk Kualifikasi Inti**  
Grup pengujian ini diperlukan untuk memenuhi syarat perangkat AWS IoT Greengrass V2 Anda untuk Katalog AWS Partner Perangkat.    
Dependensi Inti  
Memvalidasi bahwa perangkat tersebut memenuhi semua persyaratan perangkat lunak dan perangkat keras untuk perangkat lunak inti AWS IoT Greengrass . Grup uji ini mencakup uji kasus berikut:     
Versi Java  
Memeriksa apakah versi Java yang diperlukan diinstal pada perangkat yang sedang diuji. AWS IoT Greengrass membutuhkan Java 8 atau yang lebih baru.  
PreTest Validasi  
Memeriksa apakah perangkat memenuhi persyaratan perangkat lunak untuk menjalankan pengujian.   
+ Untuk perangkat berbasis Linux, pengujian ini memeriksa apakah perangkat dapat menjalankan perintah Linux berikut: 

  `chmod`, `cp`, `echo`, `grep`, `kill`, `ln`, `mkinfo`, `ps`, `rm`, `sh`, `uname` 
+ Untuk perangkat berbasis Windows, pengujian ini memeriksa apakah perangkat telah menginstal perangkat lunak Microsoft berikut:

  [Powershell](https://learn.microsoft.com/en-us/powershell/?view=powershell-7.1) [v5.1 atau yang lebih baru, [.NET](https://learn.microsoft.com/en-us/dotnet/) v4.6.1 atau yang lebih baru, [Visual C\$1\$1 2017 atau yang lebih baru, utilitas](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170) PsExec](https://learn.microsoft.com/en-us/sysinternals/downloads/psexec)  
Pemeriksa Versi  
Memeriksa apakah versi yang AWS IoT Greengrass disediakan kompatibel dengan versi AWS IoT Device Tester yang Anda gunakan.  
Komponen  
Memvalidasi bahwa perangkat dapat men-deploy komponen dan meningkatkannya. Grup uji ini mencakup pengujian berikut:    
Komponen Cloud  
Memvalidasi kemampuan perangkat untuk komponen cloud.  
Komponen Lokal  
Memvalidasi kemampuan perangkat untuk komponen cloud.  
Lambda  
Tes ini tidak berlaku untuk perangkat berbasis Windows.  
Memvalidasi bahwa perangkat dapat menerapkan komponen fungsi Lambda yang menggunakan runtime Java, dan bahwa fungsi Lambda dapat menggunakan topik AWS IoT Core MQTT sebagai sumber peristiwa untuk pesan kerja.  
MQTT  
Memvalidasi bahwa perangkat dapat berlangganan dan mempublikasikan ke topik AWS IoT Core MQTT.

**Grup Uji Opsional**  
Grup pengujian ini bersifat opsional, dan hanya digunakan untuk perangkat inti Greengrass berbasis Linux yang memenuhi syarat. Jika Anda memilih untuk memenuhi syarat untuk pengujian opsional, perangkat Anda terdaftar dengan kemampuan tambahan di Katalog AWS Partner Perangkat.  
Dependensi Docker  
<a name="description-docker"></a>Memvalidasi bahwa perangkat memenuhi semua dependensi teknis yang diperlukan untuk menggunakan komponen Docker application manager () AWS-provided. `aws.greengrass.DockerApplicationManager`  
Kualifikasi Manajer Aplikasi Docker  
<a name="description-docker-app-manager-qual"></a>Memvalidasi <a name="description-docker-app-manager-qual-phrase"></a>bahwa perangkat dapat mengunduh gambar kontainer Docker dari Amazon ECR.  
Dependensi Machine Learning  
Kelompok uji opsional pembelajaran mesin hanya didukung di IDT v4.9.3.
<a name="description-ml"></a>Memvalidasi bahwa perangkat memenuhi semua dependensi teknis yang diperlukan untuk menggunakan komponen pembelajaran mesin ( AWS ML) yang disediakan.  
Uji Inferensi Machine Learning  
Kelompok uji opsional pembelajaran mesin hanya didukung di IDT v4.9.3.
<a name="description-ml-inference"></a>Memvalidasi <a name="description-ml-inference-phrase"></a>bahwa perangkat dapat melakukan inferensi ML menggunakan kerangka kerja [Deep Learning Runtime](https://github.com/neo-ai/neo-ai-dlr) dan [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) ML.  
Dependensi Stream Manager  
Grup pengujian opsional manajer aliran hanya didukung di IDT v4.9.3.
<a name="description-sm"></a>Memvalidasi bahwa perangkat tersebut dapat mengunduh, menginstal, dan menjalankan perintah [manajer pengaliran AWS IoT Greengrass](manage-data-streams.md).  
Integrasi Keamanan Perangkat Keras (HSI)  
Tes ini tersedia di IDT v4.9.3 dan yang lebih baru hanya untuk perangkat berbasis Linux. AWS IoT Greengrass saat ini tidak mendukung integrasi keamanan perangkat keras untuk perangkat Windows.
<a name="description-hsi"></a>Memvalidasi bahwa perangkat dapat mengautentikasi koneksi ke AWS IoT dan AWS IoT Greengrass layanan menggunakan kunci pribadi dan sertifikat yang disimpan dalam modul keamanan perangkat keras (HSM). Pengujian ini juga memverifikasi bahwa [komponen penyedia PKCS \$111 AWS](pkcs11-provider-component.md) yang disediakan dapat berinteraksi dengan HSM menggunakan pustaka PKCS \$111 yang disediakan vendor. Lihat informasi yang lebih lengkap di [Integrasi keamanan perangkat keras](hardware-security.md).

# Prasyarat untuk menjalankan suite kualifikasi AWS IoT Greengrass
<a name="dev-tst-prereqs"></a>

Bagian ini menjelaskan prasyarat untuk menggunakan AWS IoT Device Tester (IDT) untuk. AWS IoT Greengrass

## Unduh versi terbaru AWS IoT Device Tester untuk AWS IoT Greengrass
<a name="install-dev-tst-gg"></a>

Unduh [versi terbaru](idt-programmatic-download.md) IDT dan ekstrak perangkat lunak ke lokasi (*<device-tester-extract-location>*) pada sistem file Anda di mana Anda memiliki izin baca/tulis. 

**catatan**  
<a name="unzip-package-to-local-drive"></a>IDT tidak mendukung untuk dijalankan oleh beberapa pengguna dari lokasi bersama, seperti direktori NFS atau folder bersama jaringan Windows. Kami sarankan Anda mengekstraksi paket IDT ke drive lokal dan menjalankan biner IDT pada workstation lokal Anda.  
Windows memiliki batasan panjang jalur 260 karakter. Jika Anda menggunakan Windows, ekstraksi IDT ke direktori root seperti `C:\ ` atau `D:\` agar jalur Anda tetap di bawah batas 260 karakter.

## Unduh perangkat AWS IoT Greengrass lunak
<a name="config-gg"></a>

IDT untuk AWS IoT Greengrass V2 menguji perangkat Anda untuk kompatibilitas dengan versi tertentu. AWS IoT Greengrass Jalankan perintah berikut untuk mengunduh perangkat lunak AWS IoT Greengrass Core ke file bernama`aws.greengrass.nucleus.zip`. Ganti *version* dengan [versi komponen nukleus yang didukung untuk versi](dev-test-versions.md) IDT Anda. 

------
#### [ Linux or Unix ]

```
curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip > aws.greengrass.nucleus.zip
```

------
#### [ Windows Command Prompt (CMD) ]

```
curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip > aws.greengrass.nucleus.zip
```

------
#### [ PowerShell ]

```
iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip -OutFile aws.greengrass.nucleus.zip
```

------

Tempatkan file `aws.greengrass.nucleus.zip` yang sudah diunduh di folder `<device-tester-extract-location>/products/`.

**catatan**  
Jangan menempatkan beberapa file dalam direktori ini untuk sistem operasi dan arsitektur yang sama. 

## Buat dan konfigurasikan Akun AWS
<a name="config-aws-account-for-idt"></a>

Sebelum Anda dapat menggunakan AWS IoT Device Tester untuk AWS IoT Greengrass V2, Anda harus melakukan langkah-langkah berikut:

1. [Mengatur sebuah Akun AWS.](#create-aws-account-for-idt) Jika Anda sudah memiliki Akun AWS, lewati ke langkah 2.

1. [Konfigurasikan izin untuk IDT.](#configure-idt-permissions)

Izin akun ini memungkinkan IDT untuk mengakses AWS layanan dan membuat AWS sumber daya, seperti AWS IoT hal-hal dan AWS IoT Greengrass komponen, atas nama Anda.

<a name="idt-aws-credentials"></a>Untuk membuat sumber daya ini, IDT untuk AWS IoT Greengrass V2 menggunakan AWS kredensil yang dikonfigurasi dalam `config.json` file untuk melakukan panggilan API atas nama Anda. Sumber daya ini disediakan pada berbagai waktu selama tes.

**catatan**  
Meskipun sebagian besar pengujian memenuhi syarat untuk [Tingkat Gratis AWS](https://aws.amazon.com/free), Anda harus menyediakan kartu kredit saat mendaftar Akun AWS. Untuk informasi selengkapnya, lihat [Mengapa saya memerlukan metode pembayaran jika akun saya dilindungi oleh Tingkat Gratis?](https://aws.amazon.com/premiumsupport/knowledge-center/free-tier-payment-method/).

### Langkah 1: Siapkan Akun AWS
<a name="create-aws-account-for-idt"></a>

Pada langkah ini, buat dan konfigurasikan Akun AWS. Jika Anda sudah memiliki akun Akun AWS, lewati ke [Langkah 2: Konfigurasikan izin untuk IDT](#configure-idt-permissions).

Jika Anda tidak memiliki Akun AWS, selesaikan langkah-langkah berikut untuk membuatnya.

**Untuk mendaftar untuk Akun AWS**

1. Buka [https://portal.aws.amazon.com/billing/pendaftaran.](https://portal.aws.amazon.com/billing/signup)

1. Ikuti petunjuk online.

   Bagian dari prosedur pendaftaran melibatkan menerima panggilan telepon atau pesan teks dan memasukkan kode verifikasi pada keypad telepon.

   Saat Anda mendaftar untuk sebuah Akun AWS, sebuah *Pengguna root akun AWS*dibuat. Pengguna root memiliki akses ke semua Layanan AWS dan sumber daya di akun. Sebagai praktik keamanan terbaik, tetapkan akses administratif ke pengguna, dan gunakan hanya pengguna root untuk melakukan [tugas yang memerlukan akses pengguna root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

Untuk membuat pengguna administrator, pilih salah satu opsi berikut.


****  

| Pilih salah satu cara untuk mengelola administrator Anda | Untuk | Oleh | Anda juga bisa | 
| --- | --- | --- | --- | 
| Di Pusat Identitas IAM (Direkomendasikan) | Gunakan kredensi jangka pendek untuk mengakses. AWSIni sejalan dengan praktik terbaik keamanan. Untuk informasi tentang praktik terbaik, lihat [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) di *Panduan Pengguna IAM*. | Mengikuti petunjuk di [Memulai](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html) di Panduan AWS IAM Identity Center Pengguna. | Konfigurasikan akses terprogram dengan [Mengonfigurasi AWS CLI yang akan digunakan AWS IAM Identity Center](https://docs.aws.amazon.com//cli/latest/userguide/cli-configure-sso.html) dalam AWS Command Line Interface Panduan Pengguna. | 
| Di IAM (Tidak direkomendasikan) | Gunakan kredensi jangka panjang untuk mengakses. AWS | Mengikuti petunjuk di [Buat pengguna IAM untuk akses darurat](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started-emergency-iam-user.html) di Panduan Pengguna IAM. | Konfigurasikan akses terprogram dengan [Mengelola kunci akses untuk pengguna IAM di Panduan Pengguna](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html) IAM. | 

### Langkah 2: Konfigurasikan izin untuk IDT
<a name="configure-idt-permissions"></a>

Pada langkah ini, konfigurasikan izin yang digunakan IDT untuk AWS IoT Greengrass V2 untuk menjalankan pengujian dan mengumpulkan data penggunaan IDT. Anda dapat menggunakan[Konsol Manajemen AWS](#configure-idt-permissions-console) atau [AWS Command Line Interface (AWS CLI)](#configure-idt-permissions-cli) untuk membuat kebijakan IAM dan pengguna tes untuk IDT, dan kemudian melampirkan kebijakan untuk pengguna. Jika Anda telah membuat pengguna tes untuk IDT, lewati ke [Konfigurasikan perangkat Anda untuk menjalankan tes IDT](device-config-setup.md).

#### Untuk mengonfigurasi izin untuk IDT (konsol)
<a name="configure-idt-permissions-console"></a>

1. Masuklah ke [konsol IAM](https://console.aws.amazon.com/iam).

1. Buat kebijakan yang dikelola pelanggan yang memberikan izin untuk membuat peran dengan izin tertentu. 

   1. Pada panel navigasi, pilih **Kebijakan**, lalu pilih **Buat kebijakan**.

   1. Jika Anda tidak menggunakan PreInstalled, pada tab **JSON**, ganti konten placeholder dengan kebijakan berikut. Jika Anda menggunakan PreInstalled, lanjutkan ke langkah berikut.

      ```
      <a name="customer-managed-policy-cli"></a>{
          "Version":"2012-10-17",		 	 	 
          "Statement":[
          {
            "Sid":"passRoleForResources",
            "Effect":"Allow",
            "Action":"iam:PassRole",
            "Resource":"arn:aws:iam::*:role/idt-*",
            "Condition":{
              "StringEquals":{
                "iam:PassedToService":[
                  "iot.amazonaws.com",
                  "lambda.amazonaws.com",
                  "greengrass.amazonaws.com"
                ]
              }
            }
          },
          {
            "Sid":"lambdaResources",
            "Effect":"Allow",
            "Action":[
              "lambda:CreateFunction",
              "lambda:PublishVersion",
              "lambda:DeleteFunction",
              "lambda:GetFunction"
            ],
            "Resource":[
              "arn:aws:lambda:*:*:function:idt-*"
            ]
          },
          {
            "Sid":"iotResources",
            "Effect":"Allow",
            "Action":[
              "iot:CreateThing",
              "iot:DeleteThing",
              "iot:DescribeThing",
              "iot:CreateThingGroup",
              "iot:DeleteThingGroup",
              "iot:DescribeThingGroup",
              "iot:AddThingToThingGroup",
              "iot:RemoveThingFromThingGroup",
              "iot:AttachThingPrincipal",
              "iot:DetachThingPrincipal",
              "iot:UpdateCertificate",
              "iot:DeleteCertificate",
              "iot:CreatePolicy",
              "iot:AttachPolicy",
              "iot:DetachPolicy",
              "iot:DeletePolicy",
              "iot:GetPolicy",
              "iot:Publish",
              "iot:TagResource",
              "iot:ListThingPrincipals",
              "iot:ListAttachedPolicies",
              "iot:ListTargetsForPolicy",
              "iot:ListThingGroupsForThing",
              "iot:ListThingsInThingGroup",
              "iot:CreateJob",
              "iot:DescribeJob",
              "iot:DescribeJobExecution",
              "iot:CancelJob"
            ],
            "Resource":[
              "arn:aws:iot:*:*:thing/idt-*",
              "arn:aws:iot:*:*:thinggroup/idt-*",
              "arn:aws:iot:*:*:policy/idt-*",
              "arn:aws:iot:*:*:cert/*",
              "arn:aws:iot:*:*:topic/idt-*",
              "arn:aws:iot:*:*:job/*"
            ]
          },
          {
            "Sid":"s3Resources",
            "Effect":"Allow",
            "Action":[
              "s3:GetObject",
              "s3:PutObject",
              "s3:DeleteObjectVersion",
              "s3:DeleteObject",
              "s3:CreateBucket",
              "s3:ListBucket",
              "s3:ListBucketVersions",
              "s3:DeleteBucket",
              "s3:PutObjectTagging",
              "s3:PutBucketTagging"
            ],
            "Resource":"arn:aws:s3::*:idt-*"
          },
          {
            "Sid":"roleAliasResources",
            "Effect":"Allow",
            "Action":[
              "iot:CreateRoleAlias",
              "iot:DescribeRoleAlias",
              "iot:DeleteRoleAlias",
              "iot:TagResource",
              "iam:GetRole"
            ],
            "Resource":[
              "arn:aws:iot:*:*:rolealias/idt-*",
              "arn:aws:iam::*:role/idt-*"
            ]
          },
          {
            "Sid":"idtExecuteAndCollectMetrics",
            "Effect":"Allow",
            "Action":[
              "iot-device-tester:SendMetrics",
              "iot-device-tester:SupportedVersion",
              "iot-device-tester:LatestIdt",
              "iot-device-tester:CheckVersion",
              "iot-device-tester:DownloadTestSuite"
            ],
            "Resource":"*"
          },
          {
            "Sid":"genericResources",
            "Effect":"Allow",
            "Action":[
              "greengrass:*",
              "iot:GetThingShadow",
              "iot:UpdateThingShadow",
              "iot:ListThings",
              "iot:DescribeEndpoint",
              "iot:CreateKeysAndCertificate"
            ],
            "Resource":"*"
          },
          {
            "Sid":"iamResourcesUpdate",
            "Effect":"Allow",
            "Action":[
              "iam:CreateRole",
              "iam:DeleteRole",
              "iam:CreatePolicy",
              "iam:DeletePolicy",
              "iam:AttachRolePolicy",
              "iam:DetachRolePolicy",
              "iam:TagRole",
              "iam:TagPolicy",
              "iam:GetPolicy",
              "iam:ListAttachedRolePolicies",
              "iam:ListEntitiesForPolicy"
            ],
            "Resource":[
              "arn:aws:iam::*:role/idt-*",
              "arn:aws:iam::*:policy/idt-*"
            ]
          }
        ]
      }
      ```

   1. Jika Anda menggunakan PreInstalled, pada tab **JSON**, ganti konten placeholder dengan kebijakan berikut. Pastikan Anda:
      + Ganti *thingName* dan *thingGroup* dalam `iotResources` pernyataan dengan nama benda dan grup benda yang dibuat selama instalasi Greengrass di perangkat Anda yang sedang diuji (DUT) untuk menambahkan izin.
      + Ganti *passRole* dan *roleAlias* dalam `roleAliasResources` pernyataan dan `passRoleForResources` pernyataan dengan peran yang dibuat selama instalasi Greengrass di DUT Anda.

      ```
      <a name="customer-managed-policy-cli"></a>{
          "Version":"2012-10-17",		 	 	 
          "Statement":[
          {
            "Sid":"passRoleForResources",
            "Effect":"Allow",
            "Action":"iam:PassRole",
            "Resource":"arn:aws:iam::*:role/passRole",
            "Condition":{
              "StringEquals":{
                "iam:PassedToService":[
                  "iot.amazonaws.com",
                  "lambda.amazonaws.com",
                  "greengrass.amazonaws.com"
                ]
              }
            }
          },
          {
            "Sid":"lambdaResources",
            "Effect":"Allow",
            "Action":[
              "lambda:CreateFunction",
              "lambda:PublishVersion",
              "lambda:DeleteFunction",
              "lambda:GetFunction"
            ],
            "Resource":[
              "arn:aws:lambda:*:*:function:idt-*"
            ]
          },
          {
            "Sid":"iotResources",
            "Effect":"Allow",
            "Action":[
              "iot:CreateThing",
              "iot:DeleteThing",
              "iot:DescribeThing",
              "iot:CreateThingGroup",
              "iot:DeleteThingGroup",
              "iot:DescribeThingGroup",
              "iot:AddThingToThingGroup",
              "iot:RemoveThingFromThingGroup",
              "iot:AttachThingPrincipal",
              "iot:DetachThingPrincipal",
              "iot:UpdateCertificate",
              "iot:DeleteCertificate",
              "iot:CreatePolicy",
              "iot:AttachPolicy",
              "iot:DetachPolicy",
              "iot:DeletePolicy",
              "iot:GetPolicy",
              "iot:Publish",
              "iot:TagResource",
              "iot:ListThingPrincipals",
              "iot:ListAttachedPolicies",
              "iot:ListTargetsForPolicy",
              "iot:ListThingGroupsForThing",
              "iot:ListThingsInThingGroup",
              "iot:CreateJob",
              "iot:DescribeJob",
              "iot:DescribeJobExecution",
              "iot:CancelJob"
            ],
            "Resource":[
              "arn:aws:iot:*:*:thing/thingName",
              "arn:aws:iot:*:*:thinggroup/thingGroup",
              "arn:aws:iot:*:*:policy/idt-*",
              "arn:aws:iot:*:*:cert/*",
              "arn:aws:iot:*:*:topic/idt-*",
              "arn:aws:iot:*:*:job/*"
            ]
          },
          {
            "Sid":"s3Resources",
            "Effect":"Allow",
            "Action":[
              "s3:GetObject",
              "s3:PutObject",
              "s3:DeleteObjectVersion",
              "s3:DeleteObject",
              "s3:CreateBucket",
              "s3:ListBucket",
              "s3:ListBucketVersions",
              "s3:DeleteBucket",
              "s3:PutObjectTagging",
              "s3:PutBucketTagging"
            ],
            "Resource":"arn:aws:s3::*:idt-*"
          },
          {
            "Sid":"roleAliasResources",
            "Effect":"Allow",
            "Action":[
              "iot:CreateRoleAlias",
              "iot:DescribeRoleAlias",
              "iot:DeleteRoleAlias",
              "iot:TagResource",
              "iam:GetRole"
            ],
            "Resource":[
              "arn:aws:iot:*:*:rolealias/roleAlias",
              "arn:aws:iam::*:role/idt-*"
            ]
          },
          {
            "Sid":"idtExecuteAndCollectMetrics",
            "Effect":"Allow",
            "Action":[
              "iot-device-tester:SendMetrics",
              "iot-device-tester:SupportedVersion",
              "iot-device-tester:LatestIdt",
              "iot-device-tester:CheckVersion",
              "iot-device-tester:DownloadTestSuite"
            ],
            "Resource":"*"
          },
          {
            "Sid":"genericResources",
            "Effect":"Allow",
            "Action":[
              "greengrass:*",
              "iot:GetThingShadow",
              "iot:UpdateThingShadow",
              "iot:ListThings",
              "iot:DescribeEndpoint",
              "iot:CreateKeysAndCertificate"
            ],
            "Resource":"*"
          },
          {
            "Sid":"iamResourcesUpdate",
            "Effect":"Allow",
            "Action":[
              "iam:CreateRole",
              "iam:DeleteRole",
              "iam:CreatePolicy",
              "iam:DeletePolicy",
              "iam:AttachRolePolicy",
              "iam:DetachRolePolicy",
              "iam:TagRole",
              "iam:TagPolicy",
              "iam:GetPolicy",
              "iam:ListAttachedRolePolicies",
              "iam:ListEntitiesForPolicy"
            ],
            "Resource":[
              "arn:aws:iam::*:role/idt-*",
              "arn:aws:iam::*:policy/idt-*"
            ]
          }
        ]
      }
      ```
**catatan**  
Jika Anda ingin menggunakan peran [IAM kustom sebagai peran pertukaran token](set-config.md#custom-token-exchange-role-idt) untuk perangkat yang sedang diuji, pastikan Anda memperbarui `roleAliasResources` pernyataan dan `passRoleForResources` pernyataan dalam kebijakan untuk mengizinkan sumber daya peran IAM kustom Anda.

   1. Pilih **Tinjau kebijakan**.

   1. Untuk **Nama**, masukkan **IDTGreengrassIAMPermissions**. Di bawah **Ringkasan**, tinjau izin yang diberikan oleh kebijakan Anda.

   1. Pilih **Buat kebijakan**.

1. Buat pengguna IAM dan lampirkan izin yang diperlukan oleh IDT untuk AWS IoT Greengrass.

   1. Buat pengguna IAM. Ikuti langkah 1 hingga 5 di [Membuat pengguna IAM (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) di *Panduan Pengguna IAM*.

   1. Lampirkan izin untuk pengguna IAM Anda:

      1. Pada halaman **Atur izin**, pilih **Lampirkan kebijakan yang ada ke pengguna secara langsung**.

      1. Cari **IDTGreengrassIAMPermissions**kebijakan yang Anda buat di langkah sebelumnya. Pilih kotak centang.

   1. Pilih **Selanjutnya: Menandai**.

   1. Pilih **Berikutnya: Tinjauan** untuk melihat ringkasan pilihan Anda.

   1. Pilih **Buat pengguna**.

   1. Untuk melihat kunci akses pengguna (kunci akses IDs dan kunci akses rahasia), pilih **Tampilkan** di sebelah kata sandi dan kunci akses. Untuk menyimpan kunci akses, pilih **Download.csv** lalu simpan file ke lokasi yang aman. Anda menggunakan informasi ini nanti untuk file kredensial AWS .

1. <a name="aws-account-config-next-steps"></a>Langkah berikutnya: Konfigurasikan [perangkat fisik](device-config-setup.md).

#### Untuk mengonfigurasi izin untuk IDT (AWS CLI)
<a name="configure-idt-permissions-cli"></a>

1. Di komputer Anda, instal dan konfigurasikan AWS CLI jika belum diinstal. Ikuti langkah-langkah di [Menginstal AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) di *Panduan Pengguna AWS Command Line Interface *.
**catatan**  
 AWS CLI Ini adalah alat open source yang dapat Anda gunakan untuk berinteraksi dengan AWS layanan dari shell baris perintah Anda.

1. Buat kebijakan yang dikelola pelanggan yang memberikan izin untuk mengelola IDT dan peran AWS IoT Greengrass .

   1. Jika Anda tidak menggunakan PreInstalled, buka editor teks dan simpan konten kebijakan berikut dalam file JSON. Jika Anda menggunakan PreInstalled, lanjutkan ke langkah berikut.

      ```
      <a name="customer-managed-policy-cli"></a>{
          "Version":"2012-10-17",		 	 	 
          "Statement":[
          {
            "Sid":"passRoleForResources",
            "Effect":"Allow",
            "Action":"iam:PassRole",
            "Resource":"arn:aws:iam::*:role/idt-*",
            "Condition":{
              "StringEquals":{
                "iam:PassedToService":[
                  "iot.amazonaws.com",
                  "lambda.amazonaws.com",
                  "greengrass.amazonaws.com"
                ]
              }
            }
          },
          {
            "Sid":"lambdaResources",
            "Effect":"Allow",
            "Action":[
              "lambda:CreateFunction",
              "lambda:PublishVersion",
              "lambda:DeleteFunction",
              "lambda:GetFunction"
            ],
            "Resource":[
              "arn:aws:lambda:*:*:function:idt-*"
            ]
          },
          {
            "Sid":"iotResources",
            "Effect":"Allow",
            "Action":[
              "iot:CreateThing",
              "iot:DeleteThing",
              "iot:DescribeThing",
              "iot:CreateThingGroup",
              "iot:DeleteThingGroup",
              "iot:DescribeThingGroup",
              "iot:AddThingToThingGroup",
              "iot:RemoveThingFromThingGroup",
              "iot:AttachThingPrincipal",
              "iot:DetachThingPrincipal",
              "iot:UpdateCertificate",
              "iot:DeleteCertificate",
              "iot:CreatePolicy",
              "iot:AttachPolicy",
              "iot:DetachPolicy",
              "iot:DeletePolicy",
              "iot:GetPolicy",
              "iot:Publish",
              "iot:TagResource",
              "iot:ListThingPrincipals",
              "iot:ListAttachedPolicies",
              "iot:ListTargetsForPolicy",
              "iot:ListThingGroupsForThing",
              "iot:ListThingsInThingGroup",
              "iot:CreateJob",
              "iot:DescribeJob",
              "iot:DescribeJobExecution",
              "iot:CancelJob"
            ],
            "Resource":[
              "arn:aws:iot:*:*:thing/idt-*",
              "arn:aws:iot:*:*:thinggroup/idt-*",
              "arn:aws:iot:*:*:policy/idt-*",
              "arn:aws:iot:*:*:cert/*",
              "arn:aws:iot:*:*:topic/idt-*",
              "arn:aws:iot:*:*:job/*"
            ]
          },
          {
            "Sid":"s3Resources",
            "Effect":"Allow",
            "Action":[
              "s3:GetObject",
              "s3:PutObject",
              "s3:DeleteObjectVersion",
              "s3:DeleteObject",
              "s3:CreateBucket",
              "s3:ListBucket",
              "s3:ListBucketVersions",
              "s3:DeleteBucket",
              "s3:PutObjectTagging",
              "s3:PutBucketTagging"
            ],
            "Resource":"arn:aws:s3::*:idt-*"
          },
          {
            "Sid":"roleAliasResources",
            "Effect":"Allow",
            "Action":[
              "iot:CreateRoleAlias",
              "iot:DescribeRoleAlias",
              "iot:DeleteRoleAlias",
              "iot:TagResource",
              "iam:GetRole"
            ],
            "Resource":[
              "arn:aws:iot:*:*:rolealias/idt-*",
              "arn:aws:iam::*:role/idt-*"
            ]
          },
          {
            "Sid":"idtExecuteAndCollectMetrics",
            "Effect":"Allow",
            "Action":[
              "iot-device-tester:SendMetrics",
              "iot-device-tester:SupportedVersion",
              "iot-device-tester:LatestIdt",
              "iot-device-tester:CheckVersion",
              "iot-device-tester:DownloadTestSuite"
            ],
            "Resource":"*"
          },
          {
            "Sid":"genericResources",
            "Effect":"Allow",
            "Action":[
              "greengrass:*",
              "iot:GetThingShadow",
              "iot:UpdateThingShadow",
              "iot:ListThings",
              "iot:DescribeEndpoint",
              "iot:CreateKeysAndCertificate"
            ],
            "Resource":"*"
          },
          {
            "Sid":"iamResourcesUpdate",
            "Effect":"Allow",
            "Action":[
              "iam:CreateRole",
              "iam:DeleteRole",
              "iam:CreatePolicy",
              "iam:DeletePolicy",
              "iam:AttachRolePolicy",
              "iam:DetachRolePolicy",
              "iam:TagRole",
              "iam:TagPolicy",
              "iam:GetPolicy",
              "iam:ListAttachedRolePolicies",
              "iam:ListEntitiesForPolicy"
            ],
            "Resource":[
              "arn:aws:iam::*:role/idt-*",
              "arn:aws:iam::*:policy/idt-*"
            ]
          }
        ]
      }
      ```

   1. Jika Anda menggunakan PreInstalled, buka editor teks dan simpan konten kebijakan berikut dalam file JSON. Pastikan Anda:
      + Ganti *thingName* dan *thingGroup* dalam `iotResources` pernyataan yang dibuat selama instalasi Greengrass di perangkat Anda yang sedang diuji (DUT) untuk menambahkan izin.
      + Ganti *passRole* dan *roleAlias* dalam `roleAliasResources` pernyataan dan `passRoleForResources` pernyataan dengan peran yang dibuat selama instalasi Greengrass di DUT Anda.

      ```
      <a name="customer-managed-policy-cli"></a>{
          "Version":"2012-10-17",		 	 	 
          "Statement":[
          {
            "Sid":"passRoleForResources",
            "Effect":"Allow",
            "Action":"iam:PassRole",
            "Resource":"arn:aws:iam::*:role/passRole",
            "Condition":{
              "StringEquals":{
                "iam:PassedToService":[
                  "iot.amazonaws.com",
                  "lambda.amazonaws.com",
                  "greengrass.amazonaws.com"
                ]
              }
            }
          },
          {
            "Sid":"lambdaResources",
            "Effect":"Allow",
            "Action":[
              "lambda:CreateFunction",
              "lambda:PublishVersion",
              "lambda:DeleteFunction",
              "lambda:GetFunction"
            ],
            "Resource":[
              "arn:aws:lambda:*:*:function:idt-*"
            ]
          },
          {
            "Sid":"iotResources",
            "Effect":"Allow",
            "Action":[
              "iot:CreateThing",
              "iot:DeleteThing",
              "iot:DescribeThing",
              "iot:CreateThingGroup",
              "iot:DeleteThingGroup",
              "iot:DescribeThingGroup",
              "iot:AddThingToThingGroup",
              "iot:RemoveThingFromThingGroup",
              "iot:AttachThingPrincipal",
              "iot:DetachThingPrincipal",
              "iot:UpdateCertificate",
              "iot:DeleteCertificate",
              "iot:CreatePolicy",
              "iot:AttachPolicy",
              "iot:DetachPolicy",
              "iot:DeletePolicy",
              "iot:GetPolicy",
              "iot:Publish",
              "iot:TagResource",
              "iot:ListThingPrincipals",
              "iot:ListAttachedPolicies",
              "iot:ListTargetsForPolicy",
              "iot:ListThingGroupsForThing",
              "iot:ListThingsInThingGroup",
              "iot:CreateJob",
              "iot:DescribeJob",
              "iot:DescribeJobExecution",
              "iot:CancelJob"
            ],
            "Resource":[
              "arn:aws:iot:*:*:thing/thingName",
              "arn:aws:iot:*:*:thinggroup/thingGroup",
              "arn:aws:iot:*:*:policy/idt-*",
              "arn:aws:iot:*:*:cert/*",
              "arn:aws:iot:*:*:topic/idt-*",
              "arn:aws:iot:*:*:job/*"
            ]
          },
          {
            "Sid":"s3Resources",
            "Effect":"Allow",
            "Action":[
              "s3:GetObject",
              "s3:PutObject",
              "s3:DeleteObjectVersion",
              "s3:DeleteObject",
              "s3:CreateBucket",
              "s3:ListBucket",
              "s3:ListBucketVersions",
              "s3:DeleteBucket",
              "s3:PutObjectTagging",
              "s3:PutBucketTagging"
            ],
            "Resource":"arn:aws:s3::*:idt-*"
          },
          {
            "Sid":"roleAliasResources",
            "Effect":"Allow",
            "Action":[
              "iot:CreateRoleAlias",
              "iot:DescribeRoleAlias",
              "iot:DeleteRoleAlias",
              "iot:TagResource",
              "iam:GetRole"
            ],
            "Resource":[
              "arn:aws:iot:*:*:rolealias/roleAlias",
              "arn:aws:iam::*:role/idt-*"
            ]
          },
          {
            "Sid":"idtExecuteAndCollectMetrics",
            "Effect":"Allow",
            "Action":[
              "iot-device-tester:SendMetrics",
              "iot-device-tester:SupportedVersion",
              "iot-device-tester:LatestIdt",
              "iot-device-tester:CheckVersion",
              "iot-device-tester:DownloadTestSuite"
            ],
            "Resource":"*"
          },
          {
            "Sid":"genericResources",
            "Effect":"Allow",
            "Action":[
              "greengrass:*",
              "iot:GetThingShadow",
              "iot:UpdateThingShadow",
              "iot:ListThings",
              "iot:DescribeEndpoint",
              "iot:CreateKeysAndCertificate"
            ],
            "Resource":"*"
          },
          {
            "Sid":"iamResourcesUpdate",
            "Effect":"Allow",
            "Action":[
              "iam:CreateRole",
              "iam:DeleteRole",
              "iam:CreatePolicy",
              "iam:DeletePolicy",
              "iam:AttachRolePolicy",
              "iam:DetachRolePolicy",
              "iam:TagRole",
              "iam:TagPolicy",
              "iam:GetPolicy",
              "iam:ListAttachedRolePolicies",
              "iam:ListEntitiesForPolicy"
            ],
            "Resource":[
              "arn:aws:iam::*:role/idt-*",
              "arn:aws:iam::*:policy/idt-*"
            ]
          }
        ]
      }
      ```
**catatan**  
Jika Anda ingin menggunakan peran [IAM kustom sebagai peran pertukaran token](set-config.md#custom-token-exchange-role-idt) untuk perangkat yang sedang diuji, pastikan Anda memperbarui `roleAliasResources` pernyataan dan `passRoleForResources` pernyataan dalam kebijakan untuk mengizinkan sumber daya peran IAM kustom Anda.

   1. Jalankan perintah berikut untuk membuat kebijakan terkelola pelanggan bernama `IDTGreengrassIAMPermissions`. Ganti `policy.json` dengan path lengkap ke file JSON yang Anda buat di langkah sebelumnya. 

      ```
      aws iam create-policy --policy-name IDTGreengrassIAMPermissions --policy-document file://policy.json
      ```

1. Buat pengguna IAM dan lampirkan izin yang diperlukan oleh IDT untuk AWS IoT Greengrass.

   1. Buat pengguna IAM. Dalam contoh pengaturan ini, pengguna diberi nama `IDTGreengrassUser`.

      ```
      aws iam create-user --user-name IDTGreengrassUser
      ```

   1. Lampirkan kebijakan `IDTGreengrassIAMPermissions` yang Anda buat pada langkah 2 untuk pengguna IAM Anda. Ganti *<account-id>* dalam perintah dengan ID Anda Akun AWS.

      ```
      aws iam attach-user-policy --user-name IDTGreengrassUser --policy-arn arn:aws:iam::<account-id>:policy/IDTGreengrassIAMPermissions
      ```

1. Buat secret access key untuk pengguna tersebut.

   ```
   aws iam create-access-key --user-name IDTGreengrassUser
   ```

   Simpan output tersebut di lokasi yang aman. Anda menggunakan informasi ini nanti untuk mengonfigurasi file AWS kredensi Anda.

1. <a name="aws-account-config-next-steps"></a>Langkah berikutnya: Konfigurasikan [perangkat fisik](device-config-setup.md).

### AWS IoT Device Tester izin
<a name="gg-idt-managed-policy"></a>

Kebijakan berikut menjelaskan AWS IoT Device Tester izin.

AWS IoT Device Tester memerlukan izin ini untuk memeriksa versi dan fitur pembaruan otomatis.
+ `iot-device-tester:SupportedVersion`

  Memberikan AWS IoT Device Tester izin untuk mengambil daftar produk yang didukung, rangkaian pengujian, dan versi IDT.
+ `iot-device-tester:LatestIdt`

  Memberikan AWS IoT Device Tester izin untuk mengambil versi IDT terbaru yang tersedia untuk diunduh.
+ `iot-device-tester:CheckVersion`

  Memberikan AWS IoT Device Tester izin untuk memeriksa kompatibilitas versi untuk IDT, suite pengujian, dan produk.
+ `iot-device-tester:DownloadTestSuite`

  Memberikan AWS IoT Device Tester izin untuk mengunduh pembaruan suite pengujian.

AWS IoT Device Tester juga menggunakan izin berikut untuk pelaporan metrik opsional:
+ `iot-device-tester:SendMetrics`

  Memberikan izin AWS untuk mengumpulkan metrik tentang penggunaan AWS IoT Device Tester internal. Jika izin ini dihilangkan, metrik ini tidak akan dikumpulkan.

# Konfigurasikan perangkat Anda untuk menjalankan tes IDT
<a name="device-config-setup"></a>

Untuk mengaktifkan IDT untuk menjalankan tes untuk kualifikasi perangkat, Anda harus mengonfigurasi komputer host Anda untuk mengakses perangkat Anda, dan mengonfigurasi izin pengguna pada perangkat Anda.

## Instal Java pada komputer host
<a name="install-java-for-idt"></a>

Dimulai dengan IDT v4.2.0, tes kualifikasi opsional untuk AWS IoT Greengrass memerlukan Java untuk dijalankan.

Anda dapat menggunakan Java versi 8 atau yang lebih besar. Kami menyarankan Anda menggunakan versi dukungan jangka panjang [Amazon Corretto](https://aws.amazon.com/corretto/) [atau](https://openjdk.java.net/) OpenJDK. Versi 8 atau lebih tinggi diperlukan..

## Konfigurasikan komputer host Anda untuk mengakses perangkat yang sedang diuji
<a name="configure-host"></a>

IDT berjalan pada komputer host Anda dan harus dapat menggunakan SSH untuk terhubung ke perangkat Anda. Terdapat dua pilihan untuk memungkinkan IDT untuk mendapatkan akses SSH ke perangkat Anda yang diuji:

1. Ikuti petunjuk di sini untuk membuat pasangan kunci SSH dan otorisasi kunci Anda untuk masuk ke perangkat Anda yang sedang diuji tanpa menyebutkan kata sandi.

1. Berikan nama pengguna dan kata sandi untuk setiap perangkat di file `device.json`. Untuk informasi selengkapnya, lihat [Konfigurasikan device.json](set-config.md#device-config).

Anda dapat menggunakan implementasi SSL apa pun untuk membuat kunci SSH. Petunjuk berikut menunjukkan cara menggunakan [SSH-KEYGEN](https://www.ssh.com/ssh/keygen/) atau [Pu TTYgen](https://www.ssh.com/ssh/putty/windows/puttygen) (untuk Windows). Jika Anda menggunakan implementasi SSL lain, lihat dokumentasi untuk implementasi tersebut.

IDT menggunakan kunci SSH untuk diautentikasi dengan perangkat Anda yang sedang diuji. 

**Untuk membuat kunci SSH dengan SSH-KEYGEN**

1. Buat kunci SSH

   Anda dapat menggunakan perintah **ssh-keygen** Open SSH untuk membuat pasangan kunci SSH. Jika Anda sudah memiliki pasanagn kunci SSH pada komputer host Anda, adalah praktik terbaik untuk membuat pasangan kunci SSH khusus untuk IDT. Dengan cara ini, setelah Anda menyelesaikan tes, komputer host Anda tidak dapat lagi terhubung ke perangkat Anda tanpa memasukkan kata sandi. Hal ini juga memungkinkan Anda membatasi akses ke perangkat jarak jauh hanya untuk yang membutuhkannya.
**catatan**  
Windows tidak memiliki klien SSH yang diinstal. Untuk informasi tentang cara menginstal klien SSH di Windows, lihat [Unduh Perangkat Lunak Klien SSH](https://www.ssh.com/ssh/#sec-Download-client-software).

   Perintah **ssh-keygen** meminta Anda untuk memberikan nama dan path untuk menyimpan pasangan kunci tersebut. Secara default, file pasangan kunci diberi nama `id_rsa` (kunci privat) dan `id_rsa.pub` (kunci publik). Di macOS dan Linux, lokasi default file ini adalah `~/.ssh/`. Di Windows, lokasi default untuk file ini adalah `C:\Users\<user-name>\.ssh`.

   Saat diminta, masukkan frase kunci untuk melindungi kunci SSH Anda. Untuk informasi lebih lanjut, lihat [Buat Kunci SSH Baru](https://www.ssh.com/ssh/keygen/).

1. Tambahkan kunci SSH yang diotorisasi pada perangkat Anda yang sedang diuji.

   IDT harus menggunakan kunci privat SSH Anda untuk masuk ke perangkat Anda yang sedang diuji. Untuk mengotorisasi kunci privat SSH Anda untuk masuk ke perangkat Anda yang sedang diuji, gunakan perintah **ssh-copy-id** dari komputer host Anda. Perintah ini menambahkan kunci publik Anda ke dalam file `~/.ssh/authorized_keys` pada perangkat Anda yang sedang diuji. Contoh:

   **\$1 ssh-copy-id *<remote-ssh-user>*@*<remote-device-ip>***

   Di *remote-ssh-user* mana nama pengguna yang digunakan untuk masuk ke perangkat Anda yang sedang diuji dan *remote-device-ip* merupakan alamat IP perangkat yang diuji untuk menjalankan pengujian. Contoh:

   **ssh-copy-id pi@192.168.1.5**

   Saat diminta, masukkan kata sandi untuk nama pengguna yang Anda tentukan di perintah **ssh-copy-id**.

   **ssh-copy-id** mengasumsikan kunci publik tersebut bernama `id_rsa.pub` dan disimpan di lokasi default (pada macOS dan Linux, `~/.ssh/` dan pada Windows, `C:\Users\<user-name>\.ssh`). Jika Anda memberikan kunci publik nama yang berbeda atau menyimpannya di lokasi yang berbeda, Anda harus menentukan path yang memenuhi syarat untuk kunci publik SSH Anda dengan menggunakan **-i** untuk **ssh-copy-id** (misalnya, **ssh-copy-id -i \$1/my/path/myKey.pub**). Untuk informasi lebih lanjut tentang cara membuat kunci SSH dan menyalin kunci publik, lihat [SSH-COPY-ID](https://www.ssh.com/ssh/copy-id).

**Untuk membuat kunci SSH menggunakan Pu TTYgen (hanya Windows)**

1. Pastikan Anda mempunyai server dan klien OpenSSH yang terinstal pada perangkat Anda yang sedang diuji. Untuk informasi selengkapnya, lihat [OpenSSH](https://www.openssh.com/).

1. Instal [Pu TTYgen](https://www.puttygen.com/) pada perangkat Anda yang sedang diuji.

1. Buka PuTTYgen.

1. Pilih **Buat** dan gerakkan kursor mouse Anda di dalam kotak untuk menghasilkan kunci privat.

1. Dari menu **Konversi**, pilih **Ekspor kunci OpenSSH**, dan simpan kunci privat dengan ekstensi file `.pem`.

1. Tambahkan kunci publik ke file `/home/<user>/.ssh/authorized_keys` pada perangkat yang sedang diuji.

   1. Salin teks kunci publik dari TTYgen jendela Pu.

   1. Gunakan PuTTY untuk membuat sesi pada perangkat Anda yang sedang diuji.

      1. Dari command prompt atau jendela Windows Powershell, jalankan perintah berikut:

          **C:/*<path-to-putty>*/putty.exe -ssh *<user>*@*<dut-ip-address>* ** 

      1. Saat diminta, masukkan kata sandi perangkat Anda.

      1. Gunakan vi atau editor teks lain untuk menambahkan kunci publik ke file `/home/<user>/.ssh/authorized_keys` pada perangkat Anda yang sedang diuji.

1. Perbarui file `device.json` Anda dengan nama pengguna, alamat IP, dan path Anda ke file kunci privat yang baru saja Anda simpan di komputer host untuk setiap perangkat yang sedang diuji. Untuk informasi selengkapnya, lihat [Konfigurasikan device.json](set-config.md#device-config). Pastikan Anda memberikan path dan nama file yang lengkap untuk kunci privat dan gunakan garis miring ('/'). Misalnya, untuk path Windows `C:\DT\privatekey.pem`, gunakan `C:/DT/privatekey.pem` di file `device.json`. 

## Konfigurasikan kredensional pengguna untuk perangkat Windows
<a name="configure-windows-user-for-idt"></a>

Untuk memenuhi syarat perangkat berbasis Windows, Anda harus mengonfigurasi kredensional pengguna di LocalSystem akun pada perangkat yang sedang diuji untuk pengguna berikut: 
+ Pengguna Greengrass default (). `ggc_user`
+ Pengguna yang Anda gunakan untuk terhubung ke perangkat yang sedang diuji. Anda mengkonfigurasi pengguna ini dalam [`device.json`file](set-config.md#device-config).

Anda harus membuat setiap pengguna di LocalSystem akun pada perangkat yang sedang diuji, dan kemudian menyimpan nama pengguna dan kata sandi untuk pengguna dalam contoh Credential Manager untuk LocalSystem akun tersebut. <a name="set-up-windows-device-environment-procedure"></a>

**Untuk mengkonfigurasi pengguna di perangkat Windows**

1. Buka Windows Command Prompt (`cmd.exe`) sebagai administrator.

1. Buat pengguna di LocalSystem akun di perangkat Windows. Jalankan perintah berikut untuk setiap pengguna yang ingin Anda buat. Untuk pengguna Greengrass default, ganti dengan. *user-name* `ggc_user` Ganti *password* dengan kata sandi yang aman.

   ```
   net user /add user-name password
   ```

1. Unduh dan instal [PsExecutilitas](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) dari Microsoft pada perangkat. 

1. Gunakan PsExec utilitas untuk menyimpan nama pengguna dan kata sandi untuk pengguna default dalam contoh Credential Manager untuk LocalSystem akun tersebut. 

   Jalankan perintah berikut untuk setiap pengguna yang ingin Anda konfigurasi di Credential Manager. Untuk pengguna Greengrass default, ganti dengan. *user-name* `ggc_user` Ganti *password* dengan kata sandi pengguna yang Anda tetapkan sebelumnya.

   ```
   psexec -s cmd /c cmdkey /generic:user-name /user:user-name /pass:password
   ```

   Jika **PsExec License Agreement**terbuka, pilih **Accept**untuk menyetujui lisensi dan jalankan perintah.
**catatan**  
Pada perangkat Windows, LocalSystem akun menjalankan inti Greengrass, dan Anda harus menggunakan utilitas untuk menyimpan informasi PsExec pengguna di akun. LocalSystem Menggunakan aplikasi Credential Manager menyimpan informasi ini di akun Windows dari pengguna yang saat ini masuk, bukan LocalSystem akun.

## Konfigurasikan izin pengguna di perangkat Anda
<a name="root-access"></a>

IDT melakukan operasi pada berbagai direktori dan file dalam perangkat yang diuji. Beberapa operasi ini memerlukan izin yang ditinggikan (menggunakan **sudo**). Untuk mengotomatiskan operasi ini, IDT untuk AWS IoT Greengrass V2 harus dapat menjalankan perintah dengan sudo tanpa diminta kata sandi.

Ikuti langkah-langkah ini pada perangkat yang sedang diuji untuk mengizinkan akses sudo tanpa diminta memasukkan kata sandi. 

**catatan**  
`username` mengacu pada pengguna SSH yang digunakan oleh IDT untuk mengakses perangkat yang diuji.

**Tambahkan pengguna ke grup sudo.**

1. Pada perangkat yang sedang diuji, jalankan `sudo usermod -aG sudo <username>`.

1. Keluar, lalu masuk kembali agar perubahan diterapkan.

1. Untuk memverifikasi nama pengguna Anda telah berhasil ditambahkan, jalankan **sudo echo test**. Jika Anda tidak diminta untuk memasukkan kata sandi, pengguna Anda telah dikonfigurasi dengan benar.

1. Buka file `/etc/sudoers` dan tambahkan baris berikut ke akhir file:

   `<ssh-username> ALL=(ALL) NOPASSWD: ALL`

## Konfigurasikan peran pertukaran token kustom
<a name="configure-custom-tes-role-for-idt"></a>

Anda dapat memilih untuk menggunakan peran IAM khusus sebagai peran pertukaran token yang diasumsikan perangkat yang diuji untuk berinteraksi dengan AWS sumber daya. Untuk informasi tentang membuat peran IAM, lihat [Membuat peran IAM di Panduan](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) Pengguna *IAM*.

Anda harus memenuhi persyaratan berikut untuk memungkinkan IDT menggunakan peran IAM kustom Anda. Kami sangat menyarankan agar Anda menambahkan hanya tindakan kebijakan minimum yang diperlukan untuk peran ini.
+ File konfigurasi [userdata.json](set-config.md#custom-token-exchange-role-idt) harus diperbarui untuk mengatur parameter ke. `GreengrassV2TokenExchangeRole` `true`
+ Peran IAM kustom harus dikonfigurasi dengan kebijakan kepercayaan minimum berikut:

------
#### [ JSON ]

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement":[
        {
           "Effect":"Allow",
           "Principal":{
              "Service":[
                 "credentials.iot.amazonaws.com",
                 "lambda.amazonaws.com", 
                 "sagemaker.amazonaws.com" 
              ]
           },
           "Action":"sts:AssumeRole"
        }
     ]
  }
  ```

------
+ Peran IAM kustom harus dikonfigurasi dengan kebijakan izin minimum berikut:

------
#### [ JSON ]

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement":[
        {
           "Effect":"Allow",
           "Action":[
              "iot:DescribeCertificate",
              "logs:CreateLogGroup",
              "logs:CreateLogStream",
              "logs:PutLogEvents",
              "logs:DescribeLogStreams",
              "iot:Connect",
              "iot:Publish",
              "iot:Subscribe",
              "iot:Receive",
              "iot:ListThingPrincipals", 
              "iot:GetThingShadow",
              "iot:UpdateThingShadow",
              "s3:GetBucketLocation",
              "s3:GetObject",
              "s3:PutObject",
              "s3:AbortMultipartUpload",
              "s3:ListMultipartUploadParts"
           ],
           "Resource":"*"
        }
     ]
  }
  ```

------
+ Nama peran IAM kustom harus cocok dengan sumber daya peran IAM yang Anda tentukan dalam izin IAM untuk pengguna pengujian. Secara default, [kebijakan pengguna pengujian](dev-tst-prereqs.md#configure-idt-permissions) mengizinkan akses ke peran IAM yang memiliki `idt-` awalan dalam nama peran mereka. Jika nama peran IAM Anda tidak menggunakan awalan ini, tambahkan `arn:aws:iam::*:role/custom-iam-role-name` sumber daya ke `roleAliasResources` pernyataan dan `passRoleForResources` pernyataan dalam kebijakan pengguna pengujian Anda, seperti yang ditunjukkan dalam contoh berikut:

    
**Example `passRoleForResources` pernyataan**  

  ```
  {
     "Sid":"passRoleForResources",
     "Effect":"Allow",
     "Action":"iam:PassRole",
     "Resource":"arn:aws:iam::*:role/custom-iam-role-name",
     "Condition":{
        "StringEquals":{
           "iam:PassedToService":[
              "iot.amazonaws.com",
              "lambda.amazonaws.com",
              "greengrass.amazonaws.com"
           ]
        }
     }
  }
  ```  
**Example `roleAliasResources` pernyataan**  

  ```
  {
     "Sid":"roleAliasResources",
     "Effect":"Allow",
     "Action":[
        "iot:CreateRoleAlias",
        "iot:DescribeRoleAlias",
        "iot:DeleteRoleAlias",
        "iot:TagResource",
        "iam:GetRole"
     ],
     "Resource":[
        "arn:aws:iot:*:*:rolealias/idt-*",
        "arn:aws:iam::*:role/custom-iam-role-name"
     ]
  }
  ```

## Konfigurasikan perangkat Anda untuk menguji fitur opsional
<a name="optional-feature-config"></a>

Bagian ini menjelaskan persyaratan perangkat untuk menjalankan tes IDT untuk fitur Docker dan machine learning (ML) opsional. Fitur ML hanya didukung di IDT v4.9.3. Anda harus memastikan perangkat Anda memenuhi persyaratan ini hanya jika Anda ingin menguji fitur ini. Jika tidak, lanjutkan ke [Konfigurasikan pengaturan IDT untuk menjalankan rangkaian AWS IoT Greengrass kualifikasi](set-config.md).

**Topics**
+ [

### Persyaratan kualifikasi Docker
](#idt-config-docker-components)
+ [

### Persyaratan kualifikasi ML
](#idt-config-ml-components)
+ [

### Persyaratan kualifikasi HSM
](#idt-config-hsm-components)

### Persyaratan kualifikasi Docker
<a name="idt-config-docker-components"></a>

IDT untuk AWS IoT Greengrass V2 menyediakan tes kualifikasi Docker untuk memvalidasi bahwa perangkat Anda dapat menggunakan komponen [manajer aplikasi Docker AWS yang disediakan untuk mengunduh gambar kontainer Docker](docker-application-manager-component.md) yang dapat Anda jalankan menggunakan komponen kontainer Docker khusus. Untuk informasi selengkapnya tentang cara membuat konten dokumen kustom, lihat [Jalankan kontainer Docker](run-docker-container.md).

Untuk menjalankan tes kualifikasi Docker, perangkat Anda yang sedang diuji harus memenuhi persyaratan berikut untuk men-deploy komponen manajer aplikasi Docker.
+ <a name="docker-engine-requirement"></a>[Docker Engine](https://docs.docker.com/engine/) 1.9.1 atau yang lebih baru diinstal pada perangkat inti Greengrass. Versi 20.10 adalah versi terbaru yang diverifikasi untuk bekerja dengan perangkat lunak AWS IoT Greengrass Core. Anda harus menginstal Docker langsung pada perangkat inti sebelum Anda menyebarkan komponen yang menjalankan kontainer Docker.
+ <a name="docker-daemon-requirement"></a>Daemon Docker dimulai dan berjalan pada perangkat inti sebelum Anda men-deploy komponen ini. 
+ <a name="docker-user-permissions-requirement"></a>Pengguna sistem yang menjalankan komponen kontainer Docker harus memiliki izin root atau administrator, atau Anda harus mengonfigurasi Docker untuk menjalankannya sebagai pengguna non-root atau non-admistrator.
  + Pada perangkat Linux, Anda dapat menambahkan pengguna ke `docker` grup untuk memanggil `docker` perintah tanpa`sudo`.
  + Pada perangkat Windows, Anda dapat menambahkan pengguna ke `docker-users` grup untuk memanggil `docker` perintah tanpa hak istimewa adminstrator.

------
#### [ Linux or Unix ]

  Untuk menambahkan`ggc_user`, atau pengguna non-root yang Anda gunakan untuk menjalankan komponen kontainer Docker, ke `docker` grup, jalankan perintah berikut.

  ```
  sudo usermod -aG docker ggc_user
  ```

  Untuk informasi selengkapnya, lihat [Mengelola Docker sebagai pengguna non-root](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user).

------
#### [ Windows Command Prompt (CMD) ]

  Untuk menambahkan`ggc_user`, atau pengguna yang Anda gunakan untuk menjalankan komponen kontainer Docker, ke `docker-users` grup, jalankan perintah berikut sebagai administrator.

  ```
  net localgroup docker-users ggc_user /add
  ```

------
#### [ Windows PowerShell ]

  Untuk menambahkan`ggc_user`, atau pengguna yang Anda gunakan untuk menjalankan komponen kontainer Docker, ke `docker-users` grup, jalankan perintah berikut sebagai administrator.

  ```
  Add-LocalGroupMember -Group docker-users -Member ggc_user
  ```

------

### Persyaratan kualifikasi ML
<a name="idt-config-ml-components"></a>

**catatan**  
Fitur pembelajaran mesin hanya didukung di IDT v4.9.3.

[IDT untuk AWS IoT Greengrass V2 menyediakan pengujian kualifikasi ML untuk memvalidasi bahwa perangkat Anda dapat menggunakan [komponen machine learning](machine-learning-components.md) yang AWS disediakan untuk melakukan inferensi ML secara lokal menggunakan kerangka kerja [Deep Learning Runtime](https://github.com/neo-ai/neo-ai-dlr) atau Lite ML. TensorFlow ](https://www.tensorflow.org/lite/guide/python) Untuk informasi lebih lanjut tentang cara menjalankan inferensi ML pada perangkat Greengrass, lihat [Lakukan inferensi machine learning](perform-machine-learning-inference.md).

Untuk menjalankan tes kualifikasi ML, perangkat Anda yang sedang diuji harus memenuhi persyaratan berikut untuk men-deploy komponen machine learning.<a name="ml-component-requirements"></a>
+ Pada perangkat inti Greengrass yang menjalankan Amazon Linux 2 atau Ubuntu 18.04, [Pustaka GNU C](https://www.gnu.org/software/libc/) (glibc) versi 2.27 atau yang lebih baru diinstal pada perangkat tersebut.
+ Pada perangkat ARMv7L, seperti Raspberry Pi, dependensi untuk OpenCV-Python diinstal pada perangkat. Jalankan perintah berikut untuk menginstal dependensi.

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ Perangkat Raspberry Pi yang menjalankan Raspberry Pi OS Bullseye harus memenuhi persyaratan berikut:
  + NumPy 1.22.4 atau yang lebih baru diinstal pada perangkat. Raspberry Pi OS Bullseye menyertakan versi sebelumnya NumPy, sehingga Anda dapat menjalankan perintah berikut untuk meningkatkan NumPy pada perangkat.

    ```
    pip3 install --upgrade numpy
    ```
  + Tumpukan kamera lama diaktifkan di perangkat. Raspberry Pi OS Bullseye menyertakan tumpukan kamera baru yang diaktifkan secara default dan tidak kompatibel, jadi Anda harus mengaktifkan tumpukan kamera lama.<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**Untuk mengaktifkan tumpukan kamera lama**

    1. Jalankan perintah berikut untuk membuka alat konfigurasi Raspberry Pi.

       ```
       sudo raspi-config
       ```

    1. Pilih **Opsi Antarmuka**.

    1. Pilih **Kamera lama** untuk mengaktifkan tumpukan kamera lama.

    1. Reboot Raspberry Pi.

### Persyaratan kualifikasi HSM
<a name="idt-config-hsm-components"></a>

AWS IoT Greengrass menyediakan [komponen penyedia PKCS \$111](pkcs11-provider-component.md) untuk diintegrasikan dengan PKCS Hardware Security Module (HSM) pada perangkat. Pengaturan HSM tergantung pada perangkat Anda dan modul HSM yang telah Anda pilih. Selama konfigurasi HSM yang diharapkan, seperti yang didokumentasikan dalam [pengaturan konfigurasi IDT](set-config.md), disediakan, IDT akan memiliki informasi yang diperlukan untuk menjalankan tes kualifikasi fitur opsional ini.

# Konfigurasikan pengaturan IDT untuk menjalankan rangkaian AWS IoT Greengrass kualifikasi
<a name="set-config"></a>

Sebelum menjalankan pengujian, Anda harus mengonfigurasi pengaturan untuk AWS kredensil dan perangkat di komputer host Anda.

## Konfigurasikan AWS kredensil di config.json
<a name="cfg-aws-gg"></a>

Anda harus mengonfigurasikan kredensial pengguna IAM Anda di file `<device_tester_extract_location>/configs/config.json`. Gunakan kredensil untuk IDT untuk pengguna AWS IoT Greengrass V2 yang dibuat di. [Buat dan konfigurasikan Akun AWS](dev-tst-prereqs.md#config-aws-account-for-idt) Anda dapat menentukan kredensial Anda dengan salah satu dari dua cara berikut:
+ Di file kredensial
+ Sebagai variabel lingkungan

### Konfigurasikan AWS kredensil dengan file kredensil
<a name="config-cred-file"></a>

IDT menggunakan file kredensials yang sama sebagai AWS CLI. Untuk informasi selengkapnya, lihat [File konfigurasi dan kredensial](https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html).

Lokasi file kredensial itu bervariasi, tergantung pada sistem operasi yang Anda gunakan:
+ macOS, Linux: `~/.aws/credentials`
+ Windows: `C:\Users\UserName\.aws\credentials`

Tambahkan AWS kredensi Anda ke `credentials` file dalam format berikut:

```
[default]
aws_access_key_id = <your_access_key_id>
aws_secret_access_key = <your_secret_access_key>
```

Untuk mengonfigurasi IDT untuk AWS IoT Greengrass V2 untuk menggunakan AWS kredensil dari `credentials` file Anda, edit `config.json` file Anda sebagai berikut:

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

**catatan**  
Jika Anda tidak menggunakan `default` AWS profil, pastikan untuk mengubah nama profil di `config.json` file Anda. Untuk informasi selengkapnya, lihat [Profil Bernama](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html).

### Konfigurasikan AWS kredensil dengan variabel lingkungan
<a name="config-env-vars"></a>

Variabel lingkungan adalah variabel yang dikelola oleh sistem operasi dan digunakan oleh perintah sistem. Variabel ini tidak tersimpan jika Anda menutup sesi SSH. IDT untuk AWS IoT Greengrass V2 dapat menggunakan variabel `AWS_ACCESS_KEY_ID` dan `AWS_SECRET_ACCESS_KEY` lingkungan untuk menyimpan AWS kredensil Anda.

Untuk mengatur variabel ini di Linux, macOS, atau Unix, gunakan **export**:

```
export AWS_ACCESS_KEY_ID=<your_access_key_id>
export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
```

Untuk menetapkan variabel ini di Windows, gunakan **set**:

```
set AWS_ACCESS_KEY_ID=<your_access_key_id>
set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
```

Untuk mengonfigurasi IDT untuk menggunakan variabel lingkungan, edit bagian `auth` di file `config.json` Anda. Berikut ini contohnya:

```
{
  "awsRegion": "region",
  "auth": {
    "method": "environment"
  }
}
```

## Konfigurasikan device.json
<a name="device-config"></a>

**catatan**  
IDT v4.9.3 mendukung pengujian`ml`,, `docker` dan fitur. `streamManagement` IDT v4.9.4 dan versi yang lebih baru mendukung pengujian. `docker` Jika Anda tidak ingin menguji fitur ini, atur nilai yang sesuai ke `no`.

Selain AWS kredensil, IDT untuk AWS IoT Greengrass V2 membutuhkan informasi tentang perangkat tempat pengujian dijalankan. Contoh informasi antara lain alamat IP, informasi login, sistem operasi, dan arsitektur CPU.

Anda harus memberikan informasi ini dengan menggunakan templat `device.json` yang terletak di ` <device_tester_extract_location>/configs/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>"
            }
          }
        }
      }
    ]
  }
]
```

**catatan**  
Tentukan `privKeyPath` hanya jika `method` diatur ke `pki`.  
Tentukan `password` hanya jika `method` diatur ke `password`.

Semua properti yang berisi nilai wajib diisi seperti yang dijelaskan di sini:

`id`  
ID alfanumerik yang ditetapkan pengguna yang secara unik mengidentifikasi kumpulan perangkat disebut *kolam perangkat*. Perangkat yang termasuk dalam suatu kolam harus memiliki perangkat keras yang identik. Ketika Anda menjalankan serangkaian tes, perangkat di kolam tersebut digunakan untuk memparalelkan beban kerja. Beberapa perangkat digunakan untuk menjalankan tes yang berbeda.

`sku`  
Nilai alfanumerik yang secara unik mengidentifikasi perangkat yang diuji. SKU digunakan untuk melacak forum yang berkualitas.  
Jika Anda ingin mencantumkan perangkat Anda di Katalog AWS Partner Perangkat, SKU yang Anda tentukan di sini harus cocok dengan SKU yang Anda gunakan dalam proses daftar.

`features`  
Rangkaian yang berisi fitur perangkat yang didukung. Semua fitur bersifat wajib.    
`arch`  
Arsitektur sistem operasi yang didukung yang divalidasi oleh oleh tes yang dijalankan. Nilai yang valid adalah:  
+ `x86_64`
+ `armv6l`
+ `armv7l`
+ `aarch64`  
`ml`  
<a name="description-ml"></a>Memvalidasi bahwa perangkat memenuhi semua dependensi teknis yang diperlukan untuk menggunakan komponen pembelajaran mesin ( AWS ML) yang disediakan.  
Mengaktifkan fitur ini juga memvalidasi <a name="description-ml-inference-phrase"></a>bahwa perangkat dapat melakukan inferensi ML menggunakan kerangka kerja [Deep Learning Runtime](https://github.com/neo-ai/neo-ai-dlr) dan [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) ML.  
Nilai yang valid adalah kombinasi dari `dlr` dan `tensorflowlite`, atau `no`.  
`docker`  
<a name="description-docker"></a>Memvalidasi bahwa perangkat memenuhi semua dependensi teknis yang diperlukan untuk menggunakan komponen Docker application manager () AWS-provided. `aws.greengrass.DockerApplicationManager`  
Mengaktifkan fitur ini juga memvalidasi <a name="description-docker-app-manager-qual-phrase"></a>bahwa perangkat dapat mengunduh gambar kontainer Docker dari Amazon ECR.  
Nilai yang valid adalah kombinasi dari `yes` atau `no`.  
`streamManagement`  
<a name="description-sm"></a>Memvalidasi bahwa perangkat tersebut dapat mengunduh, menginstal, dan menjalankan perintah [manajer pengaliran AWS IoT Greengrass](manage-data-streams.md).  
Nilai yang valid adalah kombinasi dari `yes` atau `no`.  
`hsi`  
<a name="description-hsi"></a>Memvalidasi bahwa perangkat dapat mengautentikasi koneksi ke AWS IoT dan AWS IoT Greengrass layanan menggunakan kunci pribadi dan sertifikat yang disimpan dalam modul keamanan perangkat keras (HSM). Pengujian ini juga memverifikasi bahwa [komponen penyedia PKCS \$111 AWS](pkcs11-provider-component.md) yang disediakan dapat berinteraksi dengan HSM menggunakan pustaka PKCS \$111 yang disediakan vendor. Untuk informasi selengkapnya, lihat [Integrasi keamanan perangkat keras](hardware-security.md).  
Nilai yang valid adalah `hsm` atau `no`.
Pengujian hanya `hsi` tersedia dengan IDT v4.9.3 dan versi yang lebih baru.

`devices.id`  
Pengenal unik yang ditetapkan pengguna untuk perangkat Anda.

`devices.operatingSystem`  
Sistem operasi perangkat. Nilai yang didukung adalah `Linux` dan `Windows`.

`connectivity.protocol`  
Protokol komunikasi yang digunakan untuk berkomunikasi dengan perangkat ini. Saat ini, satu-satunya nilai yang didukung adalah `ssh` untuk perangkat fisik.

`connectivity.ip`  
Alamat IP perangkat yang sedang diuji.  
<a name="connectivity-protocol-ssh-only"></a>Properti ini hanya berlaku jika `connectivity.protocol` diatur ke `ssh`.

`connectivity.port`  
Tidak wajib. Jumlah port yang akan digunakan untuk koneksi SSH.  
Nilai default-nya adalah 22.  
Properti ini hanya berlaku jika `connectivity.protocol` diatur ke `ssh`.

`connectivity.publicKeyPath`  
Tidak wajib. Jalur lengkap ke kunci publik digunakan untuk mengautentikasi koneksi ke perangkat yang sedang diuji.   
Saat Anda menentukan`publicKeyPath`, IDT memvalidasi kunci publik perangkat saat membuat koneksi SSH ke perangkat yang sedang diuji. Jika nilai ini tidak ditentukan, IDT membuat koneksi SSH, tetapi tidak memvalidasi kunci publik perangkat.   
Kami sangat menyarankan Anda menentukan jalur ke kunci publik, dan Anda menggunakan metode aman untuk mengambil kunci publik ini. Untuk klien SSH berbasis baris perintah standar, kunci publik disediakan dalam file. `known_hosts` Jika Anda menentukan file kunci publik terpisah, file ini harus menggunakan format yang sama dengan `known_hosts` file, yaitu,` ip-address key-type public-key`. Jika ada beberapa entri dengan alamat ip yang sama, entri untuk key-type yang digunakan oleh IDT harus sebelum entri lain dalam file.

`connectivity.auth`  
Informasi autentikasi untuk koneksi tersebut.  
<a name="connectivity-protocol-ssh-only"></a>Properti ini hanya berlaku jika `connectivity.protocol` diatur ke `ssh`.    
`connectivity.auth.method`  
Metode autentikasi yang digunakan untuk mengakses perangkat melalui protokol konektivitas yang diberikan.  
Nilai yang didukung adalah:  
+ `pki`
+ `password`  
`connectivity.auth.credentials`  
Kredensial yang digunakan untuk autentikasi.    
`connectivity.auth.credentials.password`  
Kata sandi yang digunakan untuk masuk ke perangkat yang sedang diuji.  
Nilai ini hanya berlaku jika `connectivity.auth.method` diatur ke `password`.  
`connectivity.auth.credentials.privKeyPath`  
Jalur lengkap ke kunci privat yang digunakan untuk masuk ke perangkat yang sedang diuji.  
Nilai ini hanya berlaku jika `connectivity.auth.method` diatur ke `pki`.  
`connectivity.auth.credentials.user`  
Nama pengguna untuk masuk ke perangkat yang sedang diuji.

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

**catatan**  
Tentukan `privKeyPath` hanya jika `method` diatur ke `pki`.  
Tentukan `password` hanya jika `method` diatur ke `password`.

Semua properti yang berisi nilai wajib diisi seperti yang dijelaskan di sini:

`id`  
ID alfanumerik yang ditetapkan pengguna yang secara unik mengidentifikasi kumpulan perangkat disebut *kolam perangkat*. Perangkat yang termasuk dalam suatu kolam harus memiliki perangkat keras yang identik. Ketika Anda menjalankan serangkaian tes, perangkat di kolam tersebut digunakan untuk memparalelkan beban kerja. Beberapa perangkat digunakan untuk menjalankan tes yang berbeda.

`sku`  
Nilai alfanumerik yang secara unik mengidentifikasi perangkat yang diuji. SKU digunakan untuk melacak forum yang berkualitas.  
Jika Anda ingin mencantumkan perangkat Anda di Katalog AWS Partner Perangkat, SKU yang Anda tentukan di sini harus cocok dengan SKU yang Anda gunakan dalam proses daftar.

`features`  
Rangkaian yang berisi fitur perangkat yang didukung. Semua fitur bersifat wajib.    
`arch`  
Arsitektur sistem operasi yang didukung yang divalidasi oleh oleh tes yang dijalankan. Nilai yang valid adalah:  
+ `x86_64`
+ `armv6l`
+ `armv7l`
+ `aarch64`  
`docker`  
<a name="description-docker"></a>Memvalidasi bahwa perangkat memenuhi semua dependensi teknis yang diperlukan untuk menggunakan komponen Docker application manager () AWS-provided. `aws.greengrass.DockerApplicationManager`  
Mengaktifkan fitur ini juga memvalidasi <a name="description-docker-app-manager-qual-phrase"></a>bahwa perangkat dapat mengunduh gambar kontainer Docker dari Amazon ECR.  
Nilai yang valid adalah kombinasi dari `yes` atau `no`.  
`hsi`  
<a name="description-hsi"></a>Memvalidasi bahwa perangkat dapat mengautentikasi koneksi ke AWS IoT dan AWS IoT Greengrass layanan menggunakan kunci pribadi dan sertifikat yang disimpan dalam modul keamanan perangkat keras (HSM). Pengujian ini juga memverifikasi bahwa [komponen penyedia PKCS \$111 AWS](pkcs11-provider-component.md) yang disediakan dapat berinteraksi dengan HSM menggunakan pustaka PKCS \$111 yang disediakan vendor. Untuk informasi selengkapnya, lihat [Integrasi keamanan perangkat keras](hardware-security.md).  
Nilai yang valid adalah `hsm` atau `no`.
Pengujian hanya `hsi` tersedia dengan IDT v4.9.3 dan versi yang lebih baru.

`devices.id`  
Pengenal unik yang ditetapkan pengguna untuk perangkat Anda.

`devices.operatingSystem`  
Sistem operasi perangkat. Nilai yang didukung adalah `Linux` dan `Windows`.

`connectivity.protocol`  
Protokol komunikasi yang digunakan untuk berkomunikasi dengan perangkat ini. Saat ini, satu-satunya nilai yang didukung adalah `ssh` untuk perangkat fisik.

`connectivity.ip`  
Alamat IP perangkat yang sedang diuji.  
<a name="connectivity-protocol-ssh-only"></a>Properti ini hanya berlaku jika `connectivity.protocol` diatur ke `ssh`.

`connectivity.port`  
Tidak wajib. Jumlah port yang akan digunakan untuk koneksi SSH.  
Nilai default-nya adalah 22.  
Properti ini hanya berlaku jika `connectivity.protocol` diatur ke `ssh`.

`connectivity.publicKeyPath`  
Tidak wajib. Jalur lengkap ke kunci publik digunakan untuk mengautentikasi koneksi ke perangkat yang sedang diuji.   
Saat Anda menentukan`publicKeyPath`, IDT memvalidasi kunci publik perangkat saat membuat koneksi SSH ke perangkat yang sedang diuji. Jika nilai ini tidak ditentukan, IDT membuat koneksi SSH, tetapi tidak memvalidasi kunci publik perangkat.   
Kami sangat menyarankan Anda menentukan jalur ke kunci publik, dan Anda menggunakan metode aman untuk mengambil kunci publik ini. Untuk klien SSH berbasis baris perintah standar, kunci publik disediakan dalam file. `known_hosts` Jika Anda menentukan file kunci publik terpisah, file ini harus menggunakan format yang sama dengan `known_hosts` file, yaitu,` ip-address key-type public-key`. Jika ada beberapa entri dengan alamat ip yang sama, entri untuk key-type yang digunakan oleh IDT harus sebelum entri lain dalam file.

`connectivity.auth`  
Informasi autentikasi untuk koneksi tersebut.  
<a name="connectivity-protocol-ssh-only"></a>Properti ini hanya berlaku jika `connectivity.protocol` diatur ke `ssh`.    
`connectivity.auth.method`  
Metode autentikasi yang digunakan untuk mengakses perangkat melalui protokol konektivitas yang diberikan.  
Nilai yang didukung adalah:  
+ `pki`
+ `password`  
`connectivity.auth.credentials`  
Kredensial yang digunakan untuk autentikasi.    
`connectivity.auth.credentials.password`  
Kata sandi yang digunakan untuk masuk ke perangkat yang sedang diuji.  
Nilai ini hanya berlaku jika `connectivity.auth.method` diatur ke `password`.  
`connectivity.auth.credentials.privKeyPath`  
Jalur lengkap ke kunci privat yang digunakan untuk masuk ke perangkat yang sedang diuji.  
Nilai ini hanya berlaku jika `connectivity.auth.method` diatur ke `pki`.  
`connectivity.auth.credentials.user`  
Nama pengguna untuk masuk ke perangkat yang sedang diuji.

------

## Konfigurasikan userdata.json
<a name="userdata-config"></a>

IDT untuk AWS IoT Greengrass V2 juga membutuhkan informasi tambahan tentang lokasi artefak uji dan AWS IoT Greengrass perangkat lunak.

Anda harus memberikan informasi ini dengan menggunakan templat `userdata.json` yang terletak di ` <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"
    }
}
```

Semua properti yang berisi nilai wajib diisi seperti yang dijelaskan di sini:

`TempResourcesDirOnDevice`  
Jalur lengkap ke folder sementara pada perangkat yang diuji untuk menyimpan artefak uji. Pastikan bahwa izin sudo tidak diperlukan untuk menulis ke direktori ini.   
IDT menghapus isi folder ini ketika selesai menjalankan tes.

`InstallationDirRootOnDevice`  
Jalur penuh ke folder pada perangkat tempat menginstal AWS IoT Greengrass. Untuk PreInstalled Greengrass, ini adalah jalur ke direktori instalasi Greengrass.  
Anda harus mengatur izin file yang diperlukan untuk folder ini. Jalankan perintah berikut untuk setiap folder di jalur instalasi.  

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

`GreengrassNucleusZip`  
Jalur penuh ke file ZIP inti Greengrass (`greengrass-nucleus-latest.zip`) pada komputer host Anda. Bidang ini tidak diperlukan untuk pengujian dengan PreInstalled Greengrass.  
Untuk informasi tentang versi inti Greengrass yang didukung untuk IDT, lihat. AWS IoT Greengrass[Versi IDT terbaru untuk V2 AWS IoT Greengrass](dev-test-versions.md#idt-latest-version) [Untuk mengunduh perangkat lunak Greengrass terbaru, lihat Mengunduh perangkat lunak. AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/dev-tst-prereqs.html#config-gg)

`PreInstalled`  
Fitur ini tersedia untuk IDT v4.5.8 dan versi yang lebih baru hanya pada perangkat Linux.  
(Opsional) Ketika nilainya*yes*, IDT akan menganggap jalur yang disebutkan sebagai direktori tempat Greengrass diinstal. `InstallationDirRootOnDevice`  
Untuk informasi selengkapnya tentang cara menginstal Greengrass di perangkat Anda, lihat. [Instal perangkat lunak AWS IoT Greengrass Core dengan penyediaan sumber daya otomatis](quick-installation.md) Jika [menginstal dengan penyediaan manual](https://docs.aws.amazon.com/greengrass/v2/developerguide/manual-installation.html), sertakan langkah “Tambahkan AWS IoT benda ke grup hal baru atau yang sudah ada” saat membuat [AWS IoT sesuatu](https://docs.aws.amazon.com/greengrass/v2/developerguide/manual-installation.html#create-iot-thing) secara manual. IDT mengasumsikan bahwa grup benda dan benda dibuat selama pengaturan instalasi. Pastikan bahwa nilai-nilai ini tercermin dalam `effectiveConfig.yaml` file. IDT memeriksa file di `effectiveConfig.yaml` bawah`<InstallationDirRootOnDevice>/config/effectiveConfig.yaml`.  
Untuk menjalankan tes dengan HSM, pastikan bahwa `aws.greengrass.crypto.Pkcs11Provider` bidang diperbarui di`effectiveConfig.yaml`.

  `GreengrassV2TokenExchangeRole`  
(Opsional) Peran IAM kustom yang ingin Anda gunakan sebagai peran pertukaran token yang diasumsikan perangkat yang diuji untuk berinteraksi dengan AWS sumber daya.   
IDT menggunakan peran IAM khusus ini alih-alih membuat peran pertukaran token default selama pengujian dijalankan. Jika Anda menggunakan peran kustom, Anda dapat memperbarui [izin IAM untuk pengguna pengujian](dev-tst-prereqs.md#configure-idt-permissions) untuk mengecualikan `iamResourcesUpdate` pernyataan yang memungkinkan pengguna membuat dan menghapus peran dan kebijakan IAM. 
Untuk informasi selengkapnya tentang membuat peran IAM kustom sebagai peran pertukaran token Anda, lihat[Konfigurasikan peran pertukaran token kustom](device-config-setup.md#configure-custom-tes-role-for-idt).

`hsm`  
Fitur ini tersedia untuk IDT v4.5.1 dan yang lebih baru.  
(Opsional) Informasi konfigurasi untuk pengujian dengan Modul Keamanan AWS IoT Greengrass Perangkat Keras (HSM). Jika tidak, `hsm` properti harus dihilangkan. Untuk informasi selengkapnya, lihat [Integrasi keamanan perangkat keras](hardware-security.md).  
<a name="connectivity-protocol-ssh-only"></a>Properti ini hanya berlaku jika `connectivity.protocol` diatur ke `ssh`.  
Konfigurasi HSM dapat dianggap sebagai data sensitif jika modul keamanan perangkat keras dibagi antara IDT dan sistem lain. Dalam situasi ini, Anda dapat menghindari mengamankan nilai konfigurasi ini dalam teks biasa dengan menyimpannya dalam AWS parameter SecureString Parameter Store dan mengonfigurasi IDT untuk mengambilnya selama eksekusi pengujian. Untuk informasi selengkapnya, lihat [Ambil konfigurasi dari AWS Parameter Store](#fetch-config)  
`hsm.greengrassPkcsPluginJar`  
Jalur lengkap ke [komponen penyedia PKCS \$111](pkcs11-provider-component.md) yang Anda unduh ke mesin host IDT. AWS IoT Greengrass menyediakan komponen ini sebagai file JAR yang dapat Anda unduh untuk ditentukan sebagai plugin penyediaan selama instalasi. Anda dapat mengunduh versi terbaru dari file JAR komponen sebagai URL berikut: [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`  
Jalur lengkap ke pustaka PKCS \$111 yang disediakan oleh vendor modul keamanan perangkat keras (HSM) untuk berinteraksi dengan HSM.  
`hsm.slotId`  
ID slot yang digunakan untuk mengidentifikasi slot HSM tempat Anda memuat kunci dan sertifikat.  
`hsm.slotLabel`  
Label slot yang digunakan untuk mengidentifikasi slot HSM tempat Anda memuat kunci dan sertifikat.  
`hsm.slotUserPin`  
PIN pengguna yang digunakan IDT untuk mengautentikasi perangkat lunak AWS IoT Greengrass Core ke HSM.  
Sebagai praktik keamanan terbaik, jangan gunakan PIN pengguna yang sama pada perangkat produksi.  
`hsm.keyLabel`  
Label yang digunakan untuk mengidentifikasi kunci dalam modul perangkat keras. Kunci dan sertifikat harus menggunakan label kunci yang sama.  
`hsm.preloadedCertificateArn`  
Nama Sumber Daya Amazon (ARN) dari sertifikat perangkat yang diunggah di cloud. AWS IoT   
Anda sebelumnya harus membuat sertifikat ini menggunakan kunci di HSM, mengimpornya ke HSM Anda, dan mengunggahnya ke cloud. AWS IoT Untuk informasi tentang membuat dan mengimpor sertifikat, lihat dokumentasi untuk HSM Anda.  
Anda harus mengunggah sertifikat ke akun dan Wilayah yang sama yang Anda berikan di [config.json](#cfg-aws-gg). . Untuk informasi selengkapnya tentang mengunggah sertifikat AWS IoT, lihat [Mendaftarkan sertifikat klien secara manual](https://docs.aws.amazon.com/iot/latest/developerguide/manual-cert-registration.html) di *Panduan AWS IoT Pengembang*.  
`hsm.rootCAPath`  
(Opsional) Jalur lengkap pada mesin host IDT ke otoritas sertifikat root (CA) yang menandatangani sertifikat Anda. Ini diperlukan jika sertifikat di HSM Anda yang dibuat tidak ditandatangani oleh Amazon root CA.

## Ambil konfigurasi dari AWS Parameter Store
<a name="fetch-config"></a>

AWS IoT Device Tester (IDT) menyertakan fitur opsional untuk mengambil nilai konfigurasi dari [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html). AWS Parameter Store memungkinkan penyimpanan konfigurasi yang aman dan terenkripsi. Saat dikonfigurasi, IDT dapat mengambil parameter dari AWS Parameter Store sebagai pengganti menyimpan parameter dalam teks biasa di dalam file. `userdata.json` Ini berguna untuk semua data sensitif yang harus disimpan terenkripsi, seperti: kata sandi, pin, dan rahasia lainnya.

1. Untuk menggunakan fitur ini, Anda harus memperbarui izin yang digunakan dalam membuat [pengguna IDT](https://docs.aws.amazon.com/greengrass/v2/developerguide/dev-tst-prereqs.html) Anda untuk mengizinkan GetParameter tindakan pada parameter yang IDT dikonfigurasi untuk digunakan. Di bawah ini adalah contoh pernyataan izin yang dapat ditambahkan ke pengguna IDT. Untuk informasi selengkapnya, lihat [AWS Systems Manager panduan pengguna](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*"
   }
   ```

   Izin di atas dikonfigurasi untuk memungkinkan pengambilan semua parameter dengan nama yang dimulai dengan`IDT`, dengan menggunakan karakter wildcard. `*` Anda harus menyesuaikan ini dengan kebutuhan Anda sehingga IDT memiliki akses untuk mengambil parameter yang dikonfigurasi berdasarkan penamaan parameter yang Anda gunakan.

1. Anda perlu menyimpan nilai konfigurasi Anda di dalam AWS Paramater Store. Ini dapat dilakukan dari AWS konsol atau dari AWS CLI. AWS Parameter Store memungkinkan Anda memilih penyimpanan terenkripsi atau tidak terenkripsi. Untuk penyimpanan nilai sensitif seperti rahasia, kata sandi, dan pin, Anda harus menggunakan opsi terenkripsi yang merupakan jenis parameter. SecureString Untuk mengunggah parameter menggunakan AWS CLI, Anda dapat menggunakan perintah berikut:

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

   Anda dapat memverifikasi bahwa parameter disimpan menggunakan perintah berikut. (Opsional) Gunakan `--with-decryption` bendera untuk mengambil parameter yang didekripsiSecureString .

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

   Menggunakan AWS CLI akan mengunggah parameter di AWS wilayah pengguna CLI saat ini dan IDT akan mengambil parameter dari wilayah yang dikonfigurasi. `config.json` Untuk memeriksa wilayah Anda dari AWS CLI, gunakan yang berikut ini:

   ```
   aws configure get region
   ```

1. Setelah Anda memiliki nilai konfigurasi di AWS Cloud, Anda dapat memperbarui nilai apa pun di dalam konfigurasi IDT untuk diambil dari Cloud. AWS Untuk melakukannya, Anda menggunakan placeholder dalam konfigurasi formulir IDT Anda `{{AWS.Parameter.parameter_name}}` untuk mengambil parameter dengan nama itu dari Parameter Store. AWS 

   Misalnya, Anda ingin menggunakan `IDT-example-name` parameter dari Langkah 2 sebagai KeyLabel HSM dalam konfigurasi HSM Anda. Untuk melakukan ini, Anda dapat memperbarui `userdata.json` sebagai berikut:

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

   IDT akan mengambil nilai parameter ini saat runtime yang disetel ke Langkah 2`IDT-example-value`. Konfigurasi ini mirip dengan pengaturan `"keyLabel": "IDT-example-value"` tetapi, sebaliknya, nilai itu disimpan sebagai terenkripsi di AWS Cloud.

# Jalankan suite AWS IoT Greengrass kualifikasi
<a name="run-tests"></a>

Setelah Anda [mengatur konfigurasi yang diperlukan](set-config.md), Anda bisa memulai tes. Waktu aktif dari rangkaian uji penuh tergantung pada perangkat keras Anda. Sebagai referensi, dibutuhkan sekitar 30 menit untuk menyelesaikan rangkaian tes penuh pada Raspberry Pi 3B.

Gunakan `run-suite` berikut untuk menjalankan rangkaian tes.

```
devicetester_[linux | mac | win]_x86-64 run-suite  \\
    --suite-id suite-id  \\
    --group-id group-id  \\
    --pool-id your-device-pool \\
    --test-id test-id  \\
    --update-idt y|n  \\
    --userdata userdata.json
```

Semua opsi adalah opsional. Misalnya, Anda dapat menghilangkan `pool-id` jika anda hanya mempunyai satu kolam perangkat, yang merupakan serangkaian perangkat yang sama, yang ditentukan dalam file `device.json` Anda. Atau, Anda bisa menghilangkan `suite-id` jika Anda ingin menjalankan versi rangkaian uji terbaru di folder `tests`.

**catatan**  
IDT meminta Anda jika versi rangkaian tes yang lebih baru tersedia secara online. Untuk informasi selengkapnya, lihat [Versi rangkaian tes](idt-greengrass-qualification.md#idt-test-suite-versions).

## Contoh perintah untuk menjalankan rangkaian kualifikasi
<a name="idt-run-suite-examples"></a>

Contoh baris perintah berikut menunjukkan cara menjalankan tes kualifikasi untuk kolam perangkat. Untuk informasi selengkapnya tentang `run-suite` dan perintah IDT CLI lainnya, lihat [IDT untuk perintah AWS IoT Greengrass V2](#bk-cli).

Gunakan perintah berikut untuk menjalankan semua grup uji dalam rangkaian tes tertentu. Perintah `list-suites` mencantumkan rangkaian uji yang ada di folder `tests`.

```
devicetester_[linux | mac | win]_x86-64 run-suite \
    --suite-id GGV2Q_1.0.0 \
    --pool-id <pool-id> \
    --userdata userdata.json
```

Gunakan perintah berikut untuk menjalankan semua grup uji tertentu dalam rangkaian tes. Perintah `list-groups` mencantumkan grup uji dalam rangkaian uji.

```
devicetester_[linux | mac | win]_x86-64 run-suite \
    --suite-id GGV2Q_1.0.0 \
    --group-id <group-id> \
    --pool-id <pool-id> \
    --userdata userdata.json
```

Gunakan perintah berikut untuk menjalankan uji kasus tertentu dalam grup uji.

```
devicetester_[linux | mac | win]_x86-64 run-suite \
    --group-id <group-id> \
    --test-id <test-id> \
    --userdata userdata.json
```

Gunakan perintah berikut untuk menjalankan beberapa uji kasus dalam grup uji.

```
devicetester_[linux | mac | win]_x86-64 run-suite \
    --group-id <group-id> \
    --test-id <test-id1>,<test-id2>
    --userdata userdata.json
```

Gunakan perintah berikut untuk mencantumkan semua uji kasus dalam grup uji.

```
devicetester_[linux | mac | win]_x86-64 list-test-cases --group-id <group-id>
```

Kami menyarankan Anda menjalankan rangkaian pengujian kualifikasi lengkap, yang menjalankan dependensi grup pengujian dalam urutan yang benar. Jika Anda memilih untuk menjalankan grup pengujian tertentu, sebaiknya jalankan grup uji pemeriksa dependensi terlebih dahulu untuk memastikan semua dependensi Greengrass diinstal sebelum menjalankan grup pengujian terkait. Contoh:
+ Jalankan `coredependencies` sebelum menjalankan grup uji kualifikasi inti.

## IDT untuk perintah AWS IoT Greengrass V2
<a name="bk-cli"></a>

Perintah IDT terletak di direktori `<device-tester-extract-location>/bin`. Untuk menjalankan rangkaian tes, Anda memberikan perintah dalam format berikut:

`help`  <a name="idt-command-help"></a>
Mencantumkan informasi tentang perintah yang ditentukan.

`list-groups`  <a name="idt-command-list-groups"></a>
Mendaftar grup dalam rangkaian tes yang diberikan.

`list-suites`  <a name="idt-command-list-suites"></a>
Mencantumkan rangkaian tes yang tersedia.

`list-supported-products`  
Daftar produk yang didukung, dalam AWS IoT Greengrass versi kasus ini, dan versi rangkaian pengujian untuk versi IDT saat ini.

`list-test-cases`  
Mencantumkan uji kasus dalam grup uji yang diberikan. Opsi berikut didukung:  
+ `group-id`. Grup uji yang harus dicari. Opsi ini diperlukan dan harus menentukan satu grup.

`run-suite`  
Menjalankan serangkaian tes pada kolam perangkat. Berikut ini adalah beberapa opsi yang didukung:  
+ `suite-id`. Versi rangkaian tes yang akan jalankan. Jika tidak ditentukan, IDT akan menggunakan versi terbaru dalam folder `tests`.
+ `group-id`. Grup uji yang akan jalankan, sebagai daftar yang dipisahkan koma. Jika tidak ditentukan, IDT menjalankan semua grup pengujian yang sesuai dalam rangkaian pengujian tergantung pada `device.json` pengaturan yang dikonfigurasi. IDT tidak menjalankan grup pengujian apa pun yang tidak didukung perangkat berdasarkan pengaturan yang dikonfigurasi, meskipun grup pengujian tersebut ditentukan dalam `group-id` daftar.
+ `test-id`. Uji kasus yang akan dijalankan, sebagai daftar yang dipisahkan koma. Ketika ditentukan, `group-id` harus menentukan satu grup.
+ `pool-id`. Kolam perangkat yang akan diuji. Anda harus menentukan suatu kolam jika Anda memiliki beberapa kolam perangkat yang ditentukan dalam file `device.json` Anda.
+ `stop-on-first-failure`. Mengonfigurasi IDT untuk berhenti berjalan pada kegagalan pertama. Gunakan opsi ini dengan `group-id` ketika Anda ingin men-debug grup uji tertentu. Jangan gunakan opsi ini saat menjalankan rangkaian uji penuh untuk menghasilkan laporan kualifikasi.
+ `update-idt`. Menetapkan respons bagi prompt untuk memperbarui IDT. Respons `Y` menghentikan pelaksanaan tes jika IDT mendeteksi ada versi yang lebih baru. Respons `N` melanjutkan pelaksanaan tes.
+ `userdata`. Path lengkap ke file `userdata.json` yang berisi informasi tentang path artefak uji. Opsi ini diperlukan untuk perintah `run-suite`. `userdata.json`File harus terletak di direktori *devicetester\$1extract\$1location* /devicetester\$1ggv2\$1 *[win\$1mac\$1linux]* /configs/.
Untuk informasi lebih lanjut tentang opsi `run-suite`, gunakan opsi `help`:  

```
devicetester_[linux | mac | win]_x86-64 run-suite -h
```

# Memahami hasil dan log
<a name="results-logs"></a>

Bagian ini menjelaskan cara melihat dan menafsirkan laporan hasil IDT dan log. 

Untuk memecahkan masalah kesalahan, lihat. [Pemecahan Masalah IDT untuk V2 AWS IoT Greengrass](idt-troubleshooting.md)

## Melihat Hasil
<a name="view-results"></a>

Saat berjalan, IDT menuliskan kesalahan ke konsol, file log, dan laporan tes. Setelah IDT menyelesaikan rangkaian tes kualifikasi, ia akan menghasilkan dua laporan uji. Laporan-laporan ini terletak di `<device-tester-extract-location>/results/<execution-id>/`. Kedua laporan tersebut menangkap hasil dari menjalankan rangkaian uji kualifikasi.

`awsiotdevicetester_report.xml`Ini adalah laporan pengujian kualifikasi yang Anda kirimkan AWS untuk mencantumkan perangkat Anda di Katalog AWS Partner Perangkat. Laporan tersebut berisi elemen berikut:
+ Versi IDT.
+  AWS IoT Greengrass Versi yang diuji.
+ SKU dan nama kolam perangkat yang ditentukan dalam file `device.json`.
+ Fitur kolam perangkat yang ditentukan dalam file `device.json`.
+ Ringkasan agregat hasil tes.
+ Perincian hasil tes oleh pustakan yang diuji berdasarkan fitur perangkat, seperti akses sumber daya lokal, bayangan, dan MQTT.

`GGV2Q_Result.xml`Laporan ini dalam [format JUnit XHTML](https://llg.cubic.org/docs/junit/). Anda dapat mengintegrasikannya ke dalam integrasi berkelanjutan dan platform deployment seperti [Jenkins](https://jenkins.io/), [Bamboo](https://www.atlassian.com/software/bamboo), dan sebagainya. Laporan tersebut berisi elemen berikut:
+ Ringkasan agregat hasil pengujian.
+ Rincian hasil pengujian oleh AWS IoT Greengrass fungsionalitas yang diuji.

## Menafsirkan hasil AWS IoT Device Tester
<a name="interpreting-results-gg"></a>

Bagian laporan di `awsiotdevicetester_report.xml` atau `awsiotdevicetester_report.xml` mencantumkan tes yang dijalankan dan hasilnya.

Tag XML pertama `<testsuites>` berisi ringkasan tes yang dijalankan. Sebagai contoh:

```
<testsuites name="GGQ results" time="2299" tests="28" failures="0" errors="0" disabled="0">
```Atribut yang digunakan dalam tanda `<testsuites>`

`name`  
Nama rangkaian tes.

`time`  
Waktu, dalam hitungan detik, yang diperlukan untuk menjalankan rangkaian kualifikasi.

`tests`  
Jumlah tes yang dijalankan.

`failures`  
Jumlah tes yang dijalankan, tetapi tidak lulus.

`errors`  
Jumlah tes yang tidak bisa dijalankan oleh IDT.

`disabled`  
Abaikan atribut ini. Atribut ini tidak digunakan.

File `awsiotdevicetester_report.xml` berisi sebuah tanda `<awsproduct>` yang berisi informasi tentang produk yang sedang diuji dan fitur produk yang divalidasi setelah menjalankan serangkaian pengujian.Atribut yang digunakan dalam tanda `<awsproduct>`

`name`  
Nama produk yang sedang diuji.

`version`  
Versi produk yang sedang diuji.

`features`  
Fitur divalidasi. Fitur yang ditandai sebagai `required` wajib mengirimkan forum Anda untuk kualifikasi. Potongan berikut menunjukkan bagaimana informasi ini muncul di file `awsiotdevicetester_report.xml`.  

```
<name="aws-iot-greengrass-v2-core" value="supported" type="required"></feature>
```

Jika tidak ada kegagalan pengujian atau kesalahan untuk fitur yang diperlukan, perangkat Anda memenuhi persyaratan teknis untuk dijalankan AWS IoT Greengrass dan dapat beroperasi dengan AWS IoT layanan. Jika ingin mencantumkan perangkat di Katalog AWS Partner Perangkat, Anda dapat menggunakan laporan ini sebagai bukti kualifikasi.

Jika terjadi kegagalan atau kesalahan uji, Anda dapat mengidentifikasi pengujian yang gagal tersebut dengan meninjau tanda XML `<testsuites>`. Tag XML `<testsuite>` di dalam tag `<testsuites>` menunjukkan ringkasan hasil tes untuk grup uji. Sebagai contoh:

```
<testsuite name="combination" package="" tests="1" failures="0" time="161" disabled="0" errors="0" skipped="0">
```

Format ini serupa dengan tanda `<testsuites>`, tetapi dengan atribut `skipped` yang tidak digunakan dan dapat diabaikan. Di dalam masing-masing tanda XML `<testsuite>`, terdapat tanda `<testcase>` untuk setiap pengujian yang dijalankan untuk suatu grup uji. Sebagai contoh:

```
<testcase classname="Security Combination (IPD + DCM) Test Context" name="Security Combination IP Change Tests sec4_test_1: Should rotate server cert when IPD disabled and following changes are made:Add CIS conn info and Add another CIS conn info" attempts="1"></testcase>>
```Atribut yang digunakan dalam tanda `<testcase>`

`name`  
Nama tes.

`attempts`  
Berapa kali IDT menjalankan uji kasus.

Ketika tes gagal atau kesalahan terjadi, tanda `<failure>` atau `<error>` akan ditambahkan ke tanda `<testcase>` dengan informasi untuk pemecahan masalah. Sebagai contoh:

```
<testcase classname="mcu.Full_MQTT" name="AFQP_MQTT_Connect_HappyCase" attempts="1">
	<failure type="Failure">Reason for the test failure</failure>
	<error>Reason for the test execution error</error>
</testcase>
```

## Melihat log
<a name="view-logs-gg"></a>

IDT menghasilkan log dari tes yang berjalan di `<devicetester-extract-location>/results/<execution-id>/logs`. Dua rangkaian log yang dihasilkan:

`test_manager.log`  
Log yang dihasilkan dari komponen Test Manager AWS IoT Device Tester (misalnya, log yang terkait dengan konfigurasi, pengurutan pengujian, dan pembuatan laporan).

`<test-case-id>.log (for example, lambdaDeploymentTest.log)`  
Log dari kasus uji dalam grup uji, termasuk log dari perangkat yang diuji. Dimulai dengan IDT v4.2.0, IDT mengelompokkan log pengujian untuk setiap kasus uji dalam *<test-case-id>* folder terpisah di dalam direktori. `<devicetester-extract-location>/results/<execution-id>/logs/<test-group-id>/`