Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyebarkan aplikasi ASP.NET
Selain menghosting fungsi berbasis acara, Anda juga dapat menggunakan.NET dengan Lambda untuk meng-host aplikasi ASP.NET ringan. Anda dapat membangun dan menyebarkan aplikasi ASP.NET menggunakan paket. Amazon.Lambda.AspNetCoreServer
NuGet Di bagian ini, Anda mempelajari cara menerapkan API web ASP.NET ke Lambda menggunakan perkakas .NET Lambda CLI.
Prasyarat
- .NET 8 SDK
-
Instal .NET 8
SDK dan ASP.NET Core Runtime. - Amazon.Lambda.Tools
-
Untuk membuat fungsi Lambda Anda, Anda menggunakan Amazon.Lambda.Tools
Ekstensi .NET Global Tools . Untuk menginstal Amazon.Lambda.Tools, jalankan perintah berikut: dotnet tool install -g Amazon.Lambda.Tools
Untuk informasi lebih lanjut tentang Amazon.Lambda.Tools .NET CLI extension, lihat AWS Extensions for .NET CLI
repositori.NET di. GitHub - Amazon.Lambda.Templates
-
Untuk menghasilkan kode fungsi Lambda Anda, gunakan Amazon.Lambda.Templates
NuGet paket. Untuk menginstal paket template ini, jalankan perintah berikut: dotnet new --install Amazon.Lambda.Templates
Menyebarkan API Web ASP.NET ke Lambda
Untuk menerapkan API web menggunakan ASP.NET, Anda dapat menggunakan template .NET Lambda untuk membuat proyek API web baru. Gunakan perintah berikut untuk menginisialisasi proyek API web ASP.NET baru. Dalam perintah contoh, kami memberi nama proyekAspNetOnLambda
.
dotnet new serverless.AspNetCoreWebAPI -n AspNetOnLambda
Perintah ini membuat file dan direktori berikut di direktori proyek Anda.
.
└── AspNetOnLambda
├── src
│ └── AspNetOnLambda
│ ├── AspNetOnLambda.csproj
│ ├── Controllers
│ │ └── ValuesController.cs
│ ├── LambdaEntryPoint.cs
│ ├── LocalEntryPoint.cs
│ ├── Readme.md
│ ├── Startup.cs
│ ├── appsettings.Development.json
│ ├── appsettings.json
│ ├── aws-lambda-tools-defaults.json
│ └── serverless.template
└── test
└── AspNetOnLambda.Tests
├── AspNetOnLambda.Tests.csproj
├── SampleRequests
│ └── ValuesController-Get.json
├── ValuesControllerTests.cs
└── appsettings.json
Ketika Lambda memanggil fungsi Anda, titik masuk yang digunakannya adalah file. LambdaEntryPoint.cs
File yang dibuat oleh template.NET Lambda berisi kode berikut.
namespace AspNetOnLambda; public class LambdaEntryPoint : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction { protected override void Init(IWebHostBuilder builder) { builder .UseStartup≪Startup≫(); } protected override void Init(IHostBuilder builder) { } }
Titik masuk yang digunakan oleh Lambda harus mewarisi dari salah satu dari tiga kelas dasar dalam paket. Amazon.Lambda.AspNetCoreServer
Ketiga kelas dasar ini adalah:
-
APIGatewayProxyFunction
-
APIGatewayHttpApiV2ProxyFunction
-
ApplicationLoadBalancerFunction
Kelas default yang digunakan saat Anda membuat LambdaEntryPoint.cs
file menggunakan template.NET Lambda yang disediakan adalah. APIGatewayProxyFunction
Kelas dasar yang Anda gunakan dalam fungsi Anda bergantung pada lapisan API mana yang berada di depan fungsi Lambda Anda.
Masing-masing dari tiga kelas dasar berisi metode publik bernamaFunctionHandlerAsync
. Nama metode ini akan membentuk bagian dari string handler yang digunakan Lambda untuk memanggil fungsi Anda. FunctionHandlerAsync
Metode ini mengubah payload peristiwa masuk menjadi format ASP.NET yang benar dan respons ASP.NET kembali ke muatan respons Lambda. Untuk AspNetOnLambda
proyek contoh yang ditampilkan, string handler adalah sebagai berikut.
AspNetOnLambda::AspNetOnLambda.LambdaEntryPoint::FunctionHandlerAsync
Untuk menerapkan API ke Lambda, jalankan perintah berikut untuk menavigasi ke direktori yang berisi file kode sumber Anda dan menerapkan fungsi Anda menggunakan. AWS CloudFormation
cd AspNetOnLambda/src/AspNetOnLambda dotnet lambda deploy-serverless
Tip
Saat Anda menerapkan API menggunakan
perintah, AWS CloudFormation beri nama pada fungsi Lambda Anda berdasarkan nama tumpukan yang Anda tentukan selama penerapan. Untuk memberikan nama khusus pada fungsi Lambda Anda, edit dotnet lambda deploy-serverless
serverless.template
file untuk menambahkan FunctionName
properti ke sumber daya. AWS::Serverless::Function
Lihat Jenis nama di Panduan AWS CloudFormation Pengguna untuk mempelajari lebih lanjut.
Menyebarkan ASP.NET minimal APIs ke Lambda
Untuk menerapkan API minimal ASP.NET ke Lambda, Anda dapat menggunakan template .NET Lambda untuk membuat proyek API minimal yang baru. Gunakan perintah berikut untuk menginisialisasi proyek API minimal yang baru. Dalam contoh ini, kami memberi nama proyekMinimalApiOnLambda
.
dotnet new serverless.AspNetCoreMinimalAPI -n MinimalApiOnLambda
Perintah membuat file dan direktori berikut di direktori proyek Anda.
└── MinimalApiOnLambda
└── src
└── MinimalApiOnLambda
├── Controllers
│ └── CalculatorController.cs
├── MinimalApiOnLambda.csproj
├── Program.cs
├── Readme.md
├── appsettings.Development.json
├── appsettings.json
├── aws-lambda-tools-defaults.json
└── serverless.template
Program.cs
File berisi kode berikut.
var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); // Add AWS Lambda support. When application is run in Lambda Kestrel is swapped out as the web server with Amazon.Lambda.AspNetCoreServer. This // package will act as the webserver translating request and responses between the Lambda event source and ASP.NET Core. builder.Services.AddAWSLambdaHosting
(LambdaEventSource.RestApi)
; var app = builder.Build(); app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.MapGet("/", () => "Welcome to running ASP.NET Core Minimal API on AWS Lambda"); app.Run();
Untuk mengonfigurasi API minimal agar berjalan di Lambda, Anda mungkin perlu mengedit kode ini agar permintaan dan tanggapan antara Lambda dan ASP.NET Core diterjemahkan dengan benar. Secara default, fungsi dikonfigurasi untuk sumber peristiwa REST API. Untuk HTTP API atau penyeimbang beban aplikasi, ganti (LambdaEventSource.RestApi)
dengan salah satu opsi berikut:
-
(LambdaEventSource.HttpAPi)
-
(LambdaEventSource.ApplicationLoadBalancer)
Untuk menerapkan API minimal Anda ke Lambda, jalankan perintah berikut untuk menavigasi ke direktori yang berisi file kode sumber Anda dan menerapkan fungsi Anda menggunakan. AWS CloudFormation
cd MinimalApiOnLambda/src/MinimalApiOnLambda dotnet lambda deploy-serverless