

Pemberitahuan akhir dukungan: Pada 7 Oktober 2026, AWS akan menghentikan dukungan untuk. AWS IoT Greengrass Version 1 Setelah 7 Oktober 2026, Anda tidak akan lagi dapat mengakses sumber daya. AWS IoT Greengrass V1 Untuk informasi lebih lanjut, silakan kunjungi [Migrasi dari AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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

# Modul 3 (bagian 2): Fungsi Lambda aktif AWS IoT Greengrass
<a name="module3-II"></a>

Modul ini mengeksplorasi perbedaan antara fungsi Lambda sesuai permintaan dan berumur panjang yang berjalan pada intinya. AWS IoT Greengrass 

Sebelum Anda memulai, jalankan perintah [Pengaturan Perangkat Greengrass](quick-start.md) atau pastikan Anda telah menyelesaikan [Modul 1](module1.md), [Modul 2](module2.md), dan [Modul 3 (Bagian 1)](module3-I.md).

Modul ini akan memakan waktu sekitar 30 menit untuk menyelesaikannya.

**Topics**
+ [Buat dan paket fungsi Lambda](package.md)
+ [Konfigurasikan fungsi Lambda yang berumur panjang untuk AWS IoT Greengrass](long-lived.md)
+ [Uji fungsi Lambda berumur panjang](long-testing.md)
+ [Uji fungsi Lambda sesuai permintaan](on-demand.md)

# Buat dan paket fungsi Lambda
<a name="package"></a>

Dalam langkah ini, Anda:
+ Buat paket deployment fungsi Lambda sesuai dengan kode fungsi dan dependensinya.
+ Gunakan konsol Lambda untuk membuat fungsi Lambda dan mengunggah paket deployment.
+ Terbitkan versi fungsi Lambda dan buat alias yang menunjuk ke versi.

 

1. Di komputer Anda, buka AWS IoT Greengrass Core SDK untuk Python yang Anda unduh dan ekstrak [Buat dan paketkan fungsi Lambda](create-lambda.md) dalam Modul 3-1.

   Fungsi Lambda dalam modul ini menggunakan:
   + File `greengrassHelloWorldCounter.py` di `examples\HelloWorldCounter`. Ini kode fungsi Lambda Anda.
   + Folder `greengrasssdk` ini. Ini SDK.

1. Buat paket deployment fungsi Lambda:

   1. Salin folder `greengrasssdk` ke dalam folder `HelloWorldCounter` yang berisi `greengrassHelloWorldCounter.py`.

   1. Simpan `greengrassHelloWorldCounter.py` dan folder `greengrasssdk` untuk file `zip` bernama `hello_world_counter_python_lambda.zip`. File `py` dan folder `greengrasssdk` harus berada di root direktori.  
![\[Screenshot menunjukkan isi zip dari hello_word_counter_python_lambda.zip.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/gg-get-started-046.png)

      Pada sistem mirip Unix (termasuk terminal Mac) yang telah `zip` diinstal, Anda dapat menggunakan perintah berikut untuk paket file dan folder:

      ```
      zip -r hello_world_counter_python_lambda.zip greengrasssdk greengrassHelloWorldCounter.py
      ```

   Sekarang Anda siap untuk membuat fungsi Lambda Anda dan mengunggah paket deployment.

1. Buka konsol Lambda dan pilih **Buat fungsi**.

1. Pilih **Tulis dari awal**.

1. Beri nama fungsi Anda **Greengrass\$1HelloWorld\$1Counter**, dan atur bidang yang tersisa sebagai berikut:
   + Untuk **Waktu aktif**, pilih **Python 3.7**.
   + Untuk **Izin**, pertahankan pengaturan default. Hal ini menciptakan peran eksekusi yang memberikan izin Lambda basic. Peran ini tidak digunakan oleh AWS IoT Greengrass Atau, Anda dapat menggunakan kembali peran yang Anda buat di Modul 3-1.

   Pilih **Buat fungsi**.  
![\[Bagian “Informasi dasar” dengan bidang “Nama fungsi” disetel ke “Greengrass_ HelloWorld _Counter” dan bidang “Runtime” disetel ke “Python 3.7".\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/gg-get-started-023-3.png)

1. Unggah paket deployment fungsi Lambda Anda.

   1. <a name="lambda-console-upload"></a>Pada tab **Kode** tersebut, di bawah **Sumber kode**, pilih **unggah dari**. Dari dropdown, pilih **file .zip**.  
![\[Unggah dari dropdown dengan file .zip disorot.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. Pilih **Unggah**, lalu pilih paket deployment `hello_world_counter_python_lambda.zip` Anda. Lalu, pilih **Simpan**. 

   1. <a name="lambda-console-runtime-settings-para"></a>Pada tab **Kode** fungsi, di bawah **Pengaturan waktu aktif**, pilih **Edit**, dan kemudian masukkan nilai-nilai berikut.
      + Untuk **Waktu pengoperasian**, pilih **Python 3.7**.
      + Untuk **Handler**, masukkan **greengrassHelloWorldCounter.function\$1handler**

   1. <a name="lambda-console-save-config"></a>Pilih **Simpan**.
**catatan**  
Tombol **Uji** di AWS Lambda konsol tidak berfungsi dengan fungsi ini. AWS IoT Greengrass Core SDK tidak berisi modul yang diperlukan untuk menjalankan fungsi Greengrass Lambda Anda secara independen di konsol. AWS Lambda Modul-modul ini (sebagai contoh, `greengrass_common`) dipasok ke fungsi setelah mereka di-deploy ke core Greengrass Anda.

1. Terbitkan versi pertama fungsi.

   1. Dari bagian atas halaman menu **Tindakan** ini, pilih **Terbitkan versi baru**. Untuk **Deskripsi Versi**, masukkan **First version**.

   1. Pilih **Terbitkan**.

1. Buat alias untuk versi fungsi Lambda.

   1. Dari bagian atas halaman menu **Tindakan** ini, pilih **Buat alias**.  
![\[Screenshot dari menu Tindakan diatur ke Buat alias.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/gg-get-started-028.png)

   1. Untuk **Nama**, masukkan **GG\$1HW\$1Counter**.

   1. Untuk **Versi**, pilih **1**.

   1. Pilih **Simpan**.  
![\[Buat alias screenshot dengan bidang Nama diatur ke GG_HW_Counter dan bidang Versi diatur ke 1.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/gg-get-started-048.png)

   Alias membuat satu entitas untuk fungsi Lambda Anda yang perangkat Greengrass dapat berlangganan. Dengan cara ini, Anda tidak perlu memperbarui langganan dengan nomor versi fungsi Lambda baru setiap kali fungsi tersebut dimodifikasi.

# Konfigurasikan fungsi Lambda yang berumur panjang untuk AWS IoT Greengrass
<a name="long-lived"></a>

Anda sekarang siap untuk mengonfigurasi fungsi Lambda Anda untuk AWS IoT Greengrass.

1. <a name="console-gg-groups"></a>**Di panel navigasi AWS IoT konsol, di bawah **Kelola**, perluas perangkat **Greengrass**, lalu pilih Grup (V1).**

1. Di bawah **Grup Greengrass**, pilih grup yang Anda buat di [Modul 2](module2.md).

1. **Pada halaman konfigurasi grup, pilih tab **fungsi Lambda, dan kemudian di bawah fungsi** **Lambda Saya**, pilih Tambah.**

1. Untuk **fungsi Lambda**, pilih **HelloWorldGreengrass\$1** \$1Counter.

1. Untuk **versi fungsi Lambda**, pilih alias ke versi yang Anda terbitkan.

1. Untuk **Timeout (detik)**, masukkan**25**. Fungsi Lambda ini tidur selama 20 detik sebelum setiap pemanggilan.

1. Untuk **Pinned**, pilih **True**.

1. Simpan nilai default untuk semua bidang lainnya, dan pilih **Tambahkan fungsi Lambda**.

# Uji fungsi Lambda berumur panjang
<a name="long-testing"></a>

Fungsi Lambda yang *[berumur panjang](lambda-functions.md#lambda-lifecycle)* dimulai secara otomatis ketika AWS IoT Greengrass inti dimulai dan berjalan dalam satu wadah (atau kotak pasir). Setiap variabel dan logika preprocessing didefinisikan di luar fungsi handler dipertahankan untuk setiap permintaan dari fungsi handler. Beberapa permintaan dari fungsi handler antri sampai permintaan sebelumnya telah dilaksanakan.

 Kode `greengrassHelloWorldCounter.py` yang digunakan dalam modul ini mendefinisikan `my_counter` variabel di luar dari fungsi handler.

**catatan**  
Anda dapat melihat kode di AWS Lambda konsol atau di [AWS IoT Greengrass Core SDK untuk GitHub Python aktif](https://github.com/aws/aws-greengrass-core-sdk-python/blob/master/examples/HelloWorldCounter/greengrassHelloWorldCounter.py).

Pada langkah ini, Anda membuat langganan yang memungkinkan fungsi Lambda AWS IoT dan bertukar pesan MQTT. Kemudian Anda men-deploy grup dan menguji fungsi.

1. Pada halaman konfigurasi grup, pilih **Langganan**, lalu pilih **Tambah**.

1. Di bawah **Jenis sumber**, pilih **fungsi Lambda**, lalu pilih **HelloWorldGreengrass\$1** \$1Counter.

1. Di bawah **Jenis target**, pilih **Layanan**, pilih **IoT Cloud**.

1. Untuk **Filter topik**, masukkan **hello/world/counter**.

1. Pilih **Buat langganan**.

   Langganan tunggal ini hanya berjalan dalam satu arah: dari fungsi `Greengrass_HelloWorld_Counter` Lambda ke. AWS IoT Untuk memanggil (atau memicu) fungsi Lambda ini dari cloud, Anda harus membuat langganan dalam arah yang bertentangan.

1. Ikuti langkah 1 - 5 untuk menambahkan langganan lain yang menggunakan nilai berikut. Langganan ini mengizinkan fungsi Lambda untuk menerima pesan dari AWS IoT. Anda menggunakan langganan ini saat mengirim pesan dari AWS IoT konsol yang memanggil fungsi tersebut.
   + Untuk sumbernya, pilih **Layanan**, lalu pilih **IoT Cloud**.
   + Untuk target, pilih **fungsi Lambda**, lalu pilih **HelloWorldGreengrass\$1** \$1Counter.
   + Untuk filter topik, masukkan **hello/world/counter/trigger**.

   Ekstensi `/trigger` digunakan dalam filter topik ini karena Anda membuat dua langganan dan tidak ingin mereka mengganggu satu sama lain.

1. Pastikan bahwa Greengrass daemon berjalan, seperti yang dijelaskan dalam [Men-deploy konfigurasi cloud ke perangkat core](configs-core.md).

1. <a name="console-actions-deploy"></a>Pada halaman konfigurasi grup, pilih **Deploy**.

1. <a name="console-test-after-deploy"></a>Setelah penerapan Anda selesai, kembali ke beranda AWS IoT konsol dan pilih **Uji**.

1. Konfigurasi bidang berikut:
   + Untuk **Topik langganan**, masukkan **hello/world/counter**.
   + Untuk **Kualitas Layanan**, pilih **0**.
   + Untuk **Tampilan muatan MQTT**, pilih **Tampilkan muatan sebagai string**.

1. Pilih **Berlangganan**.

   Tidak seperti [Bagian 1](module3-I.md) dari modul ini, Anda seharusnya tidak melihat pesan apa pun setelah Anda berlangganan `hello/world/counter`. Hal ini karena kode `greengrassHelloWorldCounter.py` yang menerbitkan ke topik `hello/world/counter` adalah di dalam fungsi handler, yang berjalan hanya ketika fungsi tersebut dipanggil.

   Dalam modul ini, Anda mengonfigurasi `Greengrass_HelloWorld_Counter` fungsi Lambda akan dipanggil ketika menerima pesan MQTT pada `hello/world/counter/trigger` topik.

   Langganan **Greengrass\$1 \$1Counter HelloWorld to** **IoT Cloud** memungkinkan fungsi untuk mengirim pesan ke topik tersebut. AWS IoT `hello/world/counter` Langganan **IoT Cloud** to **Greengrass\$1 HelloWorld \$1Counter** memungkinkan AWS IoT untuk mengirim pesan ke fungsi pada topik tersebut. `hello/world/counter/trigger`

1. Untuk menguji siklus hidup berumur panjang, memanggil fungsi Lambda dengan menerbitkan pesan ke `hello/world/counter/trigger` topik. Anda dapat menggunakan pesan default.  
![\[Default Hello dari pesan AWS IoT konsol yang dikirim ke hello/world/counter/trigger dengan tombol Publikasikan ke topik disorot.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/gg-get-started-057.png)
**catatan**  
 Fungsi `Greengrass_HelloWorld_Counter` mengabaikan isi dari pesan yang diterima. Itu hanya menjalankan kode di `function_handler`, yang mengirim pesan ke `hello/world/counter` topik. Anda dapat meninjau kode ini dari [AWS IoT Greengrass Core SDK untuk GitHub Python](https://github.com/aws/aws-greengrass-core-sdk-python/blob/master/examples/HelloWorldCounter/greengrassHelloWorldCounter.py).

Setiap kali pesan diterbitkan ke `hello/world/counter/trigger` topik, `my_counter` variabel bertambah. Jumlah doa ini ditampilkan dalam pesan yang dikirim dari fungsi Lambda. Karena fungsi handler mencakup siklus tidur 20 detik (`time.sleep(20)`), berulang kali memicu handler mengantri respons dari inti. AWS IoT Greengrass 

![\[Screenshot menunjukkan penambahan dari Invocation Count dari 1, 2, dan 3.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/gg-get-started-058.png)


# Uji fungsi Lambda sesuai permintaan
<a name="on-demand"></a>

Fungsi Lambda *[sesuai permintaan](lambda-functions.md#lambda-lifecycle)* memiliki fungsionalitas yang mirip dengan fungsi berbasis cloud. AWS Lambda Beberapa permohonan dari fungsi Lambda sesuai permintaan dapat berjalan secara paralel. Sebuah permohonan dari fungsi Lambda menciptakan kontainer terpisah untuk memproses permohonan atau menggunakan kembali kontainer yang ada, jika sumber daya mengizinkan. Setiap variabel atau preprocessing yang didefinisikan di luar fungsi handler tidak dipertahankan ketika kontainer dibuat.

1. Pada halaman konfigurasi grup, pilih tab **fungsi Lambda**.

1. Di bawah **fungsi Lambda Saya**, pilih **Greengrass\$1HelloWorld\$1Counter**Fungsi Lambda.

1. Pada **Greengrass\$1HelloWorld\$1Counter**halaman detail, pilih **Edit**.

1. Untuk **Pinned**, pilih **False**, lalu pilih **Simpan**.

1. <a name="console-actions-deploy"></a>Pada halaman konfigurasi grup, pilih **Deploy**.

1. <a name="console-test-after-deploy"></a>Setelah penerapan Anda selesai, kembali ke halaman beranda AWS IoT konsol dan pilih **Uji**.

1. Konfigurasi bidang berikut:
   + Untuk **Topik langganan**, masukkan **hello/world/counter**.
   + Untuk **Kualitas Layanan**, pilih **0**.
   + Untuk **Tampilan muatan MQTT**, pilih **Tampilkan muatan sebagai string**.  
![\[Screenshot dari halaman uji Langganan.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/gg-get-started-056.png)

1. Pilih **Berlangganan**.
**catatan**  
Anda seharusnya tidak melihat pesan apa pun setelah Anda berlangganan.

1. Untuk menguji siklus hidup Sesuai Permintaan, meminta fungsi dengan menerbitkan pesan ke `hello/world/counter/trigger` topik. Anda dapat menggunakan pesan default.

   1. Pilih **Terbitkan** tiga kali dengan cepat, dalam waktu lima detik setiap tekan tombol.  
![\[Screenshot yang menampilkan tombol Terbitkan ke topik, yang harus diklik dengan cepat tiga kali.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/gg-get-started-063.png)

      Setiap terbitkan memanggil fungsi handler dan menciptakan sebuah kontainer untuk setiap permohonan. Jumlah permohonan tidak bertambah untuk tiga kali Anda memicu fungsi karena setiap fungsi Lambda on-demand memiliki kontainer/sandbox sendiri.  
![\[Screenshot menunjukkan Hitungan Permohonan tetap pada 1.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/gg-get-started-064.png)

   1. Setelah sekitar 30 detik, pilih **Terbitkan ke topik**. Jumlah permohonan harus bertambah menjadi 2. Hal ini menunjukkan bahwa kontainer dibuat dari permohonan sebelumnya sedang digunakan kembali, dan bahwa variabel preprocessing luar dari fungsi handler disimpan.  
![\[Screenshot menunjukkan Permohonan Hitung sekarang di 2.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/gg-get-started-065.png)

Anda sekarang harus memahami dua jenis fungsi Lambda yang dapat berjalan di AWS IoT Greengrass core. Modul berikutnya, [Modul 4](module4.md), menunjukkan kepada Anda bagaimana perangkat IoT lokal dapat berinteraksi dalam suatu AWS IoT Greengrass grup.