Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyebarkan ASP.NET aplikasi
Selain menghosting fungsi berbasis peristiwa, Anda juga dapat menggunakan.NET dengan Lambda untuk meng-host aplikasi ringan. ASP.NET Anda dapat membangun dan menerapkan ASP.NET aplikasi menggunakan Amazon.Lambda.AspNetCoreServer NuGet paket. Pada bagian ini, Anda mempelajari cara menerapkan API ASP.NET web ke Lambda menggunakan peralatan.NET Lambda CLI.
Prasyarat
- .NET8 SDK
-
Instal SDK
.NET 8 dan ASP.NET Core Runtime. - Amazon.Lambda.Tools
-
Untuk membuat fungsi Lambda Anda, Anda menggunakan eksten si Amazon.Lambda.Tools
.NET Global Tools. Untuk menginstalAmazon.Lambda.Tools, jalankan perintah berikut: dotnet tool install -g Amazon.Lambda.ToolsUntuk informasi selengkapnya tentang ekstensi Amazon.Lambda.Tools .NET CLI, lihat Eksten AWS si untuk
repositori.NET CLI pada. 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 ASP.NET Web API 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 ASP.NET web 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 Amazon.Lambda.AspNetCoreServer paket. Ketiga kelas dasar ini adalah:
-
APIGatewayProxyFunction -
APIGatewayHttpApiV2ProxyFunction -
ApplicationLoadBalancerFunction
Kelas default yang digunakan saat Anda membuat LambdaEntryPoint.cs file menggunakan template.NET Lambda yang disediakan adalahAPIGatewayProxyFunction. 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 merupakan bagian dari string handler yang digunakan Lambda untuk memanggil fungsi Anda. FunctionHandlerAsyncMetode ini mengubah payload peristiwa inbound menjadi ASP.NET format yang benar dan ASP.NET respons kembali ke payload respons Lambda. Untuk contoh AspNetOnLambda proyek 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 CloudFormation.
cd AspNetOnLambda/src/AspNetOnLambda dotnet lambda deploy-serverless
Tip
Saat Anda menerapkan API menggunakan perintah, CloudFormation berikan nama fungsi Lambda berdasarkan nama tumpukan yang Anda tentukan selama penerapan. Untuk memberi fungsi Lambda nama khusus, edit dotnet lambda deploy-serverlessserverless.template file untuk menambahkan FunctionName properti ke AWS::Serverless::Function sumber daya. Lihat Jenis nama di Panduan CloudFormation Pengguna untuk mempelajari lebih lanjut.
Menyebarkan API ASP.NET minimal ke Lambda
Untuk menerapkan API ASP.NET minimal ke Lambda, Anda dapat menggunakan templat.NET Lambda untuk membuat proyek API minimal baru. Gunakan perintah berikut untuk menginisialisasi proyek API minimal baru. Dalam contoh ini, kami menamai proyekMinimalApiOnLambda.
dotnet new serverless.AspNetCoreMinimalAPI -n MinimalApiOnLambda
Perintah ini 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.csFile 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 Anda agar berjalan di Lambda, Anda mungkin perlu mengedit kode ini sehingga permintaan dan tanggapan antara Lambda dan ASP.NET Core diterjemahkan dengan benar. Secara default, fungsi dikonfigurasi untuk sumber peristiwa REST API. Untuk API HTTP 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 terapkan fungsi Anda menggunakan CloudFormation.
cd MinimalApiOnLambda/src/MinimalApiOnLambda dotnet lambda deploy-serverless