Penyelesaian masalah IDT untuk V2 AWS IoT Greengrass - AWS IoT Greengrass

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

Penyelesaian masalah IDT untuk V2 AWS IoT Greengrass

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

Di mana mencari kesalahan

Kesalahan tingkat tinggi ditampilkan di konsol saat pengujian sedang berjalan, dan ringkasan pengujian yang gagal ditampilkan saat semua pengujian selesai.awsiotdevicetester_report.xmlberisi 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_manager.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 inti AWS IoT Greengrass. IDT menyalin file ini dari perangkat yang diuji ketika menjalankan tes yang menginstal perangkat lunak inti AWS IoT Greengrass pada perangkat. Untuk informasi selengkapnya tentang pesan dalam file log ini, lihat Pemecahan masalah AWS IoT Greengrass V2.
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.

Menyelesaikan IDT untuk kesalahan V2 AWS IoT Greengrass

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.

Kesalahan resolusi alias

Saat Anda menjalankan suite pengujian khusus, Anda mungkin melihat kesalahan berikut di konsol dan ditest_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 bahwadevice.jsondanuserdata.json berisi informasi yang benar yang diperlukan untuk rangkaian pengujian Anda. Untuk informasi tentang konfigurasi yang diperlukan untukAWS IoT Greengrasskualifikasi, lihatKonfigurasikan pengaturan IDT untuk menjalankan rangkaian AWS IoT Greengrass kualifikasi.

Kesalahan konflik

Anda mungkin melihat kesalahan berikut ketika Anda menjalankan rangkaian kualifikasi AWS IoT Greengrass 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 uji bersamaan belum didukung untuk rangkaian kualifikasi AWS IoT Greengrass. Jalankan rangkaian kualifikasi secara berurutan untuk setiap perangkat.

Tidak dapat memulai kesalahan uji

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

Tes kualifikasi manajer aplikasi Docker menggunakanamazon/amazon-ec2-metadata-mockgambar 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

Saat menguji perangkat Windows, Anda mungkin menemukanFailed to read credentialkesalahan dalamgreengrass.logberkas 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.

Kesalahan Guice dengan PreInstalled Greengrass

Saat menjalankan IDT dengan PreInstalled Greengrass, jika Anda menemukan kesalahanGuiceatauErrorInCustomProvider, periksa apakah fileuserdata.jsonmemilikiInstalledDirRootOnDeviceatur ke folder instalasi Greengrass. IDT memeriksa fileeffectiveConfig.yamldi bawah<InstallationDirRootOnDevice>/config/effectiveConfig.yaml.

Untuk informasi selengkapnya, lihat Konfigurasikan kredensional pengguna untuk perangkat Windows.

Pengecualian tanda tangan tidak valid

Ketika Anda menjalankan tes kualifikasi Lambda, Anda mungkin menemukaninvalidsignatureexceptionkesalahan jika mesin host IDT Anda mengalami masalah akses jaringan. Setel ulang router Anda dan jalankan tes lagi.

Kesalahan kualifikasi machine learning

Saat menjalankan tes kualifikasi machine learning (ML), Anda mungkin mengalami kegagalan kualifikasi jika perangkat Anda tidak memenuhipersyaratanuntuk menyebarkanAWS-menyediakan komponen ML. 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)

Jika pengujian OTF gagal menyelesaikan penerapan, kemungkinan penyebabnya adalah izin yang ditetapkan untuk folder indukTempResourcesDirOnDevicedanInstallationDirRootOnDevice. Untuk mengatur izin folder ini dengan benar, jalankan perintah berikut. Gantifolder-namedengan nama folder induk.

sudo chmod 755 folder-name

Kesalahan parsing

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 akan 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

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.

  2. Keluar, lalu masuk agar perubahan diterapkan.

  3. 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

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

Jika Anda memiliki pertanyaan tentang kebijakan dukungan, hubungi AWS Support.

Parameter yang diperlukan kehilangan kesalahan

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

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, bukaPreferensi Sistem.

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

  3. Dalam kasus diblokirdevicetester_mac_x86-64, cari pesannya"devicetester_mac_x86-64" was blocked from use because it is not from an identified developer.dan pilihIzinkan Pokoknya.

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

Kesalahan koneksi SSH

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 terminal PuTTy 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 Anda dan tidak dapat menjalankan tes.

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

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 stream manager menggunakan kredensial AWS di file ~/root/.aws/credentials pada perangkat Anda dan tidak menggunakan kredensial lingkungan yang diekspor oleh IDT ke perangkat yang sedang diuji. Untuk mencegah masalah ini, hapus file credentials di perangkat Anda, dan jalankan kembali tes kualifikasi.

Kesalahan batas waktu

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. Misalnya:

./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 berisiAccess deniedkesalahan, folder instalasi Greengrass Anda mungkin tidak memiliki izin file yang benar. Jalankan perintah berikut untuk setiap folder di jalur instalasi yang Anda tentukan diuserdata.jsonberkas.

    sudo chmod 755 folder-name
  • Jika log Greengrass menunjukkan bahwa penerapan Greengrass CLI belum selesai, lakukan hal berikut:

    • Verifikasi bahwabashdiinstal pada perangkat yang sedang diuji.

    • Jika Andauserdata.jsonfile termasukGreengrassCliVersionparameter konfigurasi, hapus. Parameter ini tidak digunakan lagi di IDT v4.1.0 dan versi yang lebih baru. Untuk informasi selengkapnya, lihat Konfigurasikan userdata.json.

  • 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 mengatakanError: Could not find or load main class com.amazonaws.greengrass.runtime.LambdaRuntime., lakukan hal berikut:

Kesalahan pemeriksaan versi

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

Failed to check version compatibility

Pengguna AWS yang tidak memiliki izin IAM yang diperlukan.