Pemecahan Masalah AWS IoT Greengrass - AWS IoT Greengrass

AWS IoT Greengrass Version 1 memasuki fase umur panjang pada 30 Juni 2023. Untuk informasi selengkapnya, lihat kebijakan AWS IoT Greengrass V1 pemeliharaan. Setelah tanggal ini, tidak AWS IoT Greengrass V1 akan merilis pembaruan yang menyediakan fitur, penyempurnaan, perbaikan bug, atau patch keamanan. Perangkat yang berjalan AWS IoT Greengrass V1 tidak akan terganggu dan akan terus beroperasi dan terhubung ke cloud. Kami sangat menyarankan Anda bermigrasi ke AWS IoT Greengrass Version 2, yang menambahkan fitur baru yang signifikan dan dukungan untuk platform tambahan.

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

Pemecahan Masalah AWS IoT Greengrass

Bagian ini menyediakan informasi pemecahan masalah dan solusi yang mungkin untuk membantu menyelesaikan masalah dengan AWS IoT Greengrass.

Untuk informasi tentang AWS IoT Greengrass kuota (batas), lihat Service Quotas di. Referensi Umum Amazon Web Services

AWS IoT Greengrass Masalah core

Jika perangkat lunak Core AWS IoT Greengrass tidak memulai, cobalah langkah-langkah pemecahan masalah umum berikut ini:

Cari gejala dan error berikut untuk menemukan informasi untuk membantu memecahkan masalah dengan AWS IoT Greengrass core.

Masalah

 

Kesalahan: File konfigurasi hilang CaPath, CertPath atau KeyPath. <pid>Proses daemon Greengrass dengan [pid =] mati.

Solusi: Anda mungkin melihat kesalahan ini di crash.log ketika AWS IoT Greengrass perangkat lunak core tidak mulai. Hal ini dapat terjadi jika Anda menjalankan v1.6 atau sebelumnya. Lakukan salah satu dari cara berikut:

  • Upgade ke v1.7 atau lebih baru. Kami merekomendasikan bahwa Anda selalu menjalankan versi terbaru AWS IoT Greengrass perangkat lunak Core. Untuk informasi unduhan, lihat AWS IoT Greengrass Perangkat lunak Core.

  • Gunakan format config.json yang benar untuk AWS IoT Greengrass rersi perangkat lunak Core. Untuk informasi selengkapnya, lihat AWS IoT Greengrass file konfigurasi core.

    catatan

    Untuk menemukan versi AWS IoT Greengrass perangkat lunak core diinstal pada perangkat core, jalankan perintah berikut di terminal perangkat Anda.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd --version

 

Error: Gagal mengurai/<greengrass-root> /config/config.json.

Solusi: Anda mungkin melihat kesalahan ini ketika perangkat lunak Core AWS IoT Greengrass tidak mulai. Pastikan File konfigurasi Greengrass menggunakan format JSON yang valid.

Buka config.json (terletak di /greengrass-root/config) dan memvalidasi format JSON. Sebagai contoh, pastikan bahwa koma digunakan dengan benar.

 

Kesalahan: Terjadi kesalahan saat membuat konfigurasi TLS: UrisCheme ErrUnknown

Solusi: Anda mungkin melihat kesalahan ini ketika perangkat lunak Core AWS IoT Greengrass tidak mulai. Pastikan properti di Kripto bagian dari file konfigurasi Greengrass valid. Pesan error harus menyediakan informasi lebih lanjut.

Buka config.json (terletak di /greengrass-root/config) dan periksa crypto bagian. Sebagai contoh, sertifikat dan jalur kunci harus menggunakan format URI yang benar dan arahkan ke lokasi yang benar.

 

Error: Waktu aktif gagal untuk mulai: tidak dapat mulai pekerja: pengujian kontainer habis waktu.

Solusi: Anda mungkin melihat kesalahan ini ketika perangkat lunak Core AWS IoT Greengrass tidak mulai. Atur postStartHealthCheckTimeout properti di file konfigurasi Greengrass. Properti opsional ini mengonfigurasi jumlah waktu (dalam milidetik) yang Greengrass daemon menunggu pemeriksaan kondisi pasca-mulai untuk menyelesaikan. Nilai default adalah 30 detik (30000 ms).

Buka config.json (terletak di /greengrass-root/config). Di runtime objek, tambahkan postStartHealthCheckTimeout properti dan atur nilai ke nomor yang lebih besar dari 30000. Tambahkan koma di mana diperlukan untuk membuat dokumen JSON valid. Sebagai contoh:

... "runtime" : { "cgroup" : { "useSystemd" : "yes" }, "postStartHealthCheckTimeout" : 40000 }, ...

 

<address>Kesalahan: Gagal memanggil PutLogEvents di Cloudwatch lokal, LogGroup:/GreengrassSystem/connection_manager, kesalahan:: permintaan kirim gagal disebabkan oleh: Posting http RequestError://<path>/cloudwatch/logs/: dial tcp: getsockopt: koneksi ditolak, respons: {}.

Solusi: Anda mungkin melihat kesalahan ini ketika perangkat lunak Core AWS IoT Greengrass tidak mulai. Hal ini dapat terjadi jika Anda menjalankan AWS IoT Greengrass pada Raspberry Pi dan setup memori yang diperlukan belum selesai. Untuk informasi selengkapnya, lihat langkah ini.

 

<region><account-id><function-name><version><file-name>Kesalahan: Tidak dapat membuat server karena: gagal memuat grup: chmod/<greengrass-root>/ggc/deployment/lambda/arn:aws:lambda: ::function::/: tidak ada file atau direktori seperti itu.

Solusi: Anda mungkin melihat kesalahan ini ketika perangkat lunak Core AWS IoT Greengrass tidak mulai. Jika Anda men-deploy executable Lambda ke core, periksa fungsi properti Handler di file group.json ini (terletak di /greengrass-root/ggc/deployment/grup). Jika handler bukan nama yang tepat dari compiled executable Anda, ganti konten group.json file dengan obyek JSON kosong ({}), dan jalankan perintah berikut untuk mulai AWS IoT Greengrass:

cd /greengrass/ggc/core/ sudo ./greengrassd start

Kemudian, gunakan AWS Lambda API untuk memperbarui fungsi parameter handler konfigurasi, menerbitkan versi fungsi baru, dan update alias. Untuk informasi lebih lanjut, lihat AWS Lambda fungsi versioning dan aliases.

Dengan asumsi bahwa Anda menambahkan fungsi ke grup Greengrass Anda dengan alias (disarankan), Anda sekarang dapat men-deploy ulang grup Anda. (Jika tidak, Anda harus menunjuk ke versi fungsi baru atau alias dalam definisi grup dan langganan sebelum Anda men-deploy grup.)

 

Perangkat lunak Core AWS IoT Greengrass tidak mulai setelah Anda berubah dari berjalan tanpa kontainerisasi untuk berjalan dalam kontainer Greengrass.

Solusi: Periksa bahwa Anda tidak kehilangan kontainer dependensi apa pun.

 

error: Ukuran spool harus setidaknya 262144 byte.

Solusi: Anda mungkin melihat kesalahan ini ketika perangkat lunak Core AWS IoT Greengrass tidak mulai. Buka group.json file (terletak di /greengrass-root/ggc/deployment/group), ganti konten file dengan objek JSON kosong ({}), dan jalankan perintah berikut untuk meluncurkan AWS IoT Greengrass:

cd /greengrass/ggc/core/ sudo ./greengrassd start

Kemudian ikuti langkah-langkah di Untuk cache pesan di penyimpanan lokal prosedur. Untuk GGCloudSpooler fungsi, pastikan untuk menentukan GG_CONFIG_MAX_SIZE_BYTES nilai yang lebih dari atau sama dengan 262144.

 

Kesalahan: [KESALAHAN]-kesalahan olahpesan cloud: Terjadi kesalahan ketika mencoba menerbitkan pesan. {"errorString": "timed out operasi"}

Solusi: Anda mungkin melihat kesalahan ini di GGCloudSpooler.log ketika Greengrass core tidak dapat mengirim pesan MQTT ke AWS IoT Core. Hal ini dapat terjadi jika lingkungan core memiliki bandwidth terbatas dan latency tinggi. Jika Anda menjalankan AWS IoT Greengrass v1.10.2 atau yang lebih baru, coba tingkatkan nilai mqttOperationTimeout di file config.json ini. Jika properti tidak hadir, tambahkan nilai ke coreThing Objek. Sebagai contoh:

{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", ... }, ... }

Nilai default adalah 5 dan nilai minimum adalah 5.

 

<version>Kesalahan: container_linux.go: 344: memulai proses kontainer menyebabkan “process_linux.go: 424: container init disebabkan\" rootfs_linux.go:64: mounting\\\” /greengrass/ggc/socket/greengrass_ipc.sock\\\” ke rootfs\\\” /greengrass/ggc/packageses/ /rootfs/merged\\\” di\\\” /greengrass_ipc.sock\\\” disebabkan\\\ "stat /greengrass/ggc/socket/greengrass_ipc.sock: izin ditolak\\\"\ "”.

Solusi: Anda mungkin melihat kesalahan ini di runtime.log ketika AWS IoT Greengrass perangkat lunak Core tidak mulai. Hal ini terjadi jika umask lebih tinggi dari 0022. Untuk mengatasi masalah ini, Anda harus mengatur umask ke 0022 atau lebih rendah. Nilai 0022 memberikan semua orang izin baca ke file baru secara default.

 

error: Greengrass daemon berjalan dengan PID: <process-id>. Beberapa komponen sistem gagal untuk mulai. Periksa 'runtime.catatan' untuk error.

Solusi: Anda mungkin melihat kesalahan ini ketika perangkat lunak Core AWS IoT Greengrass tidak mulai. Periksa runtime.log dan crash.log untuk informasi error spesifik. Untuk informasi selengkapnya, lihat Pemecahan masalah dengan catatan.

 

Bayangan perangkat tidak sinkron dengan cloud.

Solusi: Pastikan bahwa AWS IoT Greengrass memiliki izin untuk tindakan iot:UpdateThingShadow dan iot:GetThingShadow di peran layanan Greengrass. Jika peran layanan menggunakan AWSGreengrassResourceAccessRolePolicy kebijakan terkelola, izin ini disertakan secara default.

Lihat Memecahkan masalah timeout sinkronisasi bayangan.

 

ERROR: tidak dapat menerima koneksi TCP. menerima tcp [::]:8000 accept4: terlalu banyak file terbuka.

Solusi: Anda mungkin melihat kesalahan ini di greengrassd output skrip. Hal ini dapat terjadi jika batas file descriptor untuk AWS IoT Greengrass perangkat lunak core telah mencapai ambang batas dan harus ditingkatkan.

Gunakan perintah berikut ini dan kemudian restart AWS IoT Greengrass perangkat lunak Core.

ulimit -n 2048
catatan

Dalam contoh ini, batas meningkat menjadi 2048. Pilih nilai yang sesuai untuk kasus penggunaan Anda.

 

Error: error eksekusi waktu aktif: tidak dapat memulai kontainer lambda. container_linux.go: 259: memulai proses kontainer disebabkan "process_linux.go:345: container init disebabkan\"rootfs_linux.go:50: mempersiapkan rootfs disebabkan \\\ "izin ditolak\\\"\"".

Solusi: Baik instal AWS IoT Greengrass langsung di bawah direktori root, atau pastikan bahwa direktori di mana AWS IoT Greengrass perangkat lunak core diinstal dan direktori induknya memiliki execute izin untuk semua orang.

 

Peringatan: [PERINGATAN] - [5] GK Remote: Kesalahan mengambil data kunci publik: ErrPrincipalNotConfigured: kunci pribadi untuk tidak MqttCertificate disetel.

Solusi: AWS IoT Greengrass gunakan handler umum untuk memvalidasi properti dari semua prinsip keamanan. Peringatan ini di runtime.log diharapkan kecuali Anda menentukan kunci pribadi khusus untuk server MQTT lokal. Untuk informasi selengkapnya, lihat AWS IoT Greengrass prinsip keamanan inti.

 

<account-id><role-name><region>Kesalahan: Izin ditolak saat mencoba menggunakan peran arn:aws:iam: ::role/ untuk mengakses url s3 https://-greengrass-updates.s3. <region><architecture><distribution-version>.amazonaws.com/core/ /greengrass-core- .tar.gz.

Solusi: Anda mungkin melihat kesalahan ini ketika pembaruan over-the-air (OTA) gagal. Dalam kebijakan peran signer, tambahkan target Wilayah AWS sebagai Resource. Peran signer ini digunakan untuk presign S3 URL untuk AWS IoT Greengrass memperbarui perangkat lunak. Untuk informasi selengkapnya, lihat. Peran signer URL S3.

 

Core AWS IoT Greengrass dikonfigurasikan untuk menggunakan proksi jaringan dan fungsi Lambda Anda tidak dapat membuat koneksi keluar.

Solusi: Tergantung pada waktu aktif dan executable yang digunakan oleh fungsi Lambda untuk membuat koneksi, Anda mungkin juga menerima error timeout koneksi. Pastikan fungsi Lambda anda menggunakan konfigurasi proksi yang sesuai untuk menyambung melalui proksi rangkaian. AWS IoT Greengrass melewati konfigurasi proksi ke fungsi Lambda yang ditetapkan pengguna melalui http_proxy, https_proxy, dan no_proxy variabel lingkungan. Mereka dapat diakses seperti yang ditunjukkan dalam potongan Python berikut.

import os print(os.environ['http_proxy'])

Gunakan kasus yang sama seperti variabel didefinisikan dalam lingkungan Anda, misalnya, semua huruf kecil http_proxy atau semua huruf besar HTTP_PROXY. Untuk variabel ini, AWS IoT Greengrass mendukung keduanya.

catatan

Perpustakaan yang paling umum digunakan untuk membuat koneksi (seperti boto3 atau cURL dan paket requests python) menggunakan variabel lingkungan ini secara default.

 

Core adalah dalam loop connect-disconnect yang tak terbatas. File runtime.log berisi serangkaian kontinyu entri menghubungkan dan memutuskan.

Solusi: Hal ini dapat terjadi ketika perangkat lain hard-coded untuk menggunakan nama hal core sebagai ID klien untuk koneksi MQTT ke AWS IoT. Sambungan serentak yang sama Wilayah AWS dan Akun AWS harus menggunakan ID klien yang unik. Secara default, core menggunakan nama hal core yang sama sebagai ID klien untuk koneksi ini.

Untuk mengatasi masalah ini, Anda dapat mengubah ID klien yang digunakan oleh perangkat lain untuk sambungan (disarankan) atau menimpa nilai default untuk core.

Untuk menimpa ID klien default untuk perangkat core
  1. Jalankan perintah berikut untuk menghentikan Greengrass daemon:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Buka greengrass-root/config/config.json untuk diedit sebagai pengguna su.

  3. Di coreThing objek, tambahkan coreClientId properti, dan atur nilai untuk ID klien khusus Anda. Nilainya harus antara 1 sampai 128 karakter. Itu harus unik dalam arus Wilayah AWS untuk Akun AWS.

    "coreClientId": "MyCustomClientId"
  4. Mulai daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

Error: tidak dapat memulai kontainer lambda. container_linux.go:259: memulai proses kontainer disebabkan "process_linux.go:345: container init disebabkan \"rootfs_linux.go: 62: mounting\\\ "proc\\\" to rootfs\\\"

Solusi: Pada beberapa platform, Anda mungkin melihat kesalahan ini di runtime.log ketika AWS IoT Greengrass mencoba untuk me-mount /proc sistem file untuk membuat kontainer Lambda. Atau, Anda mungkin melihat kesalahan serupa, seperti operation not permitted atau EPERM. Error ini dapat terjadi bahkan jika pengujian berjalan pada platform oleh dependensi checker skrip lulus.

Cobalah salah satu solusi berikut:

  • Aktifkan CONFIG_DEVPTS_MULTIPLE_INSTANCES opsi di kernel Linux.

  • Set /proc opsi mount pada host untuk rw,relatim saja.

  • Upgrade kernel Linux menjadi 4.9 atau yang lebih baru.

catatan

Masalah ini tidak terkait dengan pemasangan /proc untuk akses sumber daya lokal.

 

[ERROR]-error ekseskusi waktu aktif: tidak dapat memulai kontainer lambda. {"errorString": "gagal menginisialisasi pemasangan kontainer: gagal untuk menutupi root greengrass di overlay dir atas: gagal membuat perangkat mask pada direktori <ggc-path>: file ada"}

Solusi: Anda mungkin melihat kesalahan ini di runtime.catatan saat deployment gagal. Error ini terjadi jika fungsi Lambda di grup AWS IoT Greengrass tidak dapat mengakses direktori /usr dalam sistem file core.

Untuk mengatasi masalah ini, tambahkan sumber daya volume lokal ke grup dan kemudian men-deploy grup. Sumber daya ini harus:

  • Tentukan /usr sebagai Jalur sumber dan Jalur tujuan.

  • Secara otomatis menambahkan izin grup OS dari grup Linux yang memiliki sumber daya.

  • Berafiliasi dengan fungsi Lambda dan mengizinkan akses hanya baca.

 

[ERROR] -Penerapan gagal. {"deploymentID”: <deployment-id>"“, “errorString”: “proses pengujian kontainer dengan <pid>pid gagal: status proses kontainer: status keluar 1"}

Solusi: Anda mungkin melihat kesalahan ini di runtime.catatan saat deployment gagal. Error ini terjadi jika fungsi Lambda di grup AWS IoT Greengrass tidak dapat mengakses direktori /usr dalam sistem file core.

Anda dapat mengkonfirmasi bahwa ini adalah kasus dengan memeriksa GGCanary.log untuk error tambahan. Jika fungsi Lambda tidak dapat mengakses /usr direktori, GGCanary.log akan berisi error berikut:

[ERROR]-standard_init_linux.go:207: exec user process caused "no such file or directory"

Untuk mengatasi masalah ini, tambahkan sumber daya volume lokal ke grup dan kemudian men-deploy grup. Sumber daya ini harus:

  • Tentukan /usr sebagai Jalur sumber dan Jalur tujuan.

  • Secara otomatis menambahkan izin grup OS dari grup Linux yang memiliki sumber daya.

  • Berafiliasi dengan fungsi Lambda dan mengizinkan akses hanya baca.

 

Solusi: Anda mungkin melihat kesalahan ini di runtime.log ketika file AWS IoT Greengrass perangkat lunak core tidak mulai. Masalah ini mungkin lebih umum pada sistem operasi Debian.

Untuk mengatasi masalah ini, lakukan solusi berikut:

  1. Upgrade AWS IoT Greengrass perangkat lunak Core ke v1.9.3 atau yang lebih baru. Ini akan secara otomatis mengatasi masalah ini.

  2. Jika Anda masih mendapatkan error ini setelah Anda memperbarui AWS IoT Greengrass perangkat lunak Core, mengatur system.useOverlayWithTmpfs properti ke true di file config.json ini.

    contoh Contoh
    { "system": { "useOverlayWithTmpfs": true }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }
catatan

Versi perangkat lunak core AWS IoT Greengrass Anda ditampilkan dalam pesan error. Untuk menemukan versi kernel Linux Anda, jalankan uname -r.

 

Error: [DEBUG]-Gagal untuk mendapatkan rute. Membuang pesan.

Solusi: Periksa langganan di grup Anda dan pastikan bahwa langganan tercantum dalam [DEBUG] pesan yang ada.

 

Error: [Errno 24] Terlalu banyak membuka <lambda-function>, [Errno 24] Terlalu banyak membuka file

Solusi: Anda mungkin melihat kesalahan ini di berkas log fungsi Lambda Anda jika fungsi instantiates StreamManagerClient dalam fungsi handler. Kami merekomendasikan bahwa Anda membuat klien di luar handler. Untuk informasi selengkapnya, lihat Gunakan StreamManagerClient untuk bekerja dengan aliran.

 

Kesalahan: server ds gagal mulai mendengarkan soket: dengarkan unix <ggc-path>/ggc/socket/greengrass_ipc.sock: bind: argumen tidak valid

Solusi: Anda mungkin melihat kesalahan ini ketika perangkat lunak AWS IoT Greengrass Core tidak dimulai. Kesalahan ini terjadi ketika perangkat lunak AWS IoT Greengrass Core diinstal ke folder dengan jalur file yang panjang. Instal ulang perangkat lunak AWS IoT Greengrass Core ke folder dengan jalur file yang memiliki kurang dari 79 byte, jika Anda tidak menggunakan direktori tulis, atau 83 byte, jika Anda menggunakan direktori tulis.

[INFO] (Mesin Fotokopi) aws.greengrass. StreamManager: stdout. Disebabkan oleh: com.fasterxml.jackson.databind. JsonMappingException: Instan melebihi minimum atau maksimum instan

Saat Anda memutakhirkan perangkat lunak AWS IoT Greengrass inti ke v1.11.3, Anda mungkin melihat kesalahan berikut di log pengelola aliran jika pengelola aliran gagal memulai.

2021-07-16T00:54:58.568Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: com.fasterxml.jackson.databind.JsonMappingException: Instant exceeds minimum or maximum instant (through reference chain: com.amazonaws.iot.greengrass.streammanager.export.PersistedSuccessExportStatesV1["lastExportTime"]). {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING} 2021-07-16T00:54:58.579Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: java.time.DateTimeException: Instant exceeds minimum or maximum instant. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING}

Jika Anda menggunakan versi perangkat lunak AWS IoT Greengrass inti yang lebih lama dari v1.11.3, dan Anda ingin meningkatkan ke versi yang lebih baru, gunakan pembaruan OTA untuk meningkatkan ke v1.11.4.

GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key

Ketika Anda menjalankan perangkat apt update di mana Anda menginstal perangkat lunak AWS IoT Greengrass inti dari repositori APT, Anda mungkin melihat kesalahan berikut.

Err:4 https://dnw9lb6lzp2d8.cloudfront.net stable InRelease The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key Reading package lists... Done W: GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key

Kesalahan ini terjadi karena AWS IoT Greengrass tidak lagi menawarkan opsi untuk menginstal atau memperbarui perangkat lunak AWS IoT Greengrass inti dari repositori APT. Agar berhasil dijalankanapt update, hapus AWS IoT Greengrass repositori dari daftar sumber perangkat.

sudo rm /etc/apt/sources.list.d/greengrass.list sudo apt update

Masalah deployment

Gunakan informasi berikut untuk membantu memecahkan masalah deployment.

Masalah

 

Deployment Anda saat ini tidak bekerja dan Anda ingin kembali ke deployment kerja sebelumnya.

Solusi: Gunakan konsol AWS IoT atau API AWS IoT Greengrass untuk men-deploy ulang deployment kerja sebelumnya. Ini men-deploy versi grup yang sesuai ke perangkat core Anda.

Untuk men-deploy ulang deployment (konsol)
  1. Pada halaman konfigurasi grup, pilih tab Deployment. Halaman ini menampilkan riwayat penerapan untuk grup, termasuk tanggal dan waktu, versi grup, dan status setiap upaya deployment.

  2. Temukan baris yang berisi deployment Anda ingin men-deploy ulang. Pilih penyebaran yang ingin Anda gunakan kembali dan pilih Redeploy.

    Halaman deployment menampilkan tindakan Re-Deploy untuk deployment.
Untuk men-deploy ulang deployment (CLI)
  1. Gunakan ListDeploymentsuntuk menemukan ID penerapan yang ingin Anda gunakan kembali. Sebagai contoh:

    aws greengrass list-deployments --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7

    Perintah mengembalikan daftar deployment untuk grup.

    { "Deployments": [ { "DeploymentId": "8d179428-f617-4a77-8a0c-3d61fb8446a6", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2:123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/8dd1d899-4ac9-4f5d-afe4-22de086efc62", "CreatedAt": "2019-07-01T20:56:49.641Z" }, { "DeploymentId": "f8e4c455-8ac4-453a-8252-512dc3e9c596", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/4ad66e5d-3808-446b-940a-b1a788898382", "CreatedAt": "2019-07-01T20:41:47.048Z" }, { "DeploymentId": "e4aca044-bbd8-41b4-b697-930ca7c40f3e", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/1f3870b6-850e-4c97-8018-c872e17b235b", "CreatedAt": "2019-06-18T15:16:02.965Z" } ] }
    catatan

    Ini AWS CLI menggunakan nilai contoh untuk ID grup dan deployment. Ketika Anda menjalankan perintah, pastikan untuk mengganti nilai contoh.

  2. Gunakan CreateDeploymentuntuk menerapkan kembali penyebaran target. Atur jenis deployment ke Redeployment. Sebagai contoh:

    aws greengrass create-deployment --deployment-type Redeployment \ --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7 \ --deployment-id f8e4c455-8ac4-453a-8252-512dc3e9c596

    Perintah mengembalikan ARN dan ID dari deployment baru.

    { "DeploymentId": "f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2", "DeploymentArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/deployments/f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2" }
  3. Gunakan GetDeploymentStatusuntuk mendapatkan status penyebaran.

 

Anda melihat 403 error terlarang pada deployment di catatan.

Solusi: Pastikan kebijakan AWS IoT Greengrass core di cloud termasuk "greengrass:*" sebagai tindakan yang diizinkan.

 

Terjadi ConcurrentDeployment kesalahan saat Anda menjalankan perintah create-deployment untuk pertama kalinya.

Solusi: Sebuah deployment mungkin sedang berjalan. Anda dapat menjalankan get-deployment-statusuntuk melihat apakah penerapan telah dibuat. Jika tidak, coba membuat deployment lagi.

 

Error: Greengrass tidak berwenang untuk menganggap peran layanan yang terkait dengan akun ini, atau error: Gagal: peran layanan TES tidak terkait dengan akun ini.

Solusi: Anda mungkin melihat kesalahan ini ketika deployment gagal. Periksa apakah peran layanan Greengrass dikaitkan dengan Akun AWS Anda saat ini Wilayah AWS. Untuk informasi lebih lanjut, lihat Mengelola peran layanan Greengrass (CLI) atau Mengelola peran layanan Greengrass (konsol).

 

Error: tidak dapat menjalankan langkah pengunduhan dalam deployment. error saat mengunduh: error saat mengunduh file definisi Grup:... x509: sertifikat telah kedaluwarsa atau belum valid

Solusi: Anda mungkin melihat kesalahan ini di runtime.log ketika deployment gagal. Jika Anda menerima Deployment failed error yang berisi pesan x509: certificate has expired or is not yet valid, periksa jam perangkat. Sertifikat TLS dan X.509 memberikan dasar yang aman untuk membangun sistem IoT, tetapi mereka memerlukan waktu yang akurat pada server dan klien. Perangkat IoT harus memiliki waktu yang benar (dalam waktu 15 menit) sebelum mereka mencoba untuk terhubung ke AWS IoT Greengrass atau layanan TLS lain yang menggunakan sertifikat server. Untuk informasi selengkapnya, lihat Menggunakan Waktu Perangkat untuk Validasi AWS IoT Sertifikat Server pada Internet of Things pada AWS Blog Resmi.

 

Deployment tidak selesai.

Solusi: Lakukan hal berikut:

  • Pastikan bahwa AWS IoT Greengrass daemon berjalan pada perangkat core Anda. Di terminal perangkat core Anda, jalankan perintah berikut untuk memeriksa apakah daemon sedang berjalan dan memulainya, jika diperlukan.

    1. Untuk memeriksa apakah daemon sedang berjalan:

      ps aux | grep -E 'greengrass.*daemon'

      Jika outputnya berisi entri root untuk /greengrass/ggc/packages/1.11.6/bin/daemon, maka daemon sedang berjalan.

      Versi di jalur tergantung pada versi perangkat lunak AWS IoT Greengrass core yang diinstal pada perangkat core Anda.

    2. Untuk mulai daemon:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  • Pastikan bahwa perangkat core terhubung dan titik akhir koneksi core terkonfigurasi dengan benar.

 

Kesalahan: Tidak dapat menemukan executable java atau java8, atau kesalahan: Penerapan <deployment-id>tipe NewDeployment untuk grup <group-id>gagal kesalahan: pekerja dengan <worker-id>gagal menginisialisasi dengan alasan Versi Java yang diinstal harus lebih besar dari atau sama dengan 8

Solusi: Jika pengelola aliran diaktifkan untuk AWS IoT Greengrass core, Anda harus menginstal waktu aktif Java 8 pada perangkat core sebelum Anda men-deploy grup. Untuk informasi selengkapnya, lihat persyaratan untuk pengelola aliran. Pengelola aliran diaktifkan secara default ketika Anda menggunakan Pembuatan Grup default alur kerja di konsol AWS IoT tersebut untuk membuat grup.

Atau, nonaktifkan pengelola aliran dan kemudian men-deploy grup. Untuk informasi selengkapnya, lihat Konfigurasikan pengaturan pengelola pengaliran (konsol).

 

Deployment tidak selesai, dan runtime.catatan berisi beberapa entri "tunggu 1 detik untuk kontainer untuk berhenti".

Solusi: Jalankan perintah berikut di terminal perangkat core Anda untuk me-restart AWS IoT Greengrass daemon.

cd /greengrass/ggc/core/ sudo ./greengrassd stop sudo ./greengrassd start

 

Deployment tidak selesai, dan runtime.log berisi "[KESALAHAN]-Greengrass deployment error: gagal melaporkan status deployment kembali ke cloud {"deploymentId": "<deployment-id>", "errorString": "Failed to initiate PUT, endpoint: https://<deployment-status>, error: Put https://<deployment-status>: proxyconnect tcp: x509: certificate signed by unknown authority"}"

Solusi: Anda mungkin melihat kesalahan ini di runtime.log ketika Greengrass core dikonfigurasi untuk menggunakan koneksi proksi HTTPS dan rantai sertifikat server proksi tidak dipercaya pada sistem. Untuk mencoba mengatasi masalah ini, tambahkan rantai sertifikat ke root sertifikat CA. Greengrass core menambahkan sertifikat dari file ini ke kolam sertifikat yang digunakan untuk otentikasi koneksi TLS di HTTPS dan MQTT dengan AWS IoT Greengrass.

Contoh berikut menunjukkan sertifikat CA server proksi ditambahkan ke file root sertifikat CA:

# My proxy CA -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIQWgIVAMHSAzWG/5YVRYtRQOxXUTEpHuEmApzGCSqGSIb3DQEK \nCwUAhuL9MQswCQwJVUzEPMAVUzEYMBYGA1UECgwP1hem9uLmNvbSBJbmMuMRww ... content of proxy CA certificate ... +vHIRlt0e5JAm5\noTIZGoFbK82A0/nO7f/t5PSIDAim9V3Gc3pSXxCCAQoFYnui GaPUlGk1gCE84a0X\n7Rp/lND/PuMZ/s8YjlkY2NmYmNjMCAXDTE5MTEyN2cM216 gJMIADggEPADf2/m45hzEXAMPLE= -----END CERTIFICATE----- # Amazon Root CA 1 -----BEGIN CERTIFICATE----- MIIDQTCCAimgF6AwIBAgITBmyfz/5mjAo54vB4ikPmljZKyjANJmApzyMZFo6qBg ADA5MQswCQYDVQQGEwJVUzEPMA0tMVT8QtPHRh8jrdkGA1UEChMGDV3QQDExBBKW ... content of root CA certificate ... o/ufQJQWUCyziar1hem9uMRkwFwYVPSHCb2XV4cdFyQzR1KldZwgJcIQ6XUDgHaa 5MsI+yMRQ+hDaXJiobldXgjUka642M4UwtBV8oK2xJNDd2ZhwLnoQdeXeGADKkpy rqXRfKoQnoZsG4q5WTP46EXAMPLE -----END CERTIFICATE-----

Secara default, file root sertifikat CA terletak di /greengrass-root/certs/root.ca.pem. Untuk menemukan lokasi di perangkat core, periksa properti crypto.caPath di config.json.

catatan

greengrass-root mewakili jalur di mana AWS IoT Greengrass perangkat lunak core diinstal pada perangkat Anda. Biasanya, adalah direktori /greengrass ini.

 

<path>Kesalahan: <deployment-id>Penerapan tipe NewDeployment untuk grup <group-id>gagal kesalahan: Kesalahan saat memproses. konfigurasi grup tidak valid: 112 atau [119 0] tidak memiliki izin rw pada file:.

Solusi: Pastikan bahwa grup pemilik <path> direktori memiliki izin baca dan tulis ke direktori.

 

Kesalahan: < list-of-function-arns > dikonfigurasi untuk berjalan sebagai root tetapi Greengrass tidak dikonfigurasi untuk menjalankan fungsi Lambda dengan izin root.

Solusi: Anda mungkin melihat kesalahan ini di runtime.log ketika deployment gagal. Pastikan bahwa Anda telah mengonfigurasi AWS IoT Greengrass untuk mengizinkan fungsi Lambda berjalan dengan izin root. Baik mengubah nilai allowFunctionsToRunAsRoot masuk greengrass_root/config/config.json ke yes atau mngubah fungsi Lambda agar berjalan sebagai pengguna/group lain. Untuk informasi selengkapnya, lihat Menjalankan fungsi Lambda sebagai root.

 

Kesalahan: <deployment-id>Penerapan tipe NewDeployment untuk grup <group-id>gagal kesalahan: Kesalahan penerapan Greengrass: tidak dapat menjalankan langkah unduhan dalam penerapan. kesalahan saat memproses: tidak dapat memuat file grup yang diunduh: tidak dapat menemukan UID berdasarkan nama pengguna, UserName: ggc_user: user: unknown user ggc_user.

Solusi: Jika identitas akses default dari AWS IoT Greengrass grup menggunakan akun sistem standar, ggc_user pengguna dan ggc_group grup harus hadir pada perangkat. Untuk petunjuk yang menunjukkan cara menambahkan pengguna dan grup, lihat langkah ini. Pastikan untuk memasukkan nama persis seperti yang ditunjukkan.

 

Error: [ERROR]-error eksekusi waktu aktif: tidak dapat meluncurkan kontainer lambda. {"ErrorString": "gagal menginisialisasi pemasangan kontainer: gagal untuk menutupi root greengrass di overlay dir atas: gagal membuat perangkat mask pada direktori <ggc-path>: file ada"}

Solusi: Anda mungkin melihat kesalahan ini di runtime.log ketika deployment gagal. error ini terjadi jika fungsi Lambda dalam grup Greengrass tidak dapat mengakses direktori /usr dalam sistem file core. Untuk mengatasi masalah ini, tambahkan sumber daya volume lokal ke grup dan kemudian men-deploy grup. Sumber daya harus:

  • Tentukan /usr sebagai Jalur sumber dan Jalur tujuan.

  • Secara otomatis menambahkan izin grup OS dari grup Linux yang memiliki sumber daya.

  • Berafiliasi dengan fungsi Lambda dan mengizinkan akses hanya baca.

 

Kesalahan: Penerapan <deployment-id>tipe NewDeployment untuk grup <group-id>gagal kesalahan: proses mulai gagal: container_linux.go: 259: memulai proses kontainer menyebabkan “process_linux.go: 250: menjalankan exec setns process for init caused\" wait: no child processes\ "”.

Solusi: Anda mungkin melihat kesalahan ini ketika deployment gagal. Coba lagi deployment.

 

<host-prefix>Kesalahan: [PERINGATAN] -MQTT [klien] panggil tcp: lookup -ats.iot. <region>.amazonaws.com: tidak ada host seperti itu... [ERROR]-Greengrass deployment error: gagal melaporkan status deployment kembali ke cloud ... net/http: permintaan dibatalkan saat menunggu koneksi (Client.Timeout terlampaui saat menunggu header)

Solusi: Anda mungkin melihat kesalahan ini jika Anda menggunakan systemd-resolved, yang memungkinkan DNSSEC pengaturan secara default. Akibatnya, banyak domain publik tidak dikenali. Upaya untuk mencapai titik akhir AWS IoT Greengrass gagal untuk menemukan host, sehingga penyebaran Anda tetap dalam status In Progress ini.

Anda dapat menggunakan perintah berikut dan output untuk menguji masalah ini. Ganti placeholder wilayah di titik akhir dengan Wilayah AWS.

$ ping greengrass-ats.iot.region.amazonaws.com ping: greengrass-ats.iot.region.amazonaws.com: Name or service not known
$ systemd-resolve greengrass-ats.iot.region.amazonaws.com greengrass-ats.iot.region.amazonaws.com: resolve call failed: DNSSEC validation failed: failed-auxiliary

Satu penyelesaian yang mungkin adalah menonaktifkan DNSSEC. Ketika DNSSEC adalah false, pencarian DNS tidak DNSSEC divalidasi. Untuk informasi selengkapnya, lihat masalah masalah diketahui untuk systemd.

  1. Tambahkan DNSSEC=false ke /etc/systemd/resolved.conf.

  2. Mulai ulang systemd-resolved.

Untuk informasi tentang resolved.conf dan DNSSEC, jalankan man resolved.conf di terminal Anda.

 

Buat grup dan buat masalah fungsi

Gunakan informasi berikut untuk membantu memecahkan masalah dengan membuat AWS IoT Greengrass grup atau fungsi Greengrass Lambda.

 

Kesalahan: Konfigurasi IsolationMode '' Anda untuk grup tidak valid.

Solusi: error ini terjadi ketika IsolationMode nilai dalam DefaultConfig dari function-definition-version tidak didukung. Nilai yang didukung adalah GreengrassContainer dan NoContainer.

 

Kesalahan: Konfigurasi 'IsolationMode' Anda untuk fungsi dengan arn <function-arn>tidak valid.

Solusi: error ini terjadi ketika IsolationMode nilai <function-arn> dalam function-definition-version tidak didukung. Nilai yang didukung adalah GreengrassContainer dan NoContainer.

 

Kesalahan: MemorySize konfigurasi untuk fungsi dengan arn <function-arn>tidak diperbolehkan di IsolationMode =NoContainer.

Solusi: error ini terjadi saat Anda menentukan MemorySize nilai dan Anda memilih untuk menjalankan tanpa kontainerisasi. Fungsi Lambda yang dijalankan tanpa kontainerisasi tidak dapat memiliki batas memori. Anda dapat menghapus batas atau Anda dapat mengubah fungsi Lambda untuk menjalankan di AWS IoT Greengrass kontainer.

 

Kesalahan: Akses konfigurasi Sysfs untuk fungsi dengan arn <function-arn>tidak diperbolehkan di =. IsolationMode NoContainer

Solusi: Error ini terjadi saat Anda menentukan true untuk AccessSysfs dan Anda memilih untuk menjalankan tanpa kontainerisasi. Fungsi Lambda berjalan tanpa containerization harus memiliki kode mereka diperbarui untuk mengakses sistem file secara langsung dan tidak dapat menggunakan AccessSysfs. Anda dapat menentukan nilai false untuk AccessSysfs atau Anda dapat mengubah fungsi Lambda agar berjalan di AWS IoT Greengrass kontainer.

 

Kesalahan: MemorySize konfigurasi untuk fungsi dengan arn <function-arn>diperlukan di IsolationMode =GreengrassContainer.

Solusi: Error ini terjadi karena Anda tidak menentukan MemorySize batas untuk fungsi Lambda yang Anda jalankan di AWS IoT Greengrass kontainer. Tentukan nilai MemorySize untuk mengatasi error.

 

Kesalahan: Fungsi <function-arn>mengacu pada sumber daya tipe <resource-type>yang tidak diperbolehkan di IsolationMode =NoContainer.

Solusi: Anda tidak dapat mengakses Local.Device, Local.Volume, ML_Model.SageMaker.Job, ML_Model.S3_Object, atau S3_Object.Generic_Archive jenis sumber daya ketika Anda menjalankan fungsi Lambda tanpa kontainerisasi. Jika Anda membutuhkan jenis sumber daya tersebut, Anda harus menjalankan di AWS IoT Greengrass kontainer. Anda juga dapat mengakses perangkat lokal secara langsung ketika berjalan tanpa kontainerisasi dengan mengubah kode di fungsi Lambda Anda.

 

Error: Konfigurasi eksekusi untuk fungsi dengan arn <function-arn> tidak diizinkan.

Solusi: Error ini terjadi saat Anda membuat fungsi sistem Lambda dengan GGIPDetector atau GGCloudSpooler dan Anda tentukan IsolationMode atau RunAs konfigurasi. Anda harus menghilangkan Execution parameter untuk sistem fungsi Lambda ini.

 

Masalah Penemuan

Informasi berikut dapat membantu Anda memecahkan masalah dengan AWS IoT Greengrass layanan Penemuan.

 

Error: Perangkat adalah anggota dari terlalu banyak grup, perangkat mungkin tidak berada di lebih dari 10 grup

Solusi: Ini adalah batasan yang diketahui. Perangkat klien dapat menjadi anggota hingga 10 grup.

 

Masalah sumber daya machine learning

Gunakan informasi berikut untuk membantu memecahkan masalah dengan sumber daya machine learning.

 

InvalidML ModelOwner - GroupOwnerSetting disediakan dalam sumber daya model ML, tetapi GroupOwner atau GroupPermission tidak ada

Solusi: Anda menerima kesalahan ini jika sumber pembelajaran mesin berisi ResourceDownloadOwnerSettingobjek tetapi diperlukan GroupOwner atau GroupPermission properti tidak ditentukan. Untuk mengatasi masalah ini, tentukan properti yang hilang.

 

NoContainer fungsi tidak dapat mengonfigurasi izin saat melampirkan sumber daya Machine Learning. <function-arn>mengacu pada sumber daya Machine Learnin <resource-id>dengan izin <ro/rw> dalam kebijakan akses sumber daya.

Solusi: Anda menerima error ini jika fungsi Lambda non-containerized menentukan tingkat fungsi izin untuk sumber daya machine learning. Fungsi non-wadah harus mewarisi izin dari izin pemilik sumber daya yang ditetapkan pada sumber daya machine learning. Untuk mengatasi masalah ini, pilih untuk mewarisi izin pemilik sumber daya (konsol) atau menghapus izin dari fungsi Lambda sumber daya kebijakan akses (API).

 

Fungsi <function-arn>mengacu pada sumber daya Machine Learning <resource-id>dengan izin yang hilang di keduanya ResourceAccessPolicy dan sumber daya OwnerSetting.

Solusi: Anda menerima kesa ini jika izin untuk sumber daya machine learning tidak dikonfigurasi untuk fungsi Lambda terlampir atau sumber daya. Untuk mengatasi masalah ini, konfigurasikan izin di ResourceAccessPolicyproperti untuk fungsi Lambda atau properti untuk OwnerSettingsumber daya.

 

Fungsi <function-arn>mengacu pada sumber daya Machine Learning <resource-id>dengan izin\ "rw\”, sedangkan pengaturan pemilik sumber daya GroupPermission hanya mengizinkan\ "ro\”.

Solusi: Anda menerima error ini jika izin akses yang ditetapkan untuk fungsi Lambda terlampir melebihi izin pemilik sumber daya yang ditetapkan untuk sumber daya machine learning. Untuk mengatasi masalah ini, tetapkan izin yang lebih ketat untuk fungsi Lambda atau kurang membatasi izin untuk pemilik sumber daya.

 

NoContainer Fungsi <function-arn>mengacu pada sumber daya jalur tujuan bersarang.

Solusi: Anda menerima error ini jika beberapa sumber daya machine learning yang terlampir pada fungsi Lambda non-containerized menggunakan lintasan tujuan yang sama atau lintasan tujuan bersarang. Untuk mengatasi masalah ini, tentukan jalur tujuan terpisah untuk sumber daya.

 

Lambda <function-arn> mendapatkan akses ke sumber daya <resource-id> dengan berbagi id pemilik grup yang sama

Solusi: Anda menerima keslaahan ini di runtime.log jika kelompok OS yang sama ditentukan sebagai fungsi Lambda Jalankan sebagai identitas dan pemilik sumber daya untuk sumber daya machine learning, tetapi sumber daya tidak terlampir pada fungsi Lambda. Konfigurasi ini memberikan fungsi Lambda izin implisit yang dapat digunakan untuk mengakses sumber daya tanpa AWS IoT Greengrass otorisasi.

Untuk mengatasi masalah ini, gunakan grup OS yang berbeda untuk salah satu properti atau melampirkan sumber daya machine learning untuk fungsi Lambda.

AWS IoT Greengrass core dalam masalah Docker

Gunakan informasi berikut untuk membantu memecahkan masalah dengan menjalankan AWS IoT Greengrass core di kontainer Docker.

 

Kesalahan: Opsi tidak diketahui: -no-include-email.

Solusi: Kesalahan ini dapat terjadi ketika Anda menjalankan perintah aws ecr get-login ini. Pastikan Anda memiliki versi AWS CLI terbaru yang terinstal (misalnya, jalankan: pip install awscli --upgrade --user). Jika Anda menggunakan Windows dan Anda menginstal CLI menggunakan MSI installer, Anda harus mengulangi proses instalasi. Untuk informasi lebih lanjut, lihat Menginstal AWS Command Line Interface di Microsoft Windows dalam AWS Command Line Interface Panduan Pengguna.

 

Peringatan: IPv4 dinonaktifkan. Jaringan tidak akan bekerja.

Solusi: Anda mungkin menerima peringatan ini atau pesan serupa ketika menjalankan AWS IoT Greengrass pada komputer Linux. Aktifkan penerusan jaringan IPv4 seperti yang dijelaskan dalam Langkah. AWS IoT Greengrass cloud deployment dan komunikasi MQTT tidak bekerja ketika penerusan IPv4 tidak diaktifkan. Untuk informasi lebih lanjut, lihat Mengonfigurasi parameter kernel namespace (sysctls) pada ketika waktu aktif dalam dokumentasi Docker.

 

Error: Firewall memblokir file berbagi antara windows dan kontainer.

Solusi: Anda mungkin menerima error ini atau pesan Firewall Detected ketika menjalankan Docker di komputer Windows. Hal ini juga dapat terjadi jika Anda masuk pada jaringan pribadi virtual (VPN) dan pengaturan jaringan Anda mencegah drive berbagi untuk dipasang. Dalam situasi itu, matikan VPN dan jalankan kembali kontainer Docker.

 

Kesalahan: Terjadi kesalahan (AccessDeniedException) saat memanggil GetAuthorizationToken operasi: User: arn:aws:iam: ::user/ <account-id><user-name>tidak diizinkan untuk melakukan: ecr: on resource: * GetAuthorizationToken

Anda mungkin menerima kesalahan ini saat menjalankan aws ecr get-login-password jika Anda tidak memiliki izin yang memadai untuk mengakses repositori Amazon ECR. Untuk informasi selengkapnya, lihat Contoh Kebijakan Repositori Amazon ECR dan Mengakses Satu Repositori Amazon ECR di Panduan Pengguna Amazon ECR.

 

Error: Tidak dapat membuat kontainer untuk greengrass layanan: konflik. Nama kontainer “/aws-iot-greengrass" sudah digunakan.

Solusi: Hal ini dapat terjadi ketika nama kontainer yang digunakan oleh kontainer yang lebih tua. Untuk mengatasi masalah ini, jalankan perintah berikut untuk menghapus kontainer Docker lama:

docker rm -f $(docker ps -a -q -f "name=aws-iot-greengrass")

 

Error: [FATAL]-Gagal untuk mereset thread mount namespace karena error tak terduga: "operasi tidak diizinkan". Untuk menjaga konsistensi, GGC akan macet dan harus dimulai ulang secara manual.

Solusi: error ini di runtime.log dapat terjadi ketika Anda mencoba untuk men-deploy GreengrassContainer fungsi Lambda ke sebuah AWS IoT Greengrass core berjalan dalam kontainer Docker. Saat ini, hanya NoContainer fungsi Lambda dapat dikerahkan ke kontainer Greengrass Docker.

Untuk mengatasi masalah ini, pastikan bahwa semua fungsi Lambda berada di mode NoContainer ini dan mulai deployment baru. Kemudian, ketika memulai kontainer, jangan bind-mount direktori deployment yang ada ke AWS IoT Greengrass kontainer Docker core. Sebaliknya, buat kosong deployment di tempatnya dan bind-mount yang di kontainer Docker. Hal ini mengzinkan kontainer Docker baru untuk menerima deployment terbaru dengan fungsi Lambda berjalan di NoContainer mode.

Untuk informasi selengkapnya, lihat Menjalankan AWS IoT Greengrass di kontainer Docker.

Pemecahan masalah dengan catatan

Anda dapat mengonfigurasi pengaturan logging untuk grup Greengrass, seperti apakah akan mengirim log CloudWatch ke Log, menyimpan log pada sistem file lokal, atau keduanya. Untuk mendapatkan informasi detail saat memecahkan masalah, untuk sementara Anda dapat mengubah tingkat pencatatan DEBUG. Perubahan pada pengaturan catatan mulai berlaku saat Anda men-deploy grup. Untuk informasi selengkapnya, lihat Konfigurasi pencatatan untuk AWS IoT Greengrass.

Pada sistem file lokal, AWS IoT Greengrass simpan catatan di lokasi berikut. Membaca catatan pada sistem file memerlukan izin root.

greengrass-root/ggc/var/log/crash.log

Menampilkan pesan yang dihasilkan ketika sebuah AWS IoT Greengrass core gagal.

greengrass-root/ggc/var/log/system/runtime.log

Menampilkan pesan tentang komponen mana yang gagal.

greengrass-root/ggc/var/log/system/

Berisi semua catatan dari AWS IoT Greengrass komponen sistem, seperti certificate manager dan connection manager. Dengan menggunakan pesan di ggc/var/log/system/ dan ggc/var/log/system/runtime.log, Anda harus bisa mengetahui error mana yang terjadi di AWS IoT Greengrass komponen sistem.

greengrass-root/ggc/var/log/system/localwatch/

Berisi log untuk AWS IoT Greengrass komponen yang menangani pengunggahan log Greengrass ke Log. CloudWatch Jika Anda tidak dapat melihat log Greengrass, maka Anda dapat menggunakan log CloudWatch ini untuk pemecahan masalah.

greengrass-root/ggc/var/log/user/

Berisi semua catatan dari fungsi Lambda yang ditetapkan pengguna. Periksa folder ini untuk menemukan pesan error dari fungsi Lambda lokal Anda.

catatan

Secara default, greengrass-root adalah /greengrass direktori. Jika menulis direktori dikonfigurasi, maka log berada di bawah direktori itu.

Jika log dikonfigurasi untuk disimpan di cloud, gunakan CloudWatch Log untuk melihat pesan log. crash.loghanya ditemukan di log sistem file pada perangkat AWS IoT Greengrass inti.

Jika AWS IoT dikonfigurasi untuk menulis log CloudWatch, periksa log tersebut jika kesalahan koneksi terjadi ketika komponen sistem mencoba untuk terhubungAWS IoT.

Untuk informasi lebih lanjut tentang AWS IoT Greengrass catatan, lihat Pemantauan dengan AWS IoT Greengrass log.

catatan

catatan AWS IoT Greengrass perangkat lunak Core v1.0 disimpan di bawah greengrass-root/var/log direktori.

Pemecahan masalah penyimpanan

Ketika penyimpanan file lokal penuh, beberapa komponen mungkin mulai gagal:

  • Pemutakhiran bayangan lokal tidak terjadi.

  • Sertifikat server MQTT core baru AWS IoT Greengrass tidak dapat diunduh secara lokal.

  • Deployment gagal.

Anda harus selalu mengetahui jumlah ruang kosong yang tersedia secara lokal. Anda dapat menghitung ruang kosong berdasarkan ukuran fungsi Lambda yang di-deploy konfigurasi pencatatan (lihat Pemecahan masalah dengan catatan), dan jumlah bayangan yang disimpan secara lokal.

Pemecahan masalah pesan

Semua pesan dikirim secara lokal di AWS IoT Greengrass dikirim dengan QoS 0. Secara default, AWS IoT Greengrass menyimpan pesan dalam antrian in-memory. Oleh karena itu, pesan yang belum diproses akan hilang ketika Greengrass core restart; sebagai contoh, setelah deployment grup atau perangkat reboot. Namun, Anda dapat mengonfigurasi AWS IoT Greengrass (v1.6 atau yang lebih baru) untuk pesan cache ke sistem file sehingga mereka bertahan di restart core. Anda juga dapat mengonfigurasi ukuran antrian. Jika Anda mengonfigurasi ukuran antrian, pastikan bahwa itu lebih besar dari atau sama dengan 262144 byte (256 KB). Jika tidak, AWS IoT Greengrass mungkin tidak dimulai dengan benar. Untuk informasi selengkapnya, lihat Antrean pesan MQTT untuk target cloud.

catatan

Saat menggunakan antrian dalam memori default, kami sarankan Anda men-deploy grup atau restart perangkat ketika gangguan layanan terendah.

Anda juga dapat mengonfigurasi core untuk membuat sesi persisten dengan AWS IoT. Hal ini memungkinkan core untuk menerima pesan yang dikirim dari AWS Cloud sementara core offline. Untuk informasi selengkapnya, lihat Sesi persisten MQTT dengan AWS IoT Core.

Memecahkan masalah timeout sinkronisasi bayangan

Penundaan signifikan dalam komunikasi antara perangkat core Greengrass dan cloud mungkin menyebabkan sinkronisasi bayangan gagal karena batas waktu. Dalam hal ini, Anda akan melihat entri log yang serupa dengan berikut ini:

[2017-07-20T10:01:58.006Z][ERROR]-cloud_shadow_client.go:57,Cloud shadow client error: unable to get cloud shadow what_the_thing_is_named for synchronization. Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers) [2017-07-20T10:01:58.006Z][WARN]-sync_manager.go:263,Failed to get cloud copy: Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers) [2017-07-20T10:01:58.006Z][ERROR]-sync_manager.go:375,Failed to execute sync operation {what_the_thing_is_named VersionDiscontinued []}"

Perbaikan yang mungkin adalah untuk mengonfigurasi jumlah waktu yang perangkat core menunggu respons host. Buka file config.json di greengrass-root/config dan tambahkan system.shadowSyncTimeout bidang dengan nilai timeout dalam detik. Sebagai contoh:

{ "system": { "shadowSyncTimeout": 10 }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }

Jika tidak shadowSyncTimeout nilai yang ditentukan dalam config.json, default adalah 5 detik.

catatan

Untuk perangkat lunak Core AWS IoT Greengrass v1.6 dan sebelumnya, default-nya shadowSyncTimeout adalah 1 detik.

Periksa Re: AWS Posting

Jika Anda tidak dapat menyelesaikan masalah menggunakan informasi pemecahan masalah dalam topik ini, Anda dapat mencari Pemecahan Masalah AWS IoT Greengrass atau memeriksa AWS IoT Greengrasstag di AWS re:Post untuk masalah terkait atau memposting pertanyaan baru. Anggota AWS IoT Greengrass tim secara aktif memantau AWS re:post.