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 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:

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 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 Komputasi.

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

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

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

  • Karena perangkat lunak AWS IoT Greengrass Core 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 non-kontainer:

    • Batas memori fungsi Lambda.

    • Sumber daya perangkat dan volume lokal. Anda harus mengakses sumber daya ini menggunakan jalur file mereka di perangkat inti alih-alih 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 berjalan 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 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.