Jalankan fungsi AWS Lambda - AWS IoT Greengrass

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

Jalankan fungsi AWS Lambda

catatan

AWS IoT GreengrassSaat ini tidak mendukung fitur ini pada perangkat inti Windows.

Anda dapat mengimpor fungsi AWS Lambda sebagai komponen yang berjalan pada perangkat inti AWS IoT Greengrass. Anda mungkin ingin melakukan hal ini dalam kasus berikut:

fungsi Lambda meliputi dependensi pada komponen-komponen berikut. Anda tidak perlu mendefinisikan komponen ini sebagai dependensi ketika Anda mengimpor fungsi tersebut. Ketika Anda men-deploy komponen fungsi Lambda, deployment tersebut mencakup dependensi komponen Lambda ini.

Persyaratan

Perangkat inti dan fungsi Lambda Anda harus memenuhi persyaratan berikut bagi Anda untuk menjalankan fungsi pada perangkat lunak inti AWS IoT Greengrass:

  • Perangkat inti Anda harus memenuhi persyaratan untuk menjalankan fungsi Lambda. Jika Anda ingin perangkat inti untuk menjalankan fungsi Lambda kontainer, perangkat harus memenuhi persyaratan untuk melakukannya. Untuk informasi selengkapnya, lihat Persyaratan fungsi Lambda.

  • Anda harus menginstal bahasa pemrograman yang digunakan oleh fungsi Lambda pada perangkat inti Anda.

    Tip

    Anda dapat membuat komponen yang menginstal bahasa pemrograman, dan kemudian menentukan komponen itu sebagai dependensi dari komponen fungsi Lambda Anda. Greengrass mendukung semua versi yang didukung Lambda dari Python, Node.js, dan Java runtime. Greengrass tidak menerapkan pembatasan tambahan apa pun pada versi runtime Lambda yang tidak digunakan lagi. Anda dapat menjalankan fungsi Lambda yang menggunakan runtime yang tidak digunakan lagiAWS IoT Greengrass, tetapi Anda tidak dapat membuatnyaAWS Lambda. Untuk informasi lebih lanjut tentang dukungan AWS IoT Greengrass untuk waktu aktif Lambda, lihat Jalankan fungsi AWS Lambda.

Mengkonfigurasi siklus hidup fungsi Lambda

Siklus hidup fungsi Greengrass Lambda menentukan kapan fungsi dimulai dan bagaimana menciptakan dan menggunakan kontainer. Siklus hidup juga menentukan bagaimanaAWS IoT GreengrassPerangkat lunak inti mempertahankan variabel dan logika preprocessing yang berada di luar fungsi handler.

AWS IoT Greengrassmendukung siklus hidup on-demand (default) dan berumur panjang:

  • Sesuai permintaanfungsi mulai ketika mereka dipanggil dan berhenti ketika tidak ada tugas yang tersisa untuk dijalankan. Setiap pemanggilan fungsi membuat wadah terpisah, juga disebut sandbox, untuk memproses pemanggilan, kecuali jika wadah yang ada tersedia untuk digunakan kembali. Salah satu kontainer mungkin memproses data yang Anda kirim ke fungsi.

    Beberapa pemanggilan dari fungsi on-demand dapat berjalan secara bersamaan.

    Variabel dan logika preprocessing yang Anda tentukan di luar fungsi handler tidak dipertahankan ketika kontainer baru dibuat.

  • Berumur panjang(ataudisematkan) fungsi dimulai ketikaAWS IoT GreengrassPerangkat lunak inti dimulai dan berjalan dalam satu wadah. Container yang sama memproses semua data yang Anda kirim ke fungsi.

    Beberapa pemanggilan diantri sampaiAWS IoT GreengrassPerangkat lunak inti menjalankan pemanggilan sebelumnya.

    Variabel dan logika preprocessing yang Anda tentukan di luar fungsi handler dipertahankan untuk setiap pemanggilan handler.

    Gunakan fungsi Lambda berumur panjang ketika Anda perlu mulai melakukan pekerjaan tanpa input awal. Misalnya, fungsi yang berumur panjang dapat memuat dan mulai memproses model pembelajaran mesin agar siap saat fungsi menerima data perangkat.

    catatan

    Fungsi berumur panjang memiliki timeout yang terkait dengan setiap doa dari handler mereka. Jika Anda ingin memanggil kode yang berjalan tanpa batas waktu, Anda harus memulainya di luar handler. Pastikan bahwa tidak ada kode pemblokiran di luar handler yang mungkin mencegah fungsi dari inisialisasi.

    Fungsi-fungsi ini berjalan kecualiAWS IoT GreengrassPerangkat lunak inti berhenti, seperti selama penyebaran atau reboot. Fungsi-fungsi ini tidak akan berjalan jika fungsi menemukan pengecualian yang tidak tertangkap, melebihi batas memori, atau memasuki status kesalahan, seperti batas waktu penangan.

Untuk informasi selengkapnya tentang penggunaan kembali kontainer, lihatMemahami Penggunaan Kembali Kontainer diAWS Lambdadi dalamAWSHitung Blog.

Mengkonfigurasi kontainerisasi fungsi Lambda

Secara default, fungsi Lambda berjalan di dalamAWS IoT Greengrasswadah. Wadah Greengrass menyediakan isolasi antara fungsi Anda dan host. Isolasi ini meningkatkan keamanan untuk host dan fungsi dalam wadah.

Kami menyarankan Anda menjalankan fungsi Lambda dalam wadah Greengrass, kecuali jika kasus penggunaan Anda mengharuskannya berjalan tanpa kontainerisasi. Dengan menjalankan fungsi Lambda Anda di wadah Greengrass, Anda memiliki kontrol lebih besar atas cara membatasi akses ke sumber daya.

Anda mungkin menjalankan fungsi Lambda tanpa kontainerisasi dalam kasus berikut:

  • Anda ingin menjalankanAWS IoT Greengrasspada perangkat yang tidak mendukung mode kontainer. Contohnya adalah jika Anda ingin menggunakan distribusi Linux khusus, atau memiliki versi kernel sebelumnya yang kedaluwarsa.

  • Anda ingin menjalankan fungsi Lambda Anda di lingkungan kontainer lain dengan overlayFS sendiri, tetapi menghadapi konflik overlayFS ketika Anda menjalankan dalam kontainer Greengrass.

  • Anda memerlukan akses ke sumber daya lokal dengan jalur yang tidak dapat ditentukan pada waktu penerapan, atau jalurnya dapat berubah setelah penerapan. Contoh sumber daya ini adalah perangkat pluggable.

  • Anda memiliki aplikasi sebelumnya yang ditulis sebagai proses, dan Anda mengalami masalah ketika Anda menjalankannya dalam wadah Greengrass.

Perbedaan kontainerisasi
Kontainerisasi Catatan

Kontainer Greengrass

  • Semua fitur AWS IoT Greengrass yang tersedia ketika Anda menjalankan fungsi Lambda dalam kontainer Greengrass.

  • Fungsi Lambda yang berjalan di wadah Greengrass tidak memiliki akses ke kode yang diterapkan dari fungsi Lambda lainnya, bahkan jika mereka berjalan dengan grup sistem yang sama. Dengan kata lain, fungsi Lambda Anda berjalan dengan peningkatan isolasi satu sama lain.

  • KarenaAWS IoT GreengrassPerangkat lunak inti menjalankan semua proses anak dalam wadah yang sama dengan fungsi Lambda, proses anak berhenti ketika fungsi Lambda berhenti.

Tanpa kontainer

  • Fitur berikut tidak tersedia untuk fungsi Lambda yang tidak terkontainer:

    • Batas memori fungsi Lambda.

    • Sumber daya perangkat dan volume lokal. Anda harus mengakses sumber daya ini menggunakan jalur file mereka di perangkat inti, bukan sebagai sumber daya fungsi Lambda.

  • Jika fungsi Lambda nonkontainerisasi Anda mengakses sumber daya machine learning, Anda harus mengidentifikasi pemilik sumber daya dan mengatur izin akses pada sumber daya, bukan pada fungsi Lambda.

  • Fungsi Lambda non-kontainer memiliki akses hanya-baca ke kode yang diterapkan dari fungsi Lambda lain yang dijalankan dengan grup sistem yang sama.

Jika Anda mengubah kontainerisasi untuk fungsi Lambda saat Anda menerapkannya, fungsi tersebut mungkin tidak berfungsi seperti yang diharapkan. Jika fungsi Lambda menggunakan sumber daya lokal yang tidak lagi tersedia dengan pengaturan kontainerisasi baru, penerapan gagal.

  • Saat Anda mengubah fungsi Lambda dari berjalan di wadah Greengrass menjadi berjalan tanpa kontainer, batas memori fungsi akan dibuang. Anda harus mengakses sistem file secara langsung daripada menggunakan sumber daya lokal terlampir. Anda harus menghapus sumber daya terlampir sebelum Anda menerapkan fungsi Lambda.

  • Ketika Anda mengubah fungsi Lambda dari berjalan tanpa kontainerisasi menjadi berjalan dalam kontainer, fungsi Lambda Anda kehilangan akses langsung ke sistem file. Anda harus menentukan batas memori untuk setiap fungsi atau menerima batas memori 16 MB default. Anda dapat mengonfigurasi pengaturan ini untuk setiap fungsi Lambda saat Anda menerapkannya.

Untuk mengubah pengaturan containerization untuk komponen fungsi Lambda, tetapkan nilaicontainerModeparameter konfigurasi ke salah satu opsi berikut saat Anda menyebarkan komponen.

  • NoContainer – Komponen tersebut tidak berjalan di lingkungan waktu aktif terisolasi.

  • GreengrassContainer – Komponen tersebut berjalan di lingkungan waktu aktif yang terisolasi di dalam kontainer AWS IoT Greengrass.

Untuk informasi selengkapnya tentang cara menerapkan dan mengonfigurasi komponen, lihatDeploy komponen AWS IoT Greengrass ke perangkatdanPerbarui konfigurasi komponen.