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 *

    • Java 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 bagaimanaAWS IoT GreengrassPerangkat lunak inti mempertahankan variabel dan logika preprocessing yang berada di luar fungsi handler.

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

  • Sesuai permintaanFungsi mulai ketika mereka dipanggil dan berhenti ketika tidak ada tugas yang tersisa untuk berjalan. 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 pemanggilan fungsi sesuai permintaan 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. Kontainer yang sama memproses semua data yang Anda kirim ke fungsi.

    Beberapa pemanggilan diantrekan sampaiAWS IoT GreengrassPerangkat lunak inti menjalankan doa sebelumnya.

    Variabel dan logika preprocessing yang Anda tentukan 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 batas waktu yang terkait dengan setiap pemanggilan 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 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 keadaan kesalahan, seperti timeout handler.

Untuk informasi selengkapnya tentang penggunaan kembali kontainer, lihatMemahami Kontainer Reuse diAWS LambdadiAWSBlog komputasi.

Konfigurasikan kontainerisasi fungsi Lambda

Secara default, fungsi Lambda berjalan di dalamAWS IoT Greengrasskontainer. Wadah Greengrass memberikan 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 berjalan tanpa kontainerisasi. Dengan menjalankan fungsi Lambda Anda dalam kontainer Greengrass, Anda memiliki lebih banyak kontrol atas cara Anda membatasi akses ke sumber daya.

Anda dapat 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 deployment, atau jalur yang dapat berubah setelah deployment. Contoh sumber daya ini akan menjadi 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 di 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 isolasi yang meningkat dari satu sama lain.

  • KarenaAWS IoT GreengrassPerangkat lunak inti 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 non-kontainerisasi:

    • 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-kontainerisasi 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 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 kontainerisasi untuk komponen fungsi Lambda, atur nilaicontainerModeparameter konfigurasi ke salah satu opsi berikut ketika Anda men-deploy 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 perangkatdanPerbarui konfigurasi komponen.