

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

# Pemecahan Masalah IDT untuk V2 AWS IoT Greengrass
<a name="idt-troubleshooting"></a>

IDT untuk AWS IoT Greengrass V2 menulis kesalahan ke berbagai lokasi berdasarkan jenis kesalahan. IDT menuliskan kesalahan ke konsol, file log, dan laporan tes. 

## Di mana mencari kesalahan
<a name="where-to-look"></a>

Kesalahan tingkat tinggi ditampilkan di konsol saat pengujian sedang berjalan, dan ringkasan pengujian yang gagal ditampilkan saat semua pengujian selesai. `awsiotdevicetester_report.xml`berisi ringkasan semua kesalahan yang menyebabkan tes gagal. IDT menyimpan file log untuk setiap pengujian yang dijalankan di direktori dengan UUID untuk eksekusi pengujian, ditampilkan di konsol selama uji coba.

Direktori log uji IDT adalah `<device-tester-extract-location>/results/<execution-id>/logs/`. Direktori ini berisi file-file berikut yang ditampilkan dalam tabel. Ini berguna untuk debugging.


| File | Deskripsi | 
| --- | --- | 
| test\$1manager.log |  Log ditulis ke konsol saat tes sedang berjalan. Ringkasan hasil pada akhir file ini mencakup daftar tes yang gagal. Catatan peringatan dan kesalahan dalam file ini dapat memberikan beberapa informasi tentang kegagalan.   | 
| test-group-id/test-case-id/test-name.log | Log terperrinci untuk tes spesifik dalam grup uji. Untuk tes yang men-deploy komponen Greengrass, uji kasus file log tersebut disebut greengrass-test-run.log. | 
| test-group-id/test-case-id/greengrass.log | Log terperinci untuk perangkat lunak AWS IoT Greengrass Core. IDT menyalin file ini dari perangkat yang diuji saat menjalankan pengujian yang menginstal perangkat lunak AWS IoT Greengrass Core pada perangkat. Untuk informasi selengkapnya tentang pesan dalam file log ini, lihat [Pemecahan masalah AWS IoT Greengrass V2](troubleshooting.md). | 
| test-group-id/test-case-id/component-name.log | Log terperinci untuk komponen Greengrass yang di-deploy selama uji coba. IDT menyalin file log komponen dari perangkat yang diuji ketika menjalankan tes yang men-deploy komponen tertentu. Nama setiap file log komponen sesuai dengan nama komponen yang di-deploy. Untuk informasi selengkapnya tentang pesan dalam berkas log ini, lihat [Pemecahan masalah AWS IoT Greengrass V2](troubleshooting.md). | 

## Menyelesaikan IDT untuk kesalahan V2 AWS IoT Greengrass
<a name="idt-gg-resolve-errors"></a>

Sebelum Anda menjalankan IDT untuk AWS IoT Greengrass, dapatkan file konfigurasi yang benar di tempatnya. Jika Anda menerima parsing dan konfigurasi kesalahan, langkah pertama Anda adalah menemukan dan menggunakan templat konfigurasi yang sesuai untuk lingkungan Anda.

Jika Anda masih mengalami masalah, lihat proses debugging berikut.

**Topics**
+ [Kesalahan resolusi alias](#alias-resolution-errors)
+ [Kesalahan konflik](#conflict-error)
+ [Tidak dapat memulai kesalahan uji](#could-not-start-test)
+ [Gambar kualifikasi docker ada kesalahan](#docker-qualification-image-exists)
+ [Gagal membaca kredensi](#failed-to-read-credential-windows)
+ [Kesalahan Guice dengan PreInstalled Greengrass](#guice-errors)
+ [Pengecualian tanda tangan tidak valid](#invalid-signature-exception-lambda)
+ [Kesalahan kualifikasi machine learning](#machine-learning-qualification-failure)
+ [Penerapan gagal Open Test Framework (OTF)](#otf-deployment-failure)
+ [Kesalahan parsing](#parse-error)
+ [Kesalahan ditolak izin](#permission-denied-pwd-sudo)
+ [Kesalahan pembuatan laporan kualifikasi](#qualification-report-policy-error)
+ [Parameter yang diperlukan kehilangan kesalahan](#required-param-missing)
+ [Pengecualian keamanan di macOS](#security-exception-macos)
+ [Kesalahan koneksi SSH](#ssh-connect-errors)
+ [Kesalahan kualifikasi stream manager](#stream-manager-qualification-failure)
+ [Kesalahan batas waktu](#test-timeout)
+ [Kesalahan pemeriksaan versi](#version-compatibility-check-failure)

### Kesalahan resolusi alias
<a name="alias-resolution-errors"></a>

Saat menjalankan suite pengujian khusus, Anda mungkin melihat kesalahan berikut di konsol dan di`test_manager.log`. 

```
Couldn't resolve placeholders: couldn't do a json lookup: index out of range
```

Kesalahan ini dapat terjadi ketika alias yang dikonfigurasi dalam orkestrator pengujian IDT tidak diselesaikan dengan benar atau jika nilai yang diselesaikan tidak ada dalam file konfigurasi. Untuk mengatasi kesalahan ini, pastikan bahwa Anda `device.json` dan `userdata.json ` berisi informasi yang benar yang diperlukan untuk rangkaian pengujian Anda. Untuk informasi tentang konfigurasi yang diperlukan untuk AWS IoT Greengrass kualifikasi, lihat[Konfigurasikan pengaturan IDT untuk menjalankan rangkaian AWS IoT Greengrass kualifikasi](set-config.md).

### Kesalahan konflik
<a name="conflict-error"></a>

Anda mungkin melihat kesalahan berikut saat menjalankan rangkaian AWS IoT Greengrass kualifikasi secara bersamaan di lebih dari satu perangkat.

```
ConflictException: Component [com.example.IDTHelloWorld : 1.0.0] for account [account-id] already exists with state: [DEPLOYABLE] { RespMetadata: { StatusCode: 409, RequestID: “id” }, Message_: “Component [com.example.IDTHelloWorld : 1.0.0] for account [account-id] already exists with state: [DEPLOYABLE]” }
```

Eksekusi pengujian bersamaan belum didukung untuk rangkaian AWS IoT Greengrass kualifikasi. Jalankan rangkaian kualifikasi secara berurutan untuk setiap perangkat.

### Tidak dapat memulai kesalahan uji
<a name="could-not-start-test"></a>

Anda mungkin mengalami kesalahan yang mengarah ke kegagalan yang terjadi ketika tes mencoba untuk dimulai. Ada beberapa kemungkinan penyebabnya, jadi lakukan hal berikut:
+ Pastikan bahwa nama kolam dalam perintah eksekusi Anda benar-benar ada. IDT mengacu nama kolam secara langsung dari file `device.json`.
+ Pastikan bahwa perangkat di kolam Anda memiliki parameter konfigurasi yang benar.

### Gambar kualifikasi docker ada kesalahan
<a name="docker-qualification-image-exists"></a>

Tes kualifikasi manajer aplikasi Docker menggunakan gambar `amazon/amazon-ec2-metadata-mock` kontainer di Amazon ECR untuk memenuhi syarat perangkat yang diuji.

Anda mungkin menerima kesalahan berikut jika gambar sudah ada dalam kontainer Docker pada perangkat yang diuji.

```
The Docker image amazon/amazon-ec2-metadata-mock:version already exists on the device.
```

Jika Anda sebelumnya telah mengunduh gambar ini dan menjalankan `amazon/amazon-ec2-metadata-mock` di perangkat Anda, pastikan Anda menghapus gambar ini dari perangkat yang sedang diuji sebelum Anda menjalankan tes kualifikasi.

### Gagal membaca kredensi
<a name="failed-to-read-credential-windows"></a>

Saat menguji perangkat Windows, Anda mungkin mengalami `Failed to read credential` kesalahan dalam `greengrass.log` file jika pengguna yang Anda gunakan untuk menyambung ke perangkat yang sedang diuji tidak diatur di pengelola kredensi pada perangkat tersebut. 

Untuk mengatasi kesalahan ini, konfigurasikan pengguna dan kata sandi untuk pengguna IDT di pengelola kredensi pada perangkat yang sedang diuji.

Untuk informasi selengkapnya, lihat [Konfigurasikan kredensional pengguna untuk perangkat Windows](device-config-setup.md#configure-windows-user-for-idt).

### Kesalahan Guice dengan PreInstalled Greengrass
<a name="guice-errors"></a>

Saat menjalankan IDT dengan PreInstalled Greengrass, jika Anda mengalami kesalahan `Guice` `ErrorInCustomProvider` atau, periksa apakah file tersebut `userdata.json` telah `InstalledDirRootOnDevice` disetel ke folder instalasi Greengrass. IDT memeriksa file di `effectiveConfig.yaml` bawah`<InstallationDirRootOnDevice>/config/effectiveConfig.yaml`.

Untuk informasi selengkapnya, lihat [Konfigurasikan kredensional pengguna untuk perangkat Windows](device-config-setup.md#configure-windows-user-for-idt).

### Pengecualian tanda tangan tidak valid
<a name="invalid-signature-exception-lambda"></a>

Saat Anda menjalankan tes kualifikasi Lambda, Anda mungkin mengalami `invalidsignatureexception` kesalahan jika mesin host IDT Anda mengalami masalah akses jaringan. Setel ulang router Anda dan jalankan tes lagi. 

### Kesalahan kualifikasi machine learning
<a name="machine-learning-qualification-failure"></a>

Saat menjalankan pengujian kualifikasi machine learning (ML), Anda mungkin mengalami kegagalan kualifikasi jika perangkat Anda tidak memenuhi [persyaratan](dlr-component.md#dlr-component-requirements) untuk menerapkan komponen ML AWS yang disediakan. Untuk memecahkan masalah kesalahan kualifikasi ML, lakukan hal berikut: 
+ Cari rincian kesalahan dalam log komponen untuk komponen yang di-deploy selama uji coba. Log komponen terletak di direktori `<device-tester-extract-location>/results/<execution-id>/logs/<test-group-id>`.
+ Tambahkan argumen `-Dgg.persist=installed.software` ke file `test.json` untuk uji kasus yang gagal. File `test.json` terletak di `<device-tester-extract-location>/tests/GGV2Q_version directory. `

### Penerapan gagal Open Test Framework (OTF)
<a name="otf-deployment-failure"></a>

Jika pengujian OTF gagal menyelesaikan penerapan, kemungkinan penyebabnya adalah izin yang ditetapkan untuk folder induk dan. `TempResourcesDirOnDevice` `InstallationDirRootOnDevice` Untuk mengatur izin folder ini dengan benar, jalankan perintah berikut. Ganti `folder-name` dengan nama folder induk.

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

### Kesalahan parsing
<a name="parse-error"></a>

Kesalahan ketik dalam konfigurasi JSON dapat menyebabkan kesalahan parsing. Sering kali, masalah ini adalah akibat dari menghilangkan kurung, koma, atau tanda kutip dari file JSON Anda. IDT melakukan validasi JSON dan mencetak informasi debugging. IDT mencetak garis di mana kesalahan terjadi, nomor baris, dan nomor kolom kesalahan sintaks. Informasi ini seharusnya cukup untuk membantu Anda memperbaiki kesalahan, tetapi jika Anda masih tidak dapat menemukan kesalahan, Anda dapat melakukan validasi secara manual di IDE Anda, editor teks seperti Atom atau Sublime, atau melalui alat online seperti. JSONLint

### Kesalahan ditolak izin
<a name="permission-denied-pwd-sudo"></a>

IDT melakukan operasi pada berbagai direktori dan file dalam perangkat yang diuji. Beberapa operasi ini memerlukan akses akar. Untuk mengotomatisasi operasi ini, IDT harus dapat menjalankan perintah dengan sudo tanpa memasukkan kata sandi. 

Ikuti langkah-langkah ini untuk mengizinkan akses sudo tanpa mengetikkan kata sandi.

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

1. Gunakan **sudo usermod -aG sudo *<ssh-username>*** untuk menambahkan pengguna SSH Anda ke grup sudo.

1. Keluar, lalu masuk agar perubahan diterapkan.

1. Buka file `/etc/sudoers` dan tambahkan baris berikut ke akhir file: `<ssh-username> ALL=(ALL) NOPASSWD: ALL`
**catatan**  
Sebagai praktik terbaik, kami menyarankan Anda menggunakan **sudo visudo** saat Anda mengedit `/etc/sudoers`.

### Kesalahan pembuatan laporan kualifikasi
<a name="qualification-report-policy-error"></a>

IDT mendukung empat `major.minor` versi terbaru dari suite kualifikasi AWS IoT Greengrass V2 (GGV2Q) untuk menghasilkan laporan kualifikasi yang dapat Anda kirimkan AWS Partner Network untuk menyertakan perangkat Anda dalam Katalog AWS Partner Perangkat. Versi sebelumnya dari rangkaian kualifikasi ini tidak menghasilkan laporan kualifikasi.

Jika Anda memiliki pertanyaan tentang kebijakan dukungan, hubungi [AWS Dukungan](https://aws.amazon.com/contact-us/).

### Parameter yang diperlukan kehilangan kesalahan
<a name="required-param-missing"></a>

Ketika IDT menambahkan fitur baru, ia mungkin memperkenalkan perubahan pada file konfigurasi. Penggunaan file konfigurasi lama mungkin akan merusak konfigurasi Anda. Jika hal ini terjadi, file `<test_case_id>.log` di bawah `/results/<execution-id>/logs` secara eksplisit mencantumkan semua parameter yang hilang. IDT juga memvalidasi skema file konfigurasi JSON Anda untuk memverifikasi bahwa Anda menggunakan versi terbaru yang didukung.

### Pengecualian keamanan di macOS
<a name="security-exception-macos"></a>

Saat Anda menjalankan IDT di komputer host macOS, IDT memblokir IDT agar tidak berjalan. Untuk menjalankan IDT, berikan pengecualian keamanan ke executable yang merupakan bagian dari fungsionalitas runtime IDT. Saat Anda melihat tampilan pesan peringatan di komputer host Anda, lakukan hal berikut untuk setiap executable yang berlaku:

**Untuk memberikan pengecualian keamanan untuk executable IDT**

1. Di komputer macOS, pada menu Apple, buka **System** Preferences.

1. Pilih **Keamanan & Privasi**, kemudian pada tab **Umum**, pilih ikon kunci untuk membuat perubahan pada pengaturan keamanan.

1. Jika diblokir`devicetester_mac_x86-64`, cari pesan `"devicetester_mac_x86-64" was blocked from use because it is not from an identified developer.` dan pilih **Allow Anyway**.

1. Lanjutkan pengujian IDT, sampai Anda melewati semua executable yang terlibat.

### Kesalahan koneksi SSH
<a name="ssh-connect-errors"></a>

Ketika IDT tidak dapat terhubung ke perangkat yang diuji, ia mencatat kegagalan koneksi di `/results/<execution-id>/logs/<test-case-id>.log`. Pesan SSH muncul di bagian atas file log ini karena penyambungan ke perangkat yang diuji adalah salah satu operasi pertama yang dilakukan oleh IDT.

Sebagian besar konfigurasi Windows menggunakan aplikasi TTy terminal Pu untuk terhubung ke host Linux. Aplikasi ini mengharuskan Anda mengonversi file kunci privat PEM standar ke dalam format Windows berpemilik yang disebut PPK. Jika Anda mengonfigurasi SSH di `device.json`, gunakan file PEM. Jika Anda menggunakan file PPK, IDT tidak dapat membuat koneksi SSH dengan AWS IoT Greengrass perangkat dan tidak dapat menjalankan pengujian.

Dimulai dengan IDT v4.4.0, jika Anda belum mengaktifkan SFTP di perangkat yang sedang diuji, Anda mungkin melihat kesalahan berikut di file log.

```
SSH connection failed with EOF
```

Untuk mengatasi kesalahan ini, aktifkan SFTP di perangkat Anda.

### Kesalahan kualifikasi stream manager
<a name="stream-manager-qualification-failure"></a>

Ketika Anda menjalankan uji kualifikasi manajer pengaliran, Anda mungkin akan melihat kesalahan berikut di file `com.aws.StreamManagerExport.log`.

```
Failed to upload data to S3
```

Kesalahan ini dapat terjadi ketika pengelola aliran menggunakan AWS kredensional dalam `~/root/.aws/credentials` file di perangkat Anda, bukan menggunakan kredenal lingkungan yang diekspor IDT ke perangkat yang sedang diuji. Untuk mencegah masalah ini, hapus file `credentials` di perangkat Anda, dan jalankan kembali tes kualifikasi.

### Kesalahan batas waktu
<a name="test-timeout"></a>

Anda dapat meningkatkan batas waktu untuk setiap tes dengan menentukan pengganda batas waktu yang diterapkan ke nilai default dari setiap batas waktu tes. Nilai apa pun yang dikonfigurasi untuk bendera ini harus lebih besar dari atau sama dengan 1.0.

Untuk menggunakan pengganda batas waktu, gunakan bendera `--timeout-multiplier` saat menjalankan tes. Contoh:

```
./devicetester_linux run-suite --suite-id GGV2Q_1.0.0 --pool-id DevicePool1 --timeout-multiplier 2.5
```

Untuk informasi lebih lanjut, jalankan `run-suite --help`.

Beberapa kesalahan batas waktu terjadi ketika kasus uji IDT tidak dapat diselesaikan karena masalah konfigurasi. Anda tidak dapat mengatasi kesalahan ini dengan meningkatkan pengganda batas waktu. Gunakan log dari uji coba untuk memecahkan masalah konfigurasi yang mendasarinya. 
+ Jika log komponen MQTT atau Lambda berisi kesalahan`Access denied`, folder instalasi Greengrass Anda mungkin tidak memiliki izin file yang benar. Jalankan perintah berikut untuk setiap folder di jalur instalasi yang Anda tentukan dalam `userdata.json` file Anda. 

  ```
  sudo chmod 755 folder-name
  ```
+ Jika log Greengrass menunjukkan bahwa penerapan CLI Greengrass belum selesai, lakukan hal berikut:
  + Verifikasi `bash` yang diinstal pada perangkat yang sedang diuji. 
  + Jika `userdata.json` file Anda menyertakan parameter `GreengrassCliVersion` konfigurasi, hapus. Parameter ini tidak digunakan lagi di IDT v4.1.0 dan versi yang lebih baru. Untuk informasi selengkapnya, lihat [Konfigurasikan userdata.json](set-config.md#userdata-config).
+ Jika pengujian penerapan Lambda gagal dengan pesan kesalahan “Memvalidasi Lambda publish: time out” dan Anda menerima kesalahan dalam file log pengujian (`idt-gg2-lambda-function-idt-<resource-id>.log`) yang mengatakan, lakukan hal berikut: `Error: Could not find or load main class com.amazonaws.greengrass.runtime.LambdaRuntime.`
  + Verifikasi folder apa yang digunakan `InstallationDirRootOnDevice` dalam `userdata.json` file.
  + Pastikan izin pengguna yang benar diatur di perangkat Anda. Untuk detail selengkapnya, lihat [Mengonfigurasi izin pengguna di perangkat Anda](https://docs.aws.amazon.com/greengrass/v2/developerguide/device-config-setup.html#root-access).

### Kesalahan pemeriksaan versi
<a name="version-compatibility-check-failure"></a>

IDT mengeluarkan kesalahan berikut ketika kredensi AWS pengguna untuk pengguna IDT tidak memiliki izin IAM yang diperlukan. 

```
Failed to check version compatibility
```

 AWS Pengguna yang tidak memiliki izin IAM yang diperlukan. 