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:
-
Pastikan bahwa Anda menginstal binari yang sesuai untuk arsitektur Anda. Untuk informasi selengkapnya, lihat AWS IoT Greengrass Perangkat lunak Core.
-
Pastikan perangkat core Anda memiliki penyimpanan lokal yang tersedia. Untuk informasi selengkapnya, lihat Pemecahan masalah penyimpanan.
-
Periksa
runtime.log
dancrash.log
untuk pesan error. Untuk informasi selengkapnya, lihat Pemecahan masalah dengan catatan.
Cari gejala dan error berikut untuk menemukan informasi untuk membantu memecahkan masalah dengan AWS IoT Greengrass core.
Masalah
Error: Gagal mengurai/<greengrass-root> /config/config.json.
Kesalahan: Terjadi kesalahan saat membuat konfigurasi TLS: UrisCheme ErrUnknown
Error: Waktu aktif gagal untuk mulai: tidak dapat mulai pekerja: pengujian kontainer habis waktu.
Error: [DEBUG]-Gagal untuk mendapatkan rute. Membuang pesan.
Error: [Errno 24] Terlalu banyak membuka <lambda-function>, [Errno 24] Terlalu banyak membuka file
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 /
) dan memvalidasi format JSON. Sebagai contoh, pastikan bahwa koma digunakan dengan benar.greengrass-root
/config
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 /
) dan periksa greengrass-root
/configcrypto
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 /
). Di greengrass-root
/configruntime
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 /
), ganti konten file dengan objek JSON kosong (greengrass-root
/ggc/deployment/group{}
), 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
-
Jalankan perintah berikut untuk menghentikan Greengrass daemon:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Buka
untuk diedit sebagai pengguna su.greengrass-root
/config/config.json -
Di
coreThing
objek, tambahkancoreClientId
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"
-
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 untukrw,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.
Error: [ERROR]-error eksekusi waktu aktif: tidak dapat memulai kontainer lambda. {"ErrorString": "gagal menginisialisasi pemasangan kontainer: gagal membuat overlay fs untuk kontainer: pemasangan overlay pada /greengrass/ggc/packages/ <ggc-version> /rootfs/digabung gagal: gagal untuk me-mount dengan sumber args=\"no_source\" dest=\"/greengrass/ggc/packages/<ggc-version>/rootfs/merged\" fstype=\"overlay\" flags=\"0\" data=\"lowerdir=/greengrass/ggc/packages/<ggc-version>/dns:/,upperdir=/greengrass/ggc/packages/<ggc-version>/rootfs/upper,workdir=/greengrass/ggc/packages/<ggc-version>/rootfs/work\": terlalu banyak tingkatan tautan simbolik"}
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:
-
Upgrade AWS IoT Greengrass perangkat lunak Core ke v1.9.3 atau yang lebih baru. Ini akan secara otomatis mengatasi masalah ini.
-
Jika Anda masih mendapatkan error ini setelah Anda memperbarui AWS IoT Greengrass perangkat lunak Core, mengatur
system.useOverlayWithTmpfs
properti ketrue
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)
-
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.
-
Temukan baris yang berisi deployment Anda ingin men-deploy ulang. Pilih penyebaran yang ingin Anda gunakan kembali dan pilih Redeploy.
Untuk men-deploy ulang deployment (CLI)
-
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.
-
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" }
-
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
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.
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.
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 /
. Untuk menemukan lokasi di perangkat core, periksa properti greengrass-root
/certs/root.ca.pemcrypto.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.rproxy.goskope.comping: greengrass-ats.iot.
region
.amazonaws.com: Name or service not known
$
systemd-resolve greengrass-ats.iot.region
.amazonaws.com.rproxy.goskope.comgreengrass-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 diketahuisystemd
.
-
Tambahkan
DNSSEC=false
ke/etc/systemd/resolved.conf
. -
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.
Masalah
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.
Masalah
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
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/
danggc/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.log
hanya 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
direktori.greengrass-root
/var/log
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
dan tambahkan greengrass-root
/configsystem.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