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.

  • Fungsi Lambda Anda harus menggunakan salah satu waktu aktif berikut:

    • Python 3.9 —python3.9

    • Python 3.8 – python3.8

    • Python 3.7 – python3.7

    • Python 2.7 – python2.7 *

    • Jawa 11 —java11

    • Java 8 – java8

    • Node.js 14 —nodejs14.x

    • Node.js 12 —nodejs12.x *

    • Node.js 10 —nodejs10.x *

    * Anda dapat menjalankan fungsi Lambda yang menggunakan waktu aktif ini pada AWS IoT Greengrass, tetapi Anda tidak dapat membuatnya di AWS Lambda. Untuk informasi selengkapnya, lihat Kebijakan dukungan waktu aktif di Panduan Developer AWS Lambda.

Konfigurasikan siklus hidup fungsi Lambda

Siklus hidup fungsi Greengrass Lambda menentukan kapan fungsi dimulai dan bagaimana menciptakan dan menggunakan kontainer. Siklus hidup juga menentukan bagaimana perangkat lunakAWS IoT Greengrass Core mempertahankan variabel dan logika preprocessing yang berada di luar fungsi handler.

AWS IoT Greengrassdukungan siklus hidup sesuai permintaan (default) dan berumur panjang:

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

    Beberapa permohonan dari fungsi sesuai permintaan dapat berjalan secara bersamaan.

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

  • Fungsi yang berumur panjang (atau disematkan) mulai ketika perangkat lunakAWS IoT Greengrass Core dimulai dan berjalan dalam kontainer tunggal. Container yang sama memproses semua data yang Anda kirim ke fungsi.

    Beberapa pemanggilan diantrekan hingga perangkat lunakAWS IoT Greengrass Core berjalan pemanggilan sebelumnya.

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

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

    catatan

    Fungsi yang berumur panjang memiliki timeout yang terkait dengan setiap pemanggilan dari handler-nya. 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 kecuali perangkat lunakAWS IoT Greengrass Core 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, lihat Memahami Penggunaan Kembali KontainerAWS Lambda di dalam BlogAWS Komputasi ini.

Konfigurasikan kontainerisasi fungsi Lambda

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

Kami menyarankan Anda menjalankan fungsi Lambda dalam kontainer Greengrass, kecuali kasus penggunaan Anda mengharuskannya untuk menjalankan tanpa kontainerisasi. Dengan menjalankan fungsi Lambda Anda dalam kontainer Greengrass, Anda memiliki lebih banyak kontrol atas cara Anda membatasi akses ke sumber daya.

Anda mungkin menjalankan fungsi Lambda tanpa kontainerisasi dalam kasus berikut:

  • Anda ingin berjalanAWS IoT Greengrass di 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 deployment, atau jalur yang dapat berubah setelah deployment. Contoh sumber daya ini adalah perangkat pluggable.

  • Anda memiliki aplikasi sebelumnya yang ditulis sebagai proses, dan Anda mengalami masalah ketika Anda menjalankannya dalam kontainer 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 dalam kontainer Greengrass tidak dapat mengakses ke kode yang di-deploy oleh fungsi Lambda lainnya, bahkan jika mereka berjalan dengan grup sistem yang sama. Dengan kata lain, fungsi Lambda Anda berjalan dengan peningkatan isolasi dari satu sama lain.

  • Karena perangkat lunakAWS IoT Greengrass Core menjalankan semua proses anak dalam kontainer yang sama dengan fungsi Lambda, proses anak berhenti ketika fungsi Lambda berhenti.

Tanpa kontainer

  • Fitur-fitur berikut tidak tersedia untuk fungsi Lambda nonkontainerisasi:

    • Batas memori fungsi Lambda.

    • Sumber daya perangkat dan volume lokal. Anda harus mengakses sumber daya ini menggunakan jalur file mereka pada perangkat core 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 nonkontainerisasi memiliki akses hanya-baca ke kode yang di-deploy oleh fungsi Lambda lainnya yang berjalan dengan grup sistem yang sama.

Jika Anda mengubah kontainerisasi untuk fungsi Lambda ketika Anda men-deploy-nya, fungsi mungkin tidak berfungsi seperti yang diharapkan. Jika fungsi Lambda menggunakan sumber daya lokal yang tidak lagi tersedia dengan pengaturan kontainerisasi baru, deployment bisa gagal.

  • Ketika Anda mengubah fungsi Lambda dari berjalan dalam kontainer Greengrass menjadi berjalan tanpa kontainerisasi, batas memori fungsi dibuang. Anda harus mengakses sistem file secara langsung daripada menggunakan sumber daya lokal terlampir. Anda harus menghapus sumber daya terlampir sebelum Anda men-deploy 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 ketika Anda men-deploy-nya.

Untuk mengubah pengaturan containerization untuk komponen fungsi Lambda, tetapkan nilai parametercontainerMode konfigurasi ke salah satu opsi berikut saat Anda menerapkan 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 men-deploy dan mengonfigurasi komponen, lihatDeploy komponen AWS IoT Greengrass ke perangkat danPerbarui konfigurasi komponen.