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 di 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:
-
Anda memiliki kode aplikasi dalam fungsi Lambda yang ingin Anda deploy ke perangkat inti.
-
Anda memiliki aplikasi V1 AWS IoT Greengrass yang ingin Anda jalankan di perangkat inti AWS IoT Greengrass V2. Untuk informasi selengkapnya, lihat Langkah 2: Membuat dan menyebarkan AWS IoT Greengrass V2 komponen untuk memigrasi aplikasi AWS IoT Greengrass V1.
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.
-
Komponen peluncur Lambda (
aws.greengrass.LambdaLauncher
) menangani proses dan konfigurasi lingkungan. -
Komponen manajer Lambda (
aws.greengrass.LambdaManager
) menangani komunikasi antar proses dan penskalaan. -
Komponen waktu aktif Lambda (
aws.greengrass.LambdaRuntimes
) menyediakan artefak untuk setiap waktu aktif Lambda yang didukung.
Topik
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 runtime Python, Node.js, dan Java yang didukung Lambda. Greengrass tidak menerapkan batasan tambahan apa pun pada versi runtime Lambda yang tidak digunakan lagi. Anda dapat menjalankan fungsi Lambda yang menggunakan runtime usang iniAWS IoT Greengrass, tetapi Anda tidak dapat membuatnya. AWS Lambda Untuk informasi lebih lanjut tentang dukungan AWS IoT Greengrass untuk waktu aktif Lambda, lihat Jalankan fungsi 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 lunak AWS IoT Greengrass Core mempertahankan variabel dan logika preprocessing yang berada di luar fungsi handler.
AWS IoT Greengrassmendukung on-demand (default) dan siklus hidup yang berumur panjang:
-
Fungsi sesuai permintaan dimulai saat dipanggil dan berhenti ketika tidak ada tugas yang tersisa untuk dijalankan. Setiap pemanggilan fungsi membuat wadah terpisah, juga disebut kotak pasir, untuk memproses pemanggilan, kecuali wadah yang ada tersedia untuk digunakan kembali. Kontainer mana pun dapat memproses data yang Anda kirim ke fungsi.
Beberapa pemanggilan fungsi on-demand dapat berjalan secara bersamaan.
Variabel dan logika preprocessing yang Anda tentukan di luar fungsi handler tidak dipertahankan saat container baru dibuat.
-
Fungsi berumur panjang (atau disematkan) dimulai saat perangkat lunak AWS IoT Greengrass Core dimulai dan dijalankan dalam satu wadah. Kontainer yang sama memproses semua data yang Anda kirim ke fungsi.
Beberapa pemanggilan diantrian hingga perangkat lunak AWS IoT Greengrass Core menjalankan pemanggilan sebelumnya.
Variabel dan logika preprocessing yang Anda definisikan di luar fungsi handler dipertahankan untuk setiap pemanggilan handler.
Gunakan fungsi Lambda yang berumur panjang saat Anda harus mulai melakukan pekerjaan tanpa input awal apa pun. Misalnya, fungsi yang berumur panjang dapat memuat dan mulai memproses model pembelajaran mesin agar siap ketika fungsi menerima data perangkat.
catatan
Fungsi berumur panjang memiliki batas waktu yang terkait dengan setiap pemanggilan penangan mereka. Jika Anda ingin memanggil kode yang berjalan tanpa batas waktu, Anda harus memulainya di luar handler. Pastikan tidak ada kode pemblokiran di luar handler yang mungkin mencegah fungsi dari inisialisasi.
Fungsi-fungsi ini berjalan kecuali perangkat lunak AWS IoT Greengrass Core berhenti, seperti selama penerapan atau reboot. Fungsi-fungsi ini tidak akan berjalan jika fungsi tersebut menemukan pengecualian yang tidak tertangkap, melebihi batas memorinya, atau memasuki status kesalahan, seperti batas waktu penangan.
Untuk informasi selengkapnya tentang penggunaan kembali kontainer, lihat Memahami Penggunaan Kembali Kontainer AWS Lambda di Blog AWS
Konfigurasikan kontainerisasi fungsi Lambda
Secara default, fungsi Lambda berjalan di dalam wadah. AWS IoT Greengrass Wadah Greengrass memberikan 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 dalam wadah Greengrass, Anda memiliki kontrol lebih besar atas bagaimana Anda membatasi akses ke sumber daya.
Anda dapat menjalankan fungsi Lambda tanpa containerization dalam kasus berikut:
-
Anda ingin berjalan AWS IoT Greengrass di perangkat yang tidak mendukung mode penampung. 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 yang jalurnya dapat berubah setelah penerapan. Contoh sumber daya ini adalah perangkat yang dapat dicolokkan.
-
Anda memiliki aplikasi sebelumnya yang ditulis sebagai proses, dan Anda mengalami masalah saat menjalankannya di wadah Greengrass.
Perbedaan kontainerisasi | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Kontainerisasi | Catatan | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Kontainer Greengrass |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tanpa kontainer |
|
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 setelan kontainerisasi baru, penerapan gagal.
-
Saat Anda mengubah fungsi Lambda dari berjalan di wadah Greengrass menjadi berjalan tanpa kontainerisasi, batas memori fungsi akan dibuang. Anda harus mengakses sistem file secara langsung daripada menggunakan sumber daya lokal terlampir. Anda harus menghapus sumber daya yang terlampir sebelum 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 setelan kontainerisasi komponen fungsi Lambda, tetapkan nilai parameter containerMode
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 menerapkan dan mengonfigurasi komponen, lihat Deploy komponen AWS IoT Greengrass ke perangkat danPerbarui konfigurasi komponen.