Memulai Menggunakan .NET Dengan Fungsi AWS Lambda

  • Post author:
  • Post category:Tutorial

AWS Lambda Functions adalah model komputasi tanpa server yang memungkinkan Anda menjalankan kode tanpa server. Ini biasanya ditulis dengan bahasa seperti JavaScript dan Python, tetapi AWS sekarang mendukung banyak runtime yang berbeda, termasuk .NET untuk C#.

Mengapa Menggunakan .NET Untuk Lambda?

Ada banyak bahasa berbeda yang tersedia untuk Lambda sekarang, jadi Anda memiliki banyak pilihan. Umumnya, JavaScript dan Python digunakan untuk fungsi otomatisasi sederhana yang peduli dengan waktu startup yang cepat. Namun, mereka bukan yang paling berkinerja untuk pemrosesan berat, dan bahasa skrip yang diketik secara dinamis adalah kelemahan utama untuk aplikasi yang kompleks.

Jika C# adalah bahasa pilihan Anda, tidak ada banyak kerugian untuk menggunakannya untuk Lambda, terutama jika beralih ke Python atau JavaScript terlalu merepotkan. Alat yang disediakan AWS juga bagus, dan Anda memiliki akses ke seluruh AWS SDK, artinya Anda dapat melakukan pencarian ke layanan seperti Lambda dan DynamoDB dengan mudah.

Selain itu, AWS mendukung seluruh waktu proses .NET, yang berarti Anda dapat menggunakan bahasa lain selain C# yang juga dikompilasi ke binari .NET. C# adalah yang paling populer, tetapi Anda juga dapat menulis Fungsi Lambda dalam F# atau VB.NET.

Bagaimana Performanya?

Bahasa seperti Java dan C# umumnya jauh lebih baik, tetapi ada kerugian untuk menggunakannya. Keduanya dikompilasi ke bytecode yang harus dikompilasi saat startup, sehingga mereka memiliki waktu startup yang lebih tinggi, terutama saat mulai dingin. “Mulai dingin” adalah saat AWS tidak menjalankan fungsi dalam beberapa menit terakhir, sehingga tidak akan di-cache, dan perlu melakukan kompilasi just-in-time lagi untuk mengaktifkannya dan menjalankannya. Proses ini dapat menyebabkan fungsi Anda membutuhkan waktu satu detik atau lebih untuk merespons, yang tidak baik untuk aplikasi web.

Advertisement

Namun, masalah ini sebagian besar dikurangi jika Anda sering menggunakan Lambda. Anda juga dapat mengurangi waktu mulai dingin sepenuhnya dengan konkurensi yang disediakan. Waktu respons reguler untuk .NET sangat tinggi, dan kinerjanya setara dengan bahasa yang dikompilasi lengkap seperti Go dan Rust.

Jika saat ini Anda menggunakan Java untuk fungsi Lambda, C# dapat menjadi pengganti yang layak, seperti .NET modern 6 runtime menggunakan lebih sedikit memori dan memulai lebih cepat daripada JVM dalam banyak kasus.

Menyiapkan C# Fungsi Lambda

Pertama, Anda perlu menginstal .NET. AWS mendukung .NET Core 3.1 dan .NET 6, jadi salah satu dari kedua runtime tersebut akan berfungsi, tetapi yang terpenting Anda perlu menginstal dotnet CLI agar Anda dapat menginstal template Lambda. Anda bisa mendapatkan .NET dari portal dokumentasi Microsoft.

Anda harus menginstal templat Lambda, dan alat Lambda global.

dotnet baru -i Amazon.Lambda.Templates dotnet tool install -g Amazon.Lambda.Tools

Ada banyak opsi ini menginstal; Anda dapat membuat daftar semuanya dengan:

dotnet new –list

Perkakas ini cukup bagus, karena dilengkapi dengan banyak templat paket yang telah dikonfigurasikan sebelumnya untuk kasus penggunaan yang berbeda. Anda biasanya menginginkan satu fungsi per proyek untuk menjaga ukuran build tetap kecil, tetapi Anda dapat memiliki beberapa fungsi dalam satu DLL jika Anda menggunakan template Tanpa Server AWS, yang diterapkan menggunakan template CloudFormation. Ini jauh lebih rumit untuk dikelola, jadi gunakan hanya jika Anda mendapat manfaat darinya.

Advertisement

Dengan file Solusi .NET, Anda dapat memiliki beberapa proyek berdampingan dengan referensi rakitan umum, jadi ini bukan masalah besar. issue.

Untuk sekarang, kita akan menggunakan template Empty Function sederhana, yang menghasilkan proyek menggunakan .NET 6. Anda dapat membuatnya dari baris perintah, atau dari layar proyek baru editor Anda.

dotnet lambda baru.EmptyFunction –name SimpleLambdaFunction –profile default –region us-east-1

Ini menghasilkan fungsi yang sangat sederhana—dibutuhkan string sebagai input, dan juga melewatkan ILambdaContext. Ini adalah fungsi titik masuk Main() untuk Lambda Anda dan akan dipanggil oleh waktu proses setiap kali Fungsi Lambda dipanggil. Fungsi khusus ini mengembalikan string, tetapi Anda juga dapat membuatnya asinkron dan mengembalikan Task.

Di bagian atas Anda akan melihat atribut assembly yang mengonfigurasi JSON Serializer. Secara internal, Lambda akan menangani deserializing konten input untuk Anda, dan kemudian akan memanggil fungsi Anda. Setelah itu, jika mengembalikan sesuatu, itu akan ditulis ke aliran respons. Pustaka Lambda menangani boilerplate ini untuk Anda, dan kode yang membungkus fungsi Anda ada di HandlerWrapper.

Pada dasarnya, ini akan menangani semua jenis tanda tangan metode, dan jika fungsi Anda mengambil input, itu akan membatalkan serial input itu untuk Anda. Jika fungsi Anda mengembalikan output, itu akan membuat serial output itu untuk Anda. Anda sebenarnya tidak perlu melakukan semua ini, karena Anda dapat menulis fungsi yang beroperasi pada kelas Stream mentah, tetapi ini adalah kelas pembungkus yang bagus untuk mempermudah.

Artinya Anda bebas menentukan model Anda sendiri untuk masukan dan keluaran yang diteruskan ke dan dari fungsi tersebut, salah satu manfaat bagus dalam menangani JSON dengan C#.

Advertisement

Dalam fungsi ini, fungsi ini mendeserialisasi kelas InputModel, menunggu secara asinkron selama satu detik, lalu mengembalikan kelas OutputModel. Kelas ini diserialisasikan kembali ke aliran keluaran sehingga Lambda dapat menanganinya.

Menjalankan Fungsi Lambda

Menjalankan fungsi setelah Anda membuatnya cukup sederhana, karena Lambda .NET CLI menyediakan metode untuk menerapkannya. Cukup jalankan fungsi penerapan dengan

dotnet lambda fungsi penerapan SimpleNETFunction

Anda harus memilih peran IAM atau membuat peran baru, dan Anda mungkin perlu menambahkan izin ke peran baru ini. Anda sekarang akan melihat fungsi di konsol Anda:

Lambda menyediakan penguji bawaan yang dapat Anda lewati JSON ke.

Ini akan mengeksekusi dan menunjukkan kepada Anda semua detail tentang eksekusi. Dalam hal ini, dengan fungsi minimal yang sangat kecil, waktu startup dingin kurang dari 500ms, yang cukup baik untuk .NET dan untuk Lambda pada umumnya. Setelah hangat, durasi yang ditagih turun menjadi hanya beberapa milidetik.

Dalam hal ini, fungsi ini tidak menggunakan banyak memori sama sekali, dan menurunkan fungsi hingga 128MB tidak menyebabkan masalah.

Itulah berita seputar Memulai Menggunakan .NET Dengan Fungsi AWS Lambda, semoga bermanfaat. Disadur dari HowToGeek.com.