View a markdown version of this page

Pemecahan Masalah AWS IoT Greengrass V2 - AWS IoT Greengrass

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 V2

Gunakan informasi dan solusi pemecahan masalah di bagian ini untuk membantu menyelesaikan masalah dengan AWS IoT Greengrass Version 2.

Tampilan AWS IoT Greengrass Perangkat lunak inti dan log komponen

Perangkat lunak AWS IoT Greengrass Core menulis log ke sistem file lokal yang dapat Anda gunakan untuk melihat informasi real-time tentang perangkat inti. Anda juga dapat mengonfigurasi perangkat inti untuk menulis CloudWatch log ke Log, sehingga Anda dapat memecahkan masalah perangkat inti dari jarak jauh. Log ini dapat membantu Anda mengidentifikasi masalah dengan komponen, penerapan, dan perangkat inti. Untuk informasi selengkapnya, lihat Memantau AWS IoT Greengrass log.

AWS IoT Greengrass Masalah perangkat lunak inti

Memec AWS IoT Greengrass ahkan masalah perangkat lunak inti.

Topik

ThrottlingException dari ListDeployments API

ThrottlingExceptiondari ListDeployments API: Anda mungkin melihat ini ketika Anda memiliki sejumlah besar penerapan di akun.

Untuk mengatasi ini, lakukan salah satu dari berikut:

  • Jika Anda menggunakan SDK, harap tentukan MaxResult parameter. Misalnya, untuk JavaSDK dengan nilai kecil (misalnya 5).

  • Anda dapat menggunakan Kuota AWS Layanan untuk meminta kenaikan batas batas tarif DescribeJob API. Anda dapat pergi ke konsol kuota Layanan, pilih kuota AWS IoT dan nama batasnya adalah batas DescribeJob pembatasan. Anda dapat meningkatkannya dari 10 menjadi 50.

Tidak dapat mengatur perangkat inti

Jika peng AWS IoT Greengrass instal perangkat lunak Core gagal dan Anda tidak dapat mengatur perangkat inti, Anda mungkin perlu menghapus perangkat lunak dan mencoba lagi. Untuk informasi selengkapnya, lihat Copot pemasangan AWS IoT Greengrass Perangkat lunak inti.

Tidak dapat memulai AWS IoT Greengrass Perangkat lunak inti sebagai layanan sistem

Jika perangkat lunak AWS IoT Greengrass Core gagal memulai, periksa log layanan sistem untuk mengidentifikasi masalah. Salah satu masalah umum adalah di mana Java tidak tersedia pada variabel lingkungan PATH (Linux) atau variabel sistem PATH (Windows).

Tidak dapat mengatur nukleus sebagai layanan sistem

Anda mungkin melihat kesalahan ini ketika penginstal perangkat lunak AWS IoT Greengrass inti gagal diatur AWS IoT Greengrass sebagai layanan sistem. Pada perangkat Linux, kesalahan ini biasanya terjadi jika perangkat inti tidak memiliki sistem init systemd. Penginstal dapat berhasil mengatur perangkat lunak AWS IoT Greengrass Core meskipun gagal mengatur layanan sistem.

Lakukan salah satu tindakan berikut:

  • Konfigurasikan dan jalankan perangkat lunak AWS IoT Greengrass Core sebagai layanan sistem. Anda harus mengkonfigurasi perangkat lunak sebagai layanan sistem untuk menggunakan semua fitur AWS IoT Greengrass. Anda dapat menginstal systemd atau menggunakan sistem init yang berbeda. Untuk informasi selengkapnya, lihat Konfigurasikan inti Greengrass sebagai layanan sistem.

  • Jalan AWS IoT Greengrass kan perangkat lunak inti tanpa layanan sistem. Anda dapat menjalankan perangkat lunak menggunakan skrip loader yang diatur penginstal di folder root Greengrass. Untuk informasi selengkapnya, lihat Jalankan perangkat lunak AWS IoT Greengrass Core tanpa layanan sistem.

Tidak dapat terhubung ke AWS IoT Core

Anda mungkin melihat kesalahan ini ketika perangkat lunak AWS IoT Greengrass Core tidak dapat terhubung ke AWS IoT Core untuk mengambil pekerjaan penerapan, misalnya. Lakukan hal-hal berikut:

  • Periksa apakah perangkat inti Anda dapat terhubung ke internet dan AWS IoT Core. Untuk informasi selengkapnya tentang AWS IoT Core titik akhir yang terhubung ke perangkat Anda, lihatKonfigurasikan AWS IoT Greengrass Perangkat lunak inti.

  • Periksa apakah perangkat inti AWS IoT Anda menggunakan sertifikat yang memungkinkaniot:Connect,, iot:Publishiot:Receive, dan iot:Subscribe izin.

  • Jika perangkat inti Anda menggunakan proksi jaringan, periksa apakah perangkat inti Anda memiliki peran perangkat dan apakah perannya memungkinkan izin iot:Connect, iot:Publish, iot:Receive, dan iot:Subscribe.

Kesalahan kehabisan memori

Kesalahan ini biasanya terjadi jika perangkat Anda tidak memiliki memori yang cukup untuk mengalokasikan objek di tumpukan Java. Pada perangkat dengan memori terbatas, Anda mungkin perlu menentukan ukuran tumpukan maksimum untuk mengontrol alokasi memori. Untuk informasi selengkapnya, lihat Kontrol alokasi memori dengan opsi JVM.

Tidak dapat menginstal Greengrass CLI

Anda mungkin melihat pesan konsol berikut saat menggunakan --deploy-dev-tools argumen dalam perintah instalasi untuk AWS IoT Greengrass Core.

Thing group exists, it could have existing deployment and devices, hence NOT creating deployment for Greengrass first party dev tools, please manually create a deployment if you wish to

Hal ini terjadi ketika komponen Greengrass CLI tidak diinstal karena perangkat inti Anda adalah anggota dari grup objek yang memiliki deployment yang ada. Jika Anda melihat pesan ini, Anda dapat secara manual menyebarkan komponen Greengrass CLI (aws.greengrass.Cli) ke perangkat untuk menginstal Greengrass CLI. Untuk informasi selengkapnya, lihat Instal Greengrass CLI.

Root pengguna tidak diizinkan untuk mengeksekusi

Anda mungkin melihat kesalahan ini ketika pengguna yang menjalankan perangkat lunak AWS IoT Greengrass Core (biasanyaroot) tidak memiliki izin untuk berjalan sudo dengan pengguna dan grup mana pun. Untuk pengguna sistem ggc_user default, kesalahan ini terlihat seperti berikut:

Sorry, user root is not allowed to execute <command> as ggc_user:ggc_group.

Periksa bahwa file /etc/sudoers Anda memberikan izin pengguna untuk menjalankan sudo sebagai kelompok lain. Izin untuk pengguna di /etc/sudoers seharusnya terlihat seperti contoh berikut.

root ALL=(ALL:ALL) ALL

com.aws.greengrass.lifecyclemanager. GenericExternalService: Tidak dapat menentukan user/group untuk dijalankan dengan

Anda mungkin melihat kesalahan ini ketika perangkat inti mencoba menjalankan komponen, dan inti Greengrass tidak menentukan pengguna sistem default untuk digunakan untuk menjalankan komponen.

Untuk memperbaiki masalah ini, konfigurasikan inti Greengrass untuk menentukan pengguna sistem default yang menjalankan komponen. Untuk informasi selengkapnya, lihat Konfigurasikan pengguna yang menjalankan komponen dan Konfigurasikan pengguna komponen default.

Gagal memetakan segmen dari objek bersama: operasi tidak diizinkan

Anda mungkin melihat kesalahan ini ketika perangkat lunak AWS IoT Greengrass Core gagal memulai karena /tmp folder dipasang dengan noexec izin. P AWS ustaka Common Runtime (CRT) menggunakan /tmp folder secara default.

Lakukan salah satu tindakan berikut:

  • Jalankan perintah berikut untuk memasang kembali /tmp folder dengan exec izin dan coba lagi.

    sudo mount -o remount,exec /tmp
  • Jika Anda menjalankan Greengrass nucleus v2.5.0 atau yang lebih baru, Anda dapat mengatur opsi JVM untuk mengubah folder yang digunakan pustaka AWS CRT. Anda dapat menentukan jvmOptions parameter dalam konfigurasi komponen inti Greengrass dalam penerapan atau saat Anda menginstal perangkat lunak AWS IoT Greengrass Core. Ganti /path/to/use dengan jalur ke folder yang dapat digunakan perpustakaan AWS CRT.

    { "jvmOptions": "-Daws.crt.lib.dir=\"/path/to/use\"" }

Gagal mengatur layanan Windows

Anda mungkin melihat kesalahan ini jika Anda menginstal perangkat lunak AWS IoT Greengrass Core pada perangkat Microsoft Windows 2016. Perangkat lunak AWS IoT Greengrass Core tidak didukung pada Windows 2016, untuk daftar sistem operasi yang didukung, lihatPlatform yang didukung.

Jika Anda harus menggunakan Windows 2016, Anda dapat melakukan hal berikut:

  1. Buka zip arsip instalasi AWS IoT Greengrass Core yang diunduh

  2. Di Greengrass direktori buka bin/greengrass.xml.template file.

  3. Tambahkan <autoRefresh> tag ke akhir file tepat sebelum </service> tag.

    </log> <autoRefresh>false</autoRefresh> </service>

com.aws.greengrass.util.pengecualian. TLSAuthException: Gagal mendapatkan manajer kepercayaan

Anda mungkin melihat kesalahan ini saat menginstal perangkat lunak AWS IoT Greengrass Core tanpa file otoritas sertifikat root (CA).

2022-06-05T10:00:39.556Z [INFO] (main) com.aws.greengrass.lifecyclemanager.Kernel: service-loaded. {serviceName=DeploymentService} 2022-06-05T10:00:39.943Z [WARN] (main) com.aws.greengrass.componentmanager.ClientConfigurationUtils: configure-greengrass-mutual-auth. Error during configure greengrass client mutual auth. {} com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager

Periksa apakah Anda menentukan file CA root yang valid dengan rootCaPath parameter dalam file konfigurasi yang Anda berikan kepada penginstal. Untuk informasi selengkapnya, lihat Instal perangkat lunak AWS IoT Greengrass Core.

com.aws.greengrass.penyebaran. IotJobsHelper: Tidak ada koneksi yang tersedia selama berlangganan topik deskripsi Iot Jobs. Akan mencoba lagi kapan-kapan

Anda mungkin melihat pesan peringatan ini ketika perangkat inti tidak dapat terhubung ke AWS IoT Core untuk berlangganan pemberitahuan pekerjaan penerapan. Lakukan hal-hal berikut:

  • Periksa apakah perangkat inti terhubung ke internet dan dapat mencapai titik akhir AWS IoT data yang Anda konfigurasi. Untuk informasi selengkapnya tentang titik akhir yang digunakan perangkat inti, lihatIzinkan lalu lintas perangkat melalui proxy atau firewall.

  • Periksa log Greengrass untuk kesalahan lain yang mengungkapkan akar penyebab lainnya.

perangkat lunak.amazon.awssdk.services.iam.model. IamException: Token keamanan yang disertakan dalam permintaan tidak valid

Anda mungkin melihat kesalahan ini saat menginstal perangkat lunak AWS IoT Greengrass Core dengan penyediaan otomatis, dan penginstal menggunakan token AWS sesi yang tidak valid. Lakukan hal-hal berikut:

  • Jika Anda menggunakan kredentif keamanan sementara, periksa apakah token sesi sudah benar dan bahwa Anda menyalin dan menempelkan token sesi lengkap.

  • Jika Anda menggunakan kredenSIAL keamanan jangka panjang, periksa apakah perangkat tidak memiliki token sesi dari waktu di mana Anda sebelumnya menggunakan kredenSIAL sementara. Lakukan hal-hal berikut:

    1. Jalankan perintah berikut untuk membatalkan pengaturan variabel lingkungan token sesi.

      Linux or Unix
      unset AWS_SESSION_TOKEN
      Windows Command Prompt (CMD)
      set AWS_SESSION_TOKEN=
      PowerShell
      Remove-Item Env:\AWS_SESSION_TOKEN
    2. Periksa apakah file AWS kredenSIAL~/.aws/credentials,, berisi token sesi,aws_session_token. Jika demikian, hapus baris itu dari file.

      aws_session_token = AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk

Anda juga dapat menginstal perangkat lunak AWS IoT Greengrass Core tanpa memberikan AWS kredenSIAL. Untuk informasi selengkapnya, lihat Menginstal AWS IoT Greengrass Perangkat lunak inti dengan penyediaan sumber daya manual atau Menginstal AWS IoT Greengrass Perangkat lunak inti dengan AWS IoT penyediaan armada.

perangkat lunak.amazon.awssdk.services.iot.model. IotException: Pengguna: < pengguna > tidak berwenang untuk melakukan: iot: GetPolicy

Anda mungkin melihat kesalahan ini saat menginstal perangkat lunak AWS IoT Greengrass Core dengan penyediaan otomatis, dan penginstal menggunakan AWS kredenSIAL yang tidak memiliki izin yang diperlukan. Untuk informasi selengkapnya tentang izin yang diperlukan, lihatKebijakan IAM minimal untuk penginstal untuk menyediakan sumber daya.

Periksa izin untuk identitas IAM kredensi, dan berikan identitas IAM setiap izin yang diperlukan yang hilang.

Kesalahan: com.aws.greengrass.shadowmanager.sync.model. FullShadowSyncRequest: Tidak dapat menjalankan permintaan cloud shadow get

Anda mungkin melihat kesalahan ini saat menggunakan komponen pengelola bayangan untuk menyin kronkan bayangan perangkat AWS IoT Core. Kode status HTTP 403 menunjukkan bahwa kesalahan ini terjadi karena AWS IoT kebijakan perangkat inti tidak memberikan izin untuk memanggilGetThingShadow.

com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request. {thing name=MyGreengrassCore, shadow name=MyShadow} 2021-07-14T21:09:02.456Z [ERROR] (pool-2-thread-109) com.aws.greengrass.shadowmanager.sync.SyncHandler: sync. Skipping sync request. {thing name=MyGreengrassCore, shadow name=MyShadow} com.aws.greengrass.shadowmanager.exception.SkipSyncRequestException: software.amazon.awssdk.services.iotdataplane.model.IotDataPlaneException: null (Service: IotDataPlane, Status Code: 403, Request ID: f6e713ba-1b01-414c-7b78-5beb3f3ad8f6, Extended Request ID: null)

Untuk menyinkronkan bayangan lokal dengan AWS IoT Core, AWS IoT kebijakan perangkat inti harus memberikan izin berikut:

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

Periksa AWS IoT kebijakan perangkat inti, dan tambahkan izin yang diperlukan yang hilang. Untuk informasi selengkapnya, lihat berikut ini:

Operasi aws.greengrass # < operasi tidak didukung oleh Green > grass

Anda mungkin melihat kesalahan ini saat menggunakan operasi komunikasi antar proses (IPC) di komponen Greengrass kustom, dan komponen yang AWS disediakan diperlukan tidak diinstal pada perangkat inti.

Untuk memperbaiki masalah ini, tambahkan komponen yang diperlukan sebagai ketergantungan dalam resep komponen Anda, sehingga perangkat lunak AWS IoT Greengrass Core menginstal komponen yang diperlukan saat Anda menerapkan komponen Anda.

java.io. FileNotFoundException: < stream-manager-store-root-dir /stream_manager_metadata_store (Izin ditolak) >

Anda mungkin melihat kesalahan ini di file log pengelola aliran (aws.greengrass.StreamManager.log) saat mengonfigurasi pengel ola aliran untuk menggunakan folder root yang tidak ada atau memiliki izin yang benar. Untuk informasi selengkapnya tentang cara mengonfigurasi folder ini, lihat konfigurasi pengelola aliran.

com.aws.greengrass.security.provider.pkcs11. PKCS11CryptoKeyService: Kunci pribadi atau sertifikat dengan < label label > tidak ada

Kesalahan ini terjadi ketika komponen penyedia PKCS #11 tidak dapat menemukan atau memuat kunci pribadi atau sertifikat yang Anda tentukan saat mengonfigurasi perangkat lunak AWS IoT Greengrass Core untuk menggunakan modul keamanan perangkat keras (HSM). Lakukan hal-hal berikut:

  • Periksa apakah kunci pribadi dan sertifikat disimpan di HSM menggunakan slot, PIN pengguna, dan label objek yang Anda konfigurasikan perangkat lunak AWS IoT Greengrass Core untuk digunakan.

  • Periksa apakah kunci pribadi dan sertifikat menggunakan label objek yang sama di HSM.

  • Jika HSM Anda mendukung ID objek, periksa apakah kunci pribadi dan sertifikat menggunakan ID objek yang sama di HSM.

Periksa dokumentasi untuk HSM Anda untuk mempelajari cara menanyakan detail tentang token keamanan di HSM. Jika Anda perlu mengubah slot, label objek, atau ID objek untuk token keamanan, periksa dokumentasi untuk HSM Anda untuk mempelajari cara melakukannya.

perangkat lunak.amazon.awssdk.services.secretsmanager.model. SecretsManagerException: Pengguna: < pengguna tidak > berwenang untuk melakukan: secretsmanager: GetSecretValue pada sumber daya: arn < >

Kesalahan ini dapat terjadi ketika Anda menggunakan komponen manajer rahasia untuk menyebarkan AWS Secrets Manager rahasia. Jika IAM role pertukaran token perangkat inti tidak memberikan izin untuk mendapatkan rahasia, deployment itu gagal dan log Greengrass mencakup kesalahan ini.

Untuk mengotorisasi perangkat inti untuk mengunduh rahasia
  1. Tambahkan izin secretsmanager:GetSecretValue ke peran pertukaran token perangkat inti. Contoh pernyataan kebijakan berikut memberikan izin untuk mendapatkan nilai rahasia.

    { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef" ] }

    Untuk informasi selengkapnya, lihat Otorisasi perangkat inti untuk berinteraksi dengan layanan AWS.

  2. Terapkan kembali deployment ke perangkat inti. Lakukan salah satu tindakan berikut:

    • Revisi deployment tanpa perubahan apa pun. Perangkat inti mencoba untuk mengunduh rahasia lagi ketika menerima deployment yang direvisi. Untuk informasi selengkapnya, lihat Revisi deployment.

    • Mulai ulang perangkat lunak AWS IoT Greengrass Core untuk mencoba lagi penerapan. Untuk informasi selengkapnya, lihat Jalankan perangkat lunak AWS IoT Greengrass Core

    Deployment berhasil jika secret manager berhasil mengunduh rahasia tersebut.

perangkat lunak.amazon.awssdk.services.secretsmanager.model. SecretsManagerException: Akses ke KMS tidak diperbolehkan

Kesalahan ini dapat terjadi ketika Anda menggunakan komponen pengelola rahasia untuk menyebarkan AWS Secrets Manager rahasia yang dienkripsi oleh AWS Key Management Service kunci. Jika peran IAM pertukaran token perangkat inti tidak memberikan izin untuk mendekripsi rahasia, penerapan gagal dan log Greengrass menyertakan kesalahan ini.

Untuk memperbaiki masalah, tambahkan kms:Decrypt izin ke peran pertukaran token perangkat inti. Untuk informasi selengkapnya, lihat berikut ini:

java.long. NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi

Anda mungkin melihat kesalahan ini ketika Anda mencoba menginstal perangkat lunak AWS IoT Greengrass Core dengan keamanan perangkat keras dan Anda menggunakan versi inti Greengrass sebelumnya yang tidak mendukung integrasi keamanan perangkat keras. Untuk menggunakan integrasi keamanan perangkat keras, Anda harus menggunakan Greengrass nucleus v2.5.3 atau yang lebih baru.

com.aws.greengrass.security.provider.pkcs11. PKCS11CryptoKeyService: CKR_OPERATION_NOT_DIINISIALISASI

Anda mungkin melihat kesalahan ini saat menggunakan pustaka TPM2 saat menjalankan AWS IoT Greengrass Core sebagai layanan sistem.

Kesalahan ini menunjukkan bahwa Anda perlu menambahkan variabel lingkungan yang menyediakan lokasi penyimpanan PKCS #11 di file layanan AWS IoT Greengrass Core systemd.

Untuk informasi selengkapnya, lihat bagian Persyaratan dari dokumentasi Penyedia PKCS #11 komponen.

Perangkat inti Greengrass macet di nucleus v2.12.3

Jika perangkat inti Greengrass Anda tidak akan merevisi penerapan Anda dari nucleus versi 2.12.3, Anda mungkin perlu mengunduh dan mengganti Greengrass.jar file dengan inti Greengrass versi 2.12.2. Lakukan hal-hal berikut:

  1. Pada perangkat inti Greengrass Anda, jalankan perintah berikut untuk menghentikan perangkat lunak Greengrass Core.

    Linux or Unix
    sudo systemctl stop greengrass
    Windows Command Prompt (CMD)
    sc stop "greengrass"
    PowerShell
    Stop-Service -Name "greengrass"
  2. Pada perangkat inti Anda, unduh AWS IoT Greengrass perangkat lunak ke file bernamagreengrass-2.12.2.zip.

    Linux or Unix
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
    Windows Command Prompt (CMD)
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
    PowerShell
    iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip -OutFile greengrass-2.12.2.zip
  3. Buka zip perangkat lunak AWS IoT Greengrass Core ke folder di perangkat Anda. Ganti GreengrassInstaller dengan folder yang ingin Anda gunakan.

    Linux or Unix
    unzip greengrass-2.12.2.zip -d GreengrassInstaller && rm greengrass-2.12.2.zip
    Windows Command Prompt (CMD)
    mkdir GreengrassInstaller && tar -xf greengrass-2.12.2.zip -C GreengrassInstaller && del greengrass-2.12.2.zip
    PowerShell
    Expand-Archive -Path greengrass-2.12.2.zip -DestinationPath .\\GreengrassInstaller rm greengrass-2.12.2.zip
  4. Jalankan perintah berikut untuk mengganti file inti versi 2.12.3 Greengrass JAR dengan file Greengrass JAR versi nukleus 2.12.2.

    Linux or Unix
    sudo cp ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
    Windows Command Prompt (CMD)
    robocopy ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib /E
    PowerShell
    cp -Path ./GreengrassInstaller/lib/Greengrass.jar -Destination /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
  5. Jalankan perintah berikut untuk memulai perangkat lunak Greengrass Core.

    Linux or Unix
    sudo systemctl start greengrass
    Windows Command Prompt (CMD)
    sc start "greengrass"
    PowerShell
    Start-Service -Name "greengrass"

Masalah template systemd inti Greengrass v2.14.0

Anda mungkin mengalami masalah ini jika Anda menginstal Greengrass nucleus v2.14.0 pada perangkat Linux dengan template layanan systemd defaultnya. Lakukan hal-hal berikut:

  1. Pada perangkat inti Greengrass Anda, jalankan perintah berikut untuk mengembalikan file layanan systemd ke seperti di nucleus v2.13.0 dan sebelumnya.

    Linux or Unix
    sudo sed -i 's|ExecStart=/bin/sh -c "\(.*\) >> .*/logs/loader.log 2>&1"|ExecStart=/bin/sh \1|' /etc/systemd/system/greengrass.service
  2. Terapkan perubahan.

    Linux or Unix
    sudo systemctl daemon-reload sudo systemctl restart greengrass

AWS IoT Greengrass masalah cloud

Gunakan informasi berikut untuk memecahkan masalah dengan AWS IoT Greengrass konsol dan API. Setiap entri sesuai dengan pesan kesalahan yang mungkin Anda lihat ketika Anda melakukan tindakan.

Terjadi kesalahan (AccessDeniedException) saat memanggil CreateComponentVersion operasi: User: arn:aws:iam: :1234567 < 89012:user/ username tidak berwenang untuk melakukan: null >

Anda mungkin melihat kesalahan ini saat membuat versi komponen dari AWS IoT Greengrass konsol atau dengan CreateComponentVersion operasi.

Kesalahan ini menunjukkan bahwa resep Anda bukan JSON atau YAML yang valid. Periksa sintaks resep Anda, perbaiki masalah sintaks, dan coba lagi. Anda dapat menggunakan pemeriksa sintaks JSON atau YAML online untuk mengidentifikasi masalah sintaks dalam resep Anda.

Input Tidak Valid: Menemukan kesalahan berikut di Artifak: {<s3 ArtifactUri > = Sumber daya artefak tertentu tidak dapat diakses}

Anda mungkin melihat kesalahan ini saat membuat versi komponen dari AWS IoT Greengrass konsol atau dengan CreateComponentVersion operasi. Kesalahan ini menunjukkan bahwa artefak S3 dalam resep komponen tidak valid.

Lakukan hal-hal berikut:

  • Periksa apakah bucket S3 berada di tempat yang sama Wilayah AWS di mana Anda membuat komponen. AWS IoT Greengrass tidak mendukung permintaan lintas wilayah untuk artefak komponen.

  • Periksa apakah URI artefak adalah URL objek S3 yang valid, dan periksa artefak ada di URL objek S3 tersebut.

  • Periksa apakah Anda Akun AWS memiliki izin untuk mengakses artefak di URL objek S3-nya.

Status penerapan TIDAK AKTIF

Anda mungkin mendapatkan status INACTIVE penerapan saat memanggil ListDeployments API tanpa AWS IoT kebijakan dependen yang diperlukan. Anda harus memiliki izin yang diperlukan untuk mendapatkan status penerapan yang akurat. Anda dapat menemukan tindakan dependen dengan melihat di Tind akan yang ditentukan oleh AWS IoT Greengrass V2 dan mengikuti izin yang diperlukan untukListDeployments. Tanpa AWS IoT izin dependen yang diperlukan, Anda masih akan melihat status penerapan tetapi Anda mungkin melihat status penerapan yang tidak akuratINACTIVE.

CreateDeployment mengembalikan respons yang berhasil tetapi GetDeployment mengembalikan kesalahan 404

Anda mungkin melihat masalah ini saat memanggil CreateDeployment operasi untuk diterapkan ke grup AWS IoT benda atau benda. Pang CreateDeployment gilan mengembalikan kode 200 status dengan ID penerapan yang valid. Namun, saat Anda menelep GetDeployment on dengan ID penerapan tersebut, Anda menerima ResourceNotFoundException kesalahan. Kon AWS IoT Greengrass sol menampilkan halaman “Deployment not found” untuk URL penerapan. Penerapan sebelumnya untuk target mungkin juga menunjukkan INACTIVE status tanpa penggantian.

Masalah ini dapat terjadi ketika beberapa CreateDeployment permintaan menargetkan AWS IoT hal yang sama pada saat yang bersamaan. Kondisi balapan dapat menyebabkan cloud gagal merekam penerapan. Perangkat inti masih menerima dan menerapkan penerapan melalui bayangan AWS IoT perangkat, tetapi layanan AWS IoT Greengrass cloud tidak memiliki catatannya. Setelah masalah ini terjadi, ini mungkin juga memengaruhi penerapan berikutnya ke target yang sama.

Lakukan hal berikut untuk mengatasi dan mencegah masalah ini:

  • Hindari mengirim CreateDeployment permintaan bersamaan yang menargetkan AWS IoT hal yang sama. Serialkan permintaan penerapan Anda atau tambahkan penundaan di antara mereka untuk memastikan bahwa hanya satu CreateDeployment panggilan menargetkan hal tertentu pada satu waktu.

  • Jika masalah ini sudah memengaruhi target Anda, penerapan berikutnya mungkin terus mengembalikan kesalahan 404. Untuk mengatasi masalah ini, hapus catatan penerapan basi untuk target yang terpengaruh sehingga penerapan berikutnya dapat berjalan secara normal.

Masalah deployment perangkat inti

Memecahkan masalah penerapan pada perangkat inti Greengrass. Setiap entri sesuai dengan pesan log yang mungkin Anda lihat di perangkat inti Anda.

Topik

Kesalahan: com.aws.greengrass.componentmanager.. PackageDownloadException: Gagal mengunduh artefak

Anda mungkin melihat kesalahan ini ketika perangkat lunak AWS IoT Greengrass Core gagal mengunduh artefak komponen saat perangkat inti menerapkan penerapan. Deployment gagal sebagai akibat dari kesalahan ini.

Ketika Anda menerima kesalahan ini, log juga mencakup jejak tumpukan yang dapat Anda gunakan untuk mengidentifikasi masalah tertentu. Masing-masing entri berikut sesuai dengan pesan yang mungkin Anda lihat di jejak tumpukan pesan kesalahan Failed to download artifact.

Software.amazon.awssdk.services.s3.model.s3Exception: null (Layanan: S3, Kode Status: 403, ID Permintaan: null,...)

Kes PackageDownloadException alahan mungkin termasuk jejak tumpukan ini dalam kasus berikut:

  • Artefak komponen tidak tersedia di URL objek S3 yang Anda tentukan dalam resep komponen. Periksa apakah Anda mengunggah artefak ke bucket S3 dan bahwa URI artefak cocok dengan URL objek S3 dari artefak di bucket.

  • Peran pertukaran token perangkat inti tidak mengizinkan perangkat lunak AWS IoT Greengrass Core mengunduh artefak komponen dari URL objek S3 yang Anda tentukan dalam resep komponen. Periksa apakah peran pertukaran token memungkinkan s3:GetObject URL objek S3 tempat artefak tersedia.

Software.amazon.awssdk.services.s3.model.s3Exception: Akses Ditolak (Layanan: S3, Kode Status: 403, ID Permintaan: RequestID < >

Kes PackageDownloadException alahan mungkin termasuk pelacakan tumpukan ini ketika perangkat inti tidak memiliki izin untuk memanggils3:GetBucketLocation. Pesan kesalahan juga menyertakan pesan berikut.

reason: Failed to determine S3 bucket location

Periksa apakah peran pertukaran token perangkat inti memungkinkan s3:GetBucketLocation bucket S3 tempat artefak tersedia.

Kesalahan: com.aws.greengrass.componentmanager.. ArtifactChecksumMismatchException: Pemeriksaan integritas untuk artefak yang diunduh gagal. Mungkin karena korupsi file.

Anda mungkin melihat kesalahan ini ketika perangkat lunak AWS IoT Greengrass Core gagal mengunduh artefak komponen saat perangkat inti menerapkan penerapan. Penerapan gagal karena checksum file artefak yang diunduh tidak cocok dengan checksum yang AWS IoT Greengrass dihitung saat Anda membuat komponen.

Lakukan hal-hal berikut:

  • Periksa apakah file artefak berubah dalam bucket S3 tempat Anda meng-hosting-nya. Jika file berubah sejak Anda membuat komponen, pulihkan ke versi sebelumnya yang diharapkan perangkat inti. Jika Anda tidak dapat memulihkan file ke versi sebelumnya, atau jika Anda ingin menggunakan versi baru dari file itu, buat versi baru dari komponen dengan file artefak.

  • Periksa koneksi internet perangkat inti Anda. Kesalahan ini dapat terjadi jika file artefak rusak saat mengunduh. Buat deployment baru dan coba lagi.

Kesalahan: com.aws.greengrass.componentmanager.. NoAvailableComponentVersionException: Gagal menegosiasikan > versi < nama komponen dengan cloud dan tidak ada versi lokal yang berlaku yang memenuhi persyaratan < persyaratan >

Anda mungkin melihat kesalahan ini bila perangkat inti tidak dapat menemukan versi komponen yang memenuhi persyaratan penyebaran untuk perangkat inti tersebut. Perangkat inti memeriksa komponen dalam AWS IoT Greengrass layanan dan pada perangkat lokal. Pesan kesalahan mencakup target setiap penyebaran dan persyaratan versi penyebaran untuk komponen. Target deployment dapat berupa objek, grup objek, atau LOCAL_DEPLOYMENT, yang mewakili deployment lokal pada perangkat inti.

Masalah ini dapat terjadi pada kasus berikut:

  • Perangkat inti adalah target dari beberapa penyebaran yang memiliki persyaratan versi komponen yang bertentangan. Sebagai contoh, perangkat inti tersebut mungkin menjadi target dari beberapa deployment yang mencakup komponen com.example.HelloWorld, di mana satu deployment memerlukan versi 1.0.0 dan yang lain memerlukan versi 1.0.1. Tidak mungkin memiliki komponen yang memenuhi kedua persyaratan tersebut, sehingga deployment itu gagal.

  • Versi komponen tidak ada di AWS IoT Greengrass layanan atau di perangkat lokal. Komponen mungkin telah dihapus, misalnya.

  • Ada versi komponen yang memenuhi persyaratan versi, tetapi tidak ada yang kompatibel dengan platform perangkat inti.

  • AWS IoT Kebijakan perangkat inti tidak memberikan greengrass:ResolveComponentCandidates izin. Cari Status Code: 403 di log kesalahan untuk mengidentifikasi masalah ini. Untuk mengatasi masalah ini, tambahkan izin greengrass:ResolveComponentCandidates ke kebijakan perangkat inti AWS IoT . Untuk informasi selengkapnya, lihat AWS IoT Kebijakan minimal untuk perangkat AWS IoT Greengrass V2 inti.

Untuk mengatasi masalah ini, revisi penyebaran dengan menyertakan versi komponen yang kompatibel atau hapus yang tidak kompatibel. Untuk informasi selengkapnya tentang cara merevisi penyebaran cloud, lihat Revisi deployment. Untuk informasi selengkapnya tentang cara merevisi deployment lokal, lihat perintah AWS IoT Greengrass Buat CLI deployment.

perangkat lunak.amazon.awssdk.services.greengrassv2data.model. ResourceNotFoundException: Versi terbaru < Component ComponentName > tidak mengklaim kompatibilitas < inti DevicePlatform > platform

Anda mungkin melihat kesalahan ini saat menerapkan komponen ke perangkat inti, dan komponen tidak mencantumkan platform yang kompatibel dengan platform perangkat inti. Lakukan salah satu tindakan berikut:

  • Jika komponen adalah komponen Greengrass khusus, Anda dapat memperbarui komponen agar kompatibel dengan perangkat inti. Tambahkan manifes baru yang cocok dengan platform perangkat inti, atau perbarui manifes yang ada agar sesuai dengan platform perangkat inti. Untuk informasi selengkapnya, lihat AWS IoT Greengrass referensi resep komponen.

  • Jika komponen disediakan oleh AWS, periksa apakah versi lain dari komponen kompatibel dengan perangkat inti. Jika tidak ada versi yang kompatibel, hubungi kami AWS re:Post untuk menggunakan AWS IoT Greengrass tag, atau hubungi Dukungan.

com.aws.greengrass.componentmanager.pengecualian. PackagingException: Penyebaran mencoba memperbarui nukleus dari versi AWS.GreenGrass.Nucleus- > ke < versi AWS.GreenGrass.Nucleus- > tetapi tidak ada komponen nukleus tipe yang disertakan < sebagai komponen target

Anda mungkin melihat kesalahan ini saat Anda menerapkan komponen yang bergantung pada inti Greengrass, dan perangkat inti menjalankan versi inti Greengrass yang lebih awal daripada versi minor terbaru yang tersedia. Kesalahan ini terjadi karena perangkat lunak AWS IoT Greengrass Core mencoba memperbarui komponen secara otomatis ke versi kompatibel terbaru. Namun, perangkat lunak AWS IoT Greengrass Core mencegah inti Greengrass memperbarui ke versi minor baru, karena beberapa komponen yang AWS disediakan bergantung pada versi minor spesifik dari inti Greengrass. Untuk informasi selengkapnya, lihat Perilaku pembaruan inti Greengrass.

Anda harus merevisi penerapan untuk menentukan versi inti Greengrass yang ingin Anda gunakan. Lakukan salah satu tindakan berikut:

  • Merevisi penerapan untuk menentukan versi inti Greengrass yang saat ini dijalankan oleh perangkat inti.

  • Merevisi penyebaran untuk menentukan versi minor yang lebih baru dari inti Greengrass. Jika Anda memilih opsi ini, Anda juga harus memperbarui versi semua komponen AWS yang disediakan yang bergantung pada versi minor tertentu dari inti Greengrass. Untuk informasi selengkapnya, lihat Komponen yang disediakan oleh AWS.

Kesalahan: com.aws.greengrass.deployment.. DeploymentException: Tidak dapat memproses penerapan. Direktori peluncuran Greengrass tidak diatur atau Greengrass tidak diatur sebagai layanan sistem

Anda mungkin melihat kesalahan ini ketika Anda memindahkan perangkat Greengrass dari satu grup hal ke grup lain, dan kemudian kembali ke grup asli dengan penerapan yang mengharuskan Greengrass untuk memulai ulang.

Untuk mengatasi masalah ini, buat ulang direktori peluncuran untuk perangkat. Kami juga sangat menyarankan untuk meningkatkan ke versi 2.9.6 atau yang lebih baru dari inti Greengrass.

Berikut ini adalah skrip Linux untuk membuat ulang direktori peluncuran. Simpan skrip dalam file yang disebutfix_directory.sh.

#!/bin/bash set -e GG_ROOT=$1 GG_VERSION=$2 CURRENT="$GG_ROOT/alts/current" if [ ! -L "$CURRENT" ]; then mkdir -p $GG_ROOT/alts/directory_fix echo "Relinking $GG_ROOT/alts/directory_fix to $CURRENT" ln -sf $GG_ROOT/alts/directory_fix $CURRENT fi TARGET=$(readlink $CURRENT) if [[ ! -d "$TARGET" ]]; then echo "Creating directory: $TARGET" mkdir -p "$TARGET" fi DISTRO_LINK="$TARGET/distro" DISTRO="$GG_ROOT/packages/artifacts-unarchived/aws.greengrass.Nucleus/$GG_VERSION/aws.greengrass.nucleus/" echo "Relinking Nucleus artifacts to $DISTRO_LINK" ln -sf $DISTRO $DISTRO_LINK

Untuk menjalankan skrip, jalankan perintah berikut:

[root@ip-172-31-27-165 ~]# ./fix_directory.sh /greengrass/v2 2.9.5 Relinking /greengrass/v2/alts/directory_fix to /greengrass/v2/alts/current Relinking Nucleus artifacts to /greengrass/v2/alts/directory_fix/distro

Info: com.aws.greengrass.deployment.. RetryableDeploymentDocumentDownloadException: Layanan Cloud Greengrass mengembalikan kesalahan saat mendapatkan konfigurasi penerapan penuh

Anda mungkin melihat kesalahan ini ketika perangkat inti menerima dokumen deployment yang besar, yang merupakan dokumen deployment yang lebih besar dari 7 KB (untuk deployment yang menargetkan objek) atau 31 KB (untuk deployment yang menargetkan grup objek). Untuk mengambil dokumen penerapan yang besar, AWS IoT kebijakan perangkat inti harus mengizinkan greengrass:GetDeploymentConfiguration izin tersebut. Kesalahan ini dapat terjadi ketika perangkat inti tidak memiliki izin ini. Ketika kesalahan ini terjadi, deployment tersebut mencoba ulang tanpa batas waktu, dan statusnya Dalam proses (IN_PROGRESS).

Untuk mengatasi masalah ini, tambahkan greengrass:GetDeploymentConfiguration izin ke AWS IoT kebijakan perangkat inti. Untuk informasi selengkapnya, lihat Memperbarui AWS IoT kebijakan perangkat inti.

Peringatkan: com.aws.greengrass.deployment. DeploymentService: Gagal mendapatkan hierarki grup benda

Anda mungkin melihat peringatan ini saat perangkat inti menerima penerapan dan AWS IoT kebijakan perangkat inti tidak mengizinkan greengrass:ListThingGroupsForCoreDevice izin tersebut. Saat Anda membuat penerapan, perangkat inti menggunakan izin ini untuk mengidentifikasi grup benda-benda dan menghapus komponen untuk grup benda apa pun dari mana Anda menghapus perangkat inti. Jika perangkat inti menjalankan Greengrass nucleus v2.5.0, penerapan gagal. Jika perangkat inti menjalankan Greengrass nucleus v2.5.1 atau yang lebih baru, penerapan berlanjut tetapi tidak menghapus komponen. Untuk informasi selengkapnya tentang perilaku penghapusan grup benda, lihatMenyebarkan AWS IoT Greengrass komponen ke perangkat.

Untuk memperbarui perilaku perangkat inti untuk menghapus komponen untuk grup benda tempat Anda menghapus perangkat inti, tambahkan greengrass:ListThingGroupsForCoreDevice izin ke AWS IoT kebijakan perangkat inti. Untuk informasi selengkapnya, lihat Memperbarui AWS IoT kebijakan perangkat inti.

Penerapan secara tak terduga menghapus komponen dari perangkat inti

Penerapan menghapus komponen dari perangkat inti yang tidak Anda targetkan untuk dihapus, dan perangkat berhenti menjalankannya.

Pada inti Greengrass v2.18.2 dan sebelumnya, urutan peristiwa tertentu menyebabkan perangkat kehilangan catatannya tentang komponen mana yang digunakan setiap kelompok benda. Setelah kerugian ini, penerapan memperlakukan komponen-komponen tersebut sebagai yatim piatu dan menghapusnya. Greengrass nucleus v2.18.3 memperbaiki masalah ini.

Urutan dimulai ketika penerapan pertama ke perangkat gagal dan diputar kembali. Untuk urutan lengkapnya, lihatBagaimana perangkat kehilangan catatan ini.

Cara memeriksa apakah perangkat telah kehilangan catatan ini

Langkah-langkah ini memeriksa konfigurasi perangkat untuk menentukan penyebab penghapusan. Mereka tidak mengidentifikasi komponen mana yang dihapus oleh penerapan. Periksa /greengrass/v2/config/effectiveConfig.yaml pada perangkat inti.

  1. Untuk memeriksa apakah keadaan internal perangkat rusak, periksa dependencies daftar di bawah main layanan diservices. Keadaan internal yang rusak adalah kondisi yang menyebabkan hilangnya catatan. Pada perangkat yang telah menyelesaikan setidaknya satu penerapan yang berhasil, daftar ini mencakupDeploymentService,FleetStatusService,TelemetryAgent, danUpdateSystemPolicyService. Jika nama-nama ini tidak ada pada perangkat yang sebelumnya telah menyelesaikan penerapan yang berhasil, status internal rusak. Pada perangkat yang belum pernah menyelesaikan penerapan yang berhasil, daftar yang hanya berisi nukleus adalah normal dan tidak menunjukkan masalah.

  2. Untuk memeriksa apakah perangkat telah kehilangan catatan, temukan DeploymentService di bawah services dan cari GroupToRootComponents konfigurasinya. Pada perangkat sehat yang telah menerima setidaknya satu penerapan, konfigurasi ini mencantumkan setiap grup hal dan komponen yang diterapkan grup. Jika konfigurasi ini hilang atau kosong saat komponen diinstal dan berjalan di perangkat, perangkat telah kehilangan catatan.

Apakah penerapan menghapus komponen setelah perangkat kehilangan catatan ini

Setelah perangkat kehilangan catatan ini, apakah kehilangan komponen tergantung pada penerapan mana yang berjalan selanjutnya.

Penerapan menghapus komponen saat berjalan saat catatan hilang dan tidak membawa daftar komponen grup yang hilang:

  • Penerapan lokal berjalan. Penyebaran lokal hanya membawa perubahannya sendiri dan bergantung pada catatan lokal perangkat untuk melestarikan yang lainnya. Beberapa armada menjalankan komponen yang mengirimkan penerapan lokal setiap kali perangkat dimulai. Inilah sebabnya mengapa penghapusan sering muncul segera setelah restart.

  • Pada perangkat yang termasuk dalam lebih dari satu grup benda, penerapan hanya menargetkan beberapa grup tersebut. Penyebaran itu memulihkan kelompok yang ditargetkannya. Ini menghapus komponen grup yang tidak ditargetkan.

Penerapan tidak menghapus komponen saat:

  • Tidak ada penerapan yang berjalan di perangkat. Komponen yang diinstal terus berjalan normal. Perangkat mungkin tetap dalam keadaan ini tanpa batas waktu tanpa dampak.

  • Penerapan berikutnya menargetkan grup benda yang merekam komponennya perangkat hilang. Penerapan itu membawa daftar komponen lengkap grup dan mengembalikan catatan, yang memulihkan perangkat secara otomatis.

penting

Sampai Anda memulihkan perangkat, hindari menjalankan penerapan lokal di atasnya. Jika komponen pada perangkat mengirimkan penerapan lokal saat perangkat dimulai, pulihkan perangkat sebelum restart lagi. Penyebaran itu menghapus komponen.

Pemulihan

Memulai ulang perangkat tidak mengembalikan catatan yang hilang. Anda harus membuat penerapan untuk memulihkan perangkat.

Untuk memulihkan perangkat yang kehilangan catatan ini, buat penerapan yang menargetkan setiap kelompok benda milik perangkat inti. Penerapan yang menargetkan grup benda membawa daftar lengkap komponen untuk grup itu. Ini membangun kembali catatan lokal yang hilang. Penyebaran lokal tidak dapat memulihkan perangkat karena tidak membawa informasi komponen grup lain.

penting

Pada perangkat yang termasuk dalam beberapa kelompok benda, setiap penerapan hanya memulihkan grup yang ditargetkan. Penerapan ke satu grup mungkin menghapus komponen milik grup yang belum Anda gunakan kembali. Buat penerapan untuk setiap grup benda milik perangkat.

Setelah Anda membuat penerapan pemulihan, verifikasi bahwa setiap penerapan berhasil diselesaikan. Jika penerapan pemulihan gagal dan memutar kembali pada versi nukleus yang lebih awal dari 2.18.3, perangkat kehilangan catatan lagi. Anda harus mengulangi pemulihan.

Setelah penerapan pemulihan selesai dengan sukses, perangkat tidak kehilangan catatan ini lagi. Ini benar bahkan jika perangkat masih menjalankan Greengrass nucleus v2.18.2 atau sebelumnya. Penerapan mengembalikan status internal yang melindungi catatan, sehingga kegagalan dan rollback penerapan nanti tidak menyebabkan kerugian ini. Jika Anda menginstal ulang perangkat lunak AWS IoT Greengrass Core, perangkat mungkin kehilangan catatan ini lagi.

Pencegahan

Tingkatkan perangkat inti ke Greengrass nucleus v2.18.3 atau yang lebih baru untuk mencegah masalah ini.

catatan

Pantau penerapan peningkatan inti pada perangkat yang mungkin kehilangan catatan ini. Jika penyebaran pemutakhiran nukleus gagal dan memutar kembali pada perangkat yang tidak diperbaiki, perangkat mungkin segera kehilangan catatan ini. Jika ini terjadi, buat penerapan yang menargetkan setiap grup benda perangkat segera setelah pemutakhiran gagal untuk mencegah hilangnya komponen.

Bagaimana perangkat kehilangan catatan ini

Perangkat kehilangan catatan ini jika semua kondisi berikut benar:

  1. Perangkat belum menerima penerapan yang berhasil.

  2. Penyebaran pertama ke perangkat gagal setelah aktivasi dan memutar kembali.

  3. Penyebaran berikutnya berjalan pada perangkat, yang merusak keadaan internal.

  4. Perangkat memulai ulang di lain waktu.

Perangkat yang penerapan pertamanya berhasil diselesaikan tidak kehilangan catatan ini.

Info: com.aws.greengrass.deployment. DeploymentDocumentDownloader: Memanggil cloud Greengrass untuk mendapatkan konfigurasi penerapan penuh

Anda mungkin melihat pesan informasi ini dicetak beberapa kali tanpa kesalahan, karena perangkat inti mencatat kesalahan di tingkat log DEBUG. Masalah ini dapat terjadi ketika perangkat inti menerima dokumen deployment yang besar. Ketika kesalahan ini terjadi, deployment ini mencoba ulang tanpa batas waktu, dan statusnya Dalam proses (IN_PROGRESS). Untuk informasi selengkapnya tentang cara mengatasi masalah ini, lihat entri pemecahan masalah ini.

Disebabkan oleh: software.amazon.awssdk.services.greengrassv2data.model. GreengrassV2DataException: null (Layanan: GreenGrassV2Data, Kode Status: 403, ID Permintaan: < some_request_id, ID Permintaan Diperpanjang>: null)

Anda mungkin melihat kesalahan ini ketika API dataplane tidak memiliki iot:Connect izin. Jika Anda tidak memiliki kebijakan yang benar, Anda akan menerimaGreengrassV2DataException: 403. Untuk membuat kebijakan izin, ikuti instruksi berikut:Buat AWS IoT kebijakan.

Masalah komponen perangkat inti

Memecahkan masalah komponen Greengrass pada perangkat inti.

Peringatkan: '<perintah>' tidak dikenali sebagai perintah internal atau eksternal

Anda mungkin melihat kesalahan ini di log komponen Greengrass ketika perangkat lunak AWS IoT Greengrass Core gagal menjalankan perintah dalam skrip siklus hidup komponen. Status komponen menjadi BROKEN sebagai akibat dari kesalahan ini. Kesalahan ini dapat terjadi jika pengguna sistem yang menjalankan komponen, sepertiggc_user, tidak dapat menemukan perintah yang dapat dieksekusi di folder di PATH.

Pada perangkat Windows, periksa apakah folder yang berisi eksekusi ada di PATH untuk pengguna sistem yang menjalankan komponen. Jika hilang dariPATH, lakukan salah satu hal berikut:

  • Tambahkan folder yang dapat dieksekusi ke variabel PATH sistem, yang tersedia untuk semua pengguna. Kemudian, restart komponen.

    Jika Anda menjalankan Greengrass nucleus 2.5.0, setelah Anda memperbarui variabel PATH sistem, Anda harus me-restart perangkat lunak AWS IoT Greengrass Core untuk menjalankan komponen dengan yang diperbarui. PATH Jika perangkat lunak AWS IoT Greengrass Core tidak menggunakan yang diperbarui PATH setelah Anda me-restart perangkat lunak, mulai ulang perangkat dan coba lagi. Untuk informasi selengkapnya, lihat Jalankan perangkat lunak AWS IoT Greengrass Core.

  • Tambahkan folder yang dapat dieksekusi ke variabel PATH pengguna untuk pengguna sistem yang menjalankan komponen.

Skrip Python tidak mencatat pesan

Perangkat inti Greengrass mengumpulkan log yang dapat Anda gunakan untuk mengidentifikasi masalah dengan komponen. Jika pesan stdout dan stderr skrip Python Anda tidak muncul di log komponen Anda, Anda mungkin perlu menyiram buffer atau menonaktifkan buffer untuk stream output standar ini di Python. Lakukan salah satu langkah berikut ini:

  • Jalankan Python dengan -u untuk menonaktifkan buffering pada stdout dan stderr.

    Linux or Unix
    python3 -u hello_world.py
    Windows
    py -3 -u hello_world.py
  • Gunakan Setenv dalam resep komponen Anda untuk mengatur variabel lingkungan PYTHONUNBUFFERED pada string tak kosong. Variabel lingkungan ini menonaktifkan buffering pada stdout dan stderr.

  • Siram buffer untuk pengaliran stdout atau stderr. Lakukan salah satu tindakan berikut:

    • Siram pesan ketika Anda mencetak.

      import sys print('Hello, error!', file=sys.stderr, flush=True)
    • Siram pesan setelah Anda mencetak. Anda dapat mengirim beberapa pesan sebelum Anda menyiram stream.

      import sys print('Hello, error!', file=sys.stderr) sys.stderr.flush()

Untuk informasi selengkapnya tentang cara memverifikasi bahwa skrip Python mengeluarkan pesan log, lihat Memantau AWS IoT Greengrass log.

Konfigurasi komponen tidak diperbarui saat mengubah konfigurasi default

Saat Anda mengubah DefaultConfiguration resep komponen, konfigurasi default baru tidak akan menggantikan konfigurasi komponen yang ada selama penerapan. Untuk menerapkan konfigurasi default baru, Anda harus mengatur ulang konfigurasi komponen ke pengaturan defaultnya. Saat Anda menerapkan komponen, tentukan satu string kosong sebagai pembaruan reset.

Console
Setel ulang jalur
[""]
AWS CLI

Perintah berikut membuat penerapan ke perangkat inti.

aws greengrassv2 create-deployment --cli-input-json file://reset-configuration-deployment.json

reset-configuration-deployment.jsonFile berisi dokumen JSON berikut.

{ "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "deploymentName": "Deployment for MyGreengrassCore", "components": { "com.example.HelloWorld": { "componentVersion": "1.0.0", "configurationUpdate": {, "reset": [""] } } } }
Greengrass CLI

Perintah Greengrass CLI berikut membuat penyebaran lokal pada perangkat inti.

sudo greengrass-cli deployment create \ --recipeDir recipes \ --artifactDir artifacts \ --merge "com.example.HelloWorld=1.0.0" \ --update-config reset-configuration-deployment.json

reset-configuration-deployment.jsonFile berisi dokumen JSON berikut.

{ "com.example.HelloWorld": { "RESET": [""] } }

awsiot.greengrasscoreipc.model. UnauthorizedError

Anda mungkin melihat kesalahan ini di log komponen Greengrass ketika komponen tidak memiliki izin untuk melakukan operasi IPC pada sumber daya. Untuk memberikan izin komponen untuk memanggil operasi IPC, tentukan kebijakan otorisasi IPC dalam konfigurasi komponen. Untuk informasi selengkapnya, lihat Otorisasi komponen untuk melakukan operasi IPC.

Tip

Jika Anda mengubah DefaultConfiguration resep komponen, Anda harus mengatur ulang konfigurasi komponen ke konfigurasi default baru. Saat Anda menerapkan komponen, tentukan satu string kosong sebagai pembaruan reset. Untuk informasi selengkapnya, lihat Konfigurasi komponen tidak diperbarui saat mengubah konfigurasi default.

com.aws.greengrass.authorization.pengecualian. AuthorizationException: ID kebijakan duplikat "<id>" untuk utama "<componentList>”

Anda mungkin melihat kesalahan ini jika beberapa kebijakan otorisasi IPC, termasuk di semua komponen pada perangkat inti, menggunakan ID kebijakan yang sama.

Periksa kebijakan otorisasi IPC komponen Anda, perbaiki duplikat, dan coba lagi. Untuk membuat ID kebijakan unik, sebaiknya gabungkan nama komponen, nama layanan IPC, dan penghitung. Untuk informasi selengkapnya, lihat Otorisasi komponen untuk melakukan operasi IPC.

Tip

Jika Anda mengubah DefaultConfiguration resep komponen, Anda harus mengatur ulang konfigurasi komponen ke konfigurasi default baru. Saat Anda menerapkan komponen, tentukan satu string kosong sebagai pembaruan reset. Untuk informasi selengkapnya, lihat Konfigurasi komponen tidak diperbarui saat mengubah konfigurasi default.

com.aws.greengrass.tes. CredentialRequestHandler: Kesalahan dalam mengambil AwsCredentials dari TES (HTTP 400)

Anda mungkin melihat kesalahan ini ketika perangkat inti tidak dapat memperoleh AWS kredenSIAL dari layanan pertukaran token. Kode status HTTP 400 menunjukkan bahwa kesalahan ini terjadi karena peran IAM pertukaran token perangkat inti tidak ada atau tidak memiliki hubungan kepercayaan yang memungkinkan penyedia AWS IoT kredenSIAL untuk mengasumsikannya.

Lakukan hal-hal berikut:

  1. Identifikasi peran pertukaran token yang digunakan perangkat inti. Pesan kesalahan menyertakan alias AWS IoT peran perangkat inti, yang menunjuk ke peran pertukaran token. Jalankan perintah berikut di komputer pengembangan Anda, dan ganti MyGreengrassCoreTokenExchangeRoleAlias dengan nama alias AWS IoT peran dari pesan kesalahan.

    aws iot describe-role-alias --role-alias MyGreengrassCoreTokenExchangeRoleAlias

    Tanggapan termasuk Nama Sumber Daya Amazon (ARN) dari peran IAM pertukaran token.

    { "roleAliasDescription": { "roleAlias": "MyGreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/MyGreengrassCoreTokenExchangeRoleAlias", "roleArn": "arn:aws:iam::123456789012:role/MyGreengrassV2TokenExchangeRole", "owner": "123456789012", "credentialDurationSeconds": 3600, "creationDate": "2021-02-05T16:46:18.042000-08:00", "lastModifiedDate": "2021-02-05T16:46:18.042000-08:00" } }
  2. Periksa apakah peran itu ada. Jalankan perintah berikut, dan ganti MyGreengrassV2TokenExchangeRole dengan nama peran pertukaran token.

    aws iam get-role --role-name MyGreengrassV2TokenExchangeRole

    Jika perintah mengembalikan NoSuchEntity kesalahan, peran tidak ada, dan Anda harus membuatnya. Untuk informasi selengkapnya tentang cara membuat dan mengonfigurasi peran ini, lihatOtorisasi perangkat inti untuk berinteraksi dengan layanan AWS.

  3. Periksa apakah peran tersebut memiliki hubungan kepercayaan yang memungkinkan penyedia AWS IoT kredenSIAL untuk mengasumsikannya. Respons dari langkah sebelumnya berisiAssumeRolePolicyDocument, yang mendefinisikan hubungan kepercayaan peran. Peran harus mendefinisikan hubungan kepercayaan yang memungkinkan credentials.iot.amazonaws.com untuk mengasumsikannya. Dokumen ini harus terlihat mirip dengan contoh berikut.

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

    Jika hubungan kepercayaan peran tidak memungkinkan credentials.iot.amazonaws.com untuk mengasumsikannya, Anda harus menambahkan hubungan kepercayaan ini ke peran tersebut. Untuk informasi selengkapnya, lihat Memodifikasi peran dalam Panduan AWS Identity and Access Management Pengguna.

com.aws.greengrass.tes. CredentialRequestHandler: Kesalahan dalam mengambil AwsCredentials dari TES (HTTP 403)

Anda mungkin melihat kesalahan ini ketika perangkat inti tidak dapat memperoleh AWS kredenSIAL dari layanan pertukaran token. Kode status HTTP 403 menunjukkan bahwa kesalahan ini terjadi karena AWS IoT kebijakan perangkat inti tidak memberikan iot:AssumeRoleWithCertificate izin untuk alias AWS IoT peran perangkat inti.

Tinjau AWS IoT kebijakan perangkat inti, dan tambahkan iot:AssumeRoleWithCertificate izin untuk alias AWS IoT peran perangkat inti. Pesan kesalahan menyertakan alias AWS IoT peran perangkat inti saat ini. Untuk informasi selengkapnya tentang izin ini dan cara memperbarui AWS IoT kebijakan perangkat inti, lihat AWS IoT Kebijakan minimal untuk perangkat AWS IoT Greengrass V2 inti danMemperbarui AWS IoT kebijakan perangkat inti.

com.aws.greengrass.tes. CredentialsProviderError: Tidak dapat memuat kredenSIAL dari penyedia mana pun

Anda mungkin melihat kesalahan ini saat komponen mencoba meminta AWS kredenSIAL dan tidak dapat terhubung ke layanan pertukaran token.

Lakukan hal-hal berikut:

  • Periksa apakah komponen menyatakan ketergantungan pada komponen layanan pertukaran token,aws.greengrass.TokenExchangeService. Jika tidak, tambahkan dependensi dan gunakan kembali komponen.

  • Jika komponen berjalan di docker, pastikan Anda menerapkan pengaturan jaringan dan variabel lingkungan yang tepat, sesuai Gunakan AWS kredensil dalam komponen kontainer Docker (Linux) dengan.

  • Jika komponen ditulis dalam NodeJS, setel dn DefaultResultOrder s.set ke. ipv4first

  • Per /etc/hosts iksa entri yang dimulai dengan ::1 dan berisilocalhost. Hapus entri untuk melihat apakah itu menyebabkan komponen terhubung ke layanan pertukaran token di alamat yang salah.

Kesalahan yang diterima saat mencoba mengambil metadata ECS: Tidak dapat terhubung ke URL titik akhir: "<token ExchangeServiceEndpoint>”

Anda mungkin melihat kesalahan ini ketika komponen tidak menjalankan layanan pertukaran token dan komponen mencoba meminta AWS kredenSIAL.

Lakukan hal-hal berikut:

  • Periksa apakah komponen menyatakan ketergantungan pada komponen layanan pertukaran token,aws.greengrass.TokenExchangeService. Jika tidak, tambahkan dependensi dan gunakan kembali komponen.

  • Periksa apakah komponen menggunakan AWS kredenSIAL dalam install siklus hidupnya. AWS IoT Greengrass tidak menjamin ketersediaan layanan pertukaran token selama install siklus hidup. Perbarui komponen untuk memindahkan kode yang menggunakan AWS kredenSIAL ke dalam run siklus hidup startup atau, lalu gunakan ulang komponen tersebut.

CopyFrom: < configurationPath > sudah menjadi wadah, bukan daun

Anda mungkin melihat kesalahan ini saat mengubah nilai konfigurasi dari tipe wadah (daftar atau objek) ke tipe non-kontainer (string, angka, atau Boolean). Lakukan hal-hal berikut:

  1. Periksa resep komponen untuk melihat apakah konfigurasi defaultnya menetapkan nilai konfigurasi tersebut ke daftar atau objek. Jika demikian, hapus atau ubah nilai konfigurasi itu.

  2. Buat penerapan untuk mengatur ulang nilai konfigurasi tersebut ke nilai defaultnya. Untuk informasi selengkapnya, lihat Buat deployment dan Perbarui konfigurasi komponen.

Kemudian, Anda dapat mengatur nilai konfigurasi itu ke string, angka, atau Boolean.

com.aws.greengrass.componentmanager.plugins.docker.. DockerLoginException: Kesalahan masuk ke registri menggunakan kredenSIAL - 'Stub menerima data buruk. '

Anda mungkin melihat kesalahan ini di log inti Greengrass saat komponen pengelola aplikasi Docker mencoba mengunduh gambar Docker dari repositori pribadi di Amazon Elastic Container Registry (Amazon ECR). Kesalahan ini terjadi jika Anda menggunakan wincred Docker credential helper ()docker-credential-wincred. Akibatnya, Amazon ECR tidak dapat menyimpan kredenSIAL login.

Lakukan salah satu tindakan berikut:

  • Jika Anda tidak menggunakan pembantu kredensi wincred Docker, hapus docker-credential-wincred program dari perangkat inti.

  • Jika Anda menggunakan pembantu kreden wincred si Docker, lakukan hal berikut:

    1. Ganti nama docker-credential-wincred program pada perangkat inti. Ganti wincred dengan nama baru untuk pembantu kredensi Windows Docker. Misalnya, Anda dapat mengganti namanya menjadidocker-credential-wincredreal.

    2. Perbarui credsStore opsi di file konfigurasi Docker (.docker/config.json) untuk menggunakan nama baru untuk pembantu kredensi Windows Docker. Misalnya, jika Anda mengganti nama program menjadidocker-credential-wincredreal, perbarui credsStore opsi menjadiwincredreal.

      { "credsStore": "wincredreal" }

java.io.ioException: Tidak dapat menjalankan program “cmd”...: [LogonUser] Kata sandi untuk akun ini telah kedaluwarsa.

Anda mungkin melihat kesalahan ini pada perangkat inti Windows ketika pengguna sistem yang menjalankan proses komponen, sepertiggc_user, memiliki kata sandi yang kedaluwarsa. Akibatnya, perangkat lunak AWS IoT Greengrass Core tidak dapat menjalankan proses komponen sebagai pengguna sistem itu.

Untuk memperbarui kata sandi pengguna sistem Greengrass
  1. Jalankan perintah berikut sebagai administrator untuk mengatur kata sandi pengguna. Ganti ggc_user dengan pengguna sistem, dan ganti password dengan kata sandi yang akan diatur.

    net user ggc_user password
  2. Gunakan PsExec utilitas untuk menyimpan kata sandi baru pengguna di instance Credential Manager untuk LocalSystem akun. Ganti password dengan kata sandi pengguna yang Anda tetapkan.

    psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
Tip

Tergantung pada konfigurasi Windows Anda, kata sandi pengguna mungkin disetel untuk kedaluwarsa pada tanggal di masa mendatang. Untuk memastikan aplikasi Greengrass Anda terus beroperasi, lacak kapan kata sandi kedaluwarsa, dan perbarui sebelum kedaluwarsa. Anda juga dapat mengatur kata sandi pengguna agar tidak pernah kedaluwarsa.

  • Untuk memeriksa kapan pengguna dan kata sandinya kedaluwarsa, jalankan perintah berikut.

    net user ggc_user | findstr /C:expires
  • Untuk mengatur kata sandi pengguna agar tidak pernah kedaluwarsa, jalankan perintah berikut.

    wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
  • Jika Anda menggunakan Windows 10 atau lebih baru di mana wmic perintah tidak digunakan lagi, jalankan perintah berikut PowerShell .

    Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}

aws.rumput hijau. StreamManager: Instan melebihi instan minimum atau maksimum

Saat Anda memutakhirkan pengelola aliran v2.0.7 ke versi antara v2.0.8 dan v2.0.11, Anda mungkin melihat kesalahan berikut di log komponen pengelola aliran jika komponen 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 menerapkan pengelola aliran v2.0.7 dan Anda ingin memutakhirkan ke versi yang lebih baru, Anda harus memutakhirkan ke stream manager v2.0.12 secara langsung. Untuk informasi selengkapnya tentang komponen pengelola aliran, lihatManajer pengaliran.

Masalah komponen fungsi Lambda perangkat inti

Memecahkan masalah komponen fungsi Lambda pada perangkat inti.

Subsistem cgroup berikut tidak dipasang: perangkat, memori

Anda mungkin melihat kesalahan ini saat menjalankan fungsi Lambda dalam wadah dalam kasus berikut:

  • Perangkat inti tidak mengaktifkan cgroup v1 untuk memori atau perangkat cgroup.

  • Perangkat inti mengaktifkan cgroups v2. Fungsi Greengrass Lambda memerlukan cgroups v1, dan cgroups v1 dan v2 saling eksklusif.

Untuk mengaktifkan cgroups v1, boot perangkat dengan parameter kernel Linux berikut.

cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
Tip

Pada Raspberry Pi, edit /boot/cmdline.txt file untuk mengatur parameter kernel perangkat.

ipc_client.py:64, Kesalahan HTTP 400: Permintaan Buruk, B'Tidak ada langganan untuk label-or-lambda-arn sumber dan label-or-lambda-arn < > < >

Anda mungkin melihat kesalahan ini saat menjalankan fungsi V1 Lambda, yang menggunakan AWS IoT Greengrass Core SDK, pada perangkat inti V2 tanpa menentukan langganan di komponen Router langganan warisan router langganan lama. Untuk memperbaiki masalah ini, gunakan dan konfigurasikan router langganan lama untuk menentukan langganan yang diperlukan. Untuk informasi selengkapnya, lihat Impor fungsi Lambda V1.

Versi komponen dihentikan

Anda mungkin melihat pemberitahuan di Dasbor Kesehatan Pribadi (PHD) saat versi komponen pada perangkat inti Anda dihentikan. Versi komponen mengirimkan pemberitahuan ini ke PHD Anda dalam waktu 60 menit setelah dihentikan.

Untuk melihat penerapan mana yang perlu Anda revisi, lakukan hal berikut menggunakan: AWS Command Line Interface

  1. Jalankan perintah berikut untuk mendapatkan daftar perangkat inti Anda.

    aws greengrassv2 list-core-devices
  2. Jalankan perintah berikut untuk mengambil status komponen pada setiap perangkat inti dari Langkah 1. Ganti coreDeviceName dengan nama setiap perangkat inti untuk kueri.

    aws greengrassv2 list-installed-components --core-device-thing-name coreDeviceName
  3. Kumpulkan perangkat inti dengan versi komponen yang dihentikan diinstal dari langkah-langkah sebelumnya.

  4. Jalankan perintah berikut untuk mengambil status semua pekerjaan penerapan untuk setiap perangkat inti dari Langkah 3. Ganti coreDeviceName dengan nama perangkat inti untuk kueri.

    aws greengrassv2 list-effective-deployments --core-device-thing-name coreDeviceName

    Tanggapan berisi daftar tugas deployment untuk perangkat inti. Anda dapat merevisi penerapan untuk memilih versi komponen lain. Untuk informasi selengkapnya tentang cara merevisi penerapan, lihat Mer evisi penerapan.

Masalah Antarmuka Baris Perintah Greengrass

Memecahkan masalah dengan Greengrass CLI.

java.long. RuntimeException: Tidak dapat membuat klien ipc

Anda mungkin melihat kesalahan ini saat menjalankan perintah Greengrass CLI dan Anda menentukan folder root yang berbeda dari tempat perangkat lunak AWS IoT Greengrass Core diinstal.

Lakukan salah satu hal berikut untuk mengatur jalur root, dan ganti /greengrass/v2 dengan jalur ke instalasi perangkat lunak AWS IoT Greengrass Core Anda:

  • Atur GGC_ROOT_PATH variabel lingkungan ke /greengrass/v2.

  • Tambahkan --ggcRootPath /greengrass/v2 argumen ke perintah Anda seperti yang ditunjukkan pada contoh berikut.

    greengrass-cli --ggcRootPath /greengrass/v2 <command> <subcommand> [arguments]

AWS Command Line Interface masalah

Memec AWS CLI ahkan masalah untuk AWS IoT Greengrass V2.

Kesalahan: Pilihan tidak valid: 'greengrassv2'

Anda mungkin melihat kesalahan ini saat menjalankan AWS IoT Greengrass V2 perintah dengan AWS CLI (misalnya,aws greengrassv2 list-core-devices).

Kesalahan ini menunjukkan bahwa Anda memiliki versi AWS CLI yang tidak mendukung AWS IoT Greengrass V2. Untuk menggunakan AWS IoT Greengrass V2 AWS CLI, Anda harus memiliki salah satu versi berikut atau yang lebih baru:

  • Versi AWS CLI V1 minimum: v1.18.197

  • Versi AWS CLI V2 minimum: v2.1.11

Tip

Anda dapat menjalankan perintah berikut untuk memeriksa versi AWS CLI yang Anda miliki.

aws --version

Untuk mengatasi masalah ini, perbarui AWS CLI ke versi yang lebih baru yang mendukung AWS IoT Greengrass V2. Untuk informasi selengkapnya, lihat Menginstal, memperbarui, dan mencopot instalasi AWS CLI di Panduan Pengguna AWS Command Line Interface .