在 AWS API Gateway 中,我有 3 个阶段:Prod、Stage 和 Dev 在我的 AWS Lambda 中,我有 3 个别名:PROD、STAGE、DEV
API Gateway 中的我的 API 资源指向:
my-lambda-name:${stageVariables.lambdaAlias}
,然后我将域映射到每个阶段。
下面是我的 Lambda .NET Core Minimal API
Program.cs
代码。
是否有办法在
Program.cs
中获取阶段变量,以便我可以使用它从参数存储中提取正确的配置?我不相信我可以使用 Lambda 环境变量,因为它们在所有别名中都是相同的。
my-lambda-name:DEV
或 my-lambda-name:STAGE
或 my-lambda-name:PROD
global using Microsoft.EntityFrameworkCore;
using System.Text.Json;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddAWSLambdaHosting(LambdaEventSource.RestApi);
// Pull in Configuration
builder.Configuration.AddSystemsManager($"/AppName/{builder.Environment.EnvironmentName}");
var app = builder.Build();
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
我也有同样的问题。 但是,也许我在 https://clearmeasure.com/hosting-dot-net-6-minimal-api-aws-lambda/ 中找到的解决方案可以帮助您。
....
string arn = string.Empty;
var lambdaContext = Request.HttpContext.Items[AbstractAspNetCoreFunction.LAMBDA_CONTEXT] as ILambdaContext;
if (lambdaContext != null) { arn = lambdaContext.InvokedFunctionArn; };
......
我希望这对你有帮助。