У меня есть проект ASP.net Core Web API и отдельный уровень обслуживания, который содержит бизнес -логику. Я хочу вызвать функцию AWS Lambda из моего уровня обслуживания (не непосредственно из API) и обрабатывать результат в моем API. Кроме того, я хочу упаковать и развернуть функцию Lambda с помощью AWS CLI и интегрировать ее в свой существующий конвейер CI/CD. Что я сделал: < /p>
Создал функцию Lambda в отдельном проекте .NET. Вот функция лямбда: < /li>
< /ol>
using Amazon.Lambda.Core;
using System;
using System.Collections.Generic;
using Amazon.Lambda.Serialization.SystemTextJson;
namespace MyLambdaFunction
{
public class MyLambda
{
private readonly object cacheLock = new object();
public MyLambda()
{
// You can initialize services here if needed
}
public MyResponse FunctionHandler(DateTime fromDate, DateTime toDate, ILambdaContext context)
{
lock (cacheLock)
{
// Logic to get data from cache or service if needed
MyResponse result = new MyResponse(); // Replace with actual data retrieval logic
return result;
}
}
}
}
< /code>
Добавлена следующая логика вызова лямбды в сервисный уровень проекта API: < /li>
< /ol>
public class LambdaInvokerService
{
private readonly IAmazonLambda _lambdaClient;
public LambdaInvokerService(IAmazonLambda lambdaClient)
{
_lambdaClient = lambdaClient;
}
public async Task InvokeLambdaAsync(string functionName, object payload)
{
var request = new InvokeRequest
{
FunctionName = functionName,
Payload = System.Text.Json.JsonSerializer.Serialize(payload)
};
var response = await _lambdaClient.InvokeAsync(request);
return new StreamReader(response.Payload).ReadToEnd();
}
}
< /code>
Вопросы: < /p>
Это правильный дизайн для вызова лямбды со уровня обслуживания? Есть улучшения? Как я могу автоматически интегрировать развертывание лямбда в свой существующий трубопровод CI/CD?
У меня есть проект ASP.net Core Web API и отдельный уровень обслуживания, который содержит бизнес -логику. Я хочу вызвать функцию AWS Lambda из моего уровня обслуживания (не непосредственно из API) и обрабатывать результат в моем API. Кроме того, я хочу упаковать и развернуть функцию Lambda с помощью AWS CLI и интегрировать ее в свой существующий конвейер CI/CD. [b] Что я сделал: [/b] < /p> [list] [*] Создал функцию Lambda в отдельном проекте .NET. Вот функция лямбда: < /li> < /ol> using Amazon.Lambda.Core; using System; using System.Collections.Generic; using Amazon.Lambda.Serialization.SystemTextJson;
namespace MyLambdaFunction { public class MyLambda { private readonly object cacheLock = new object();
public MyLambda() { // You can initialize services here if needed }
public MyResponse FunctionHandler(DateTime fromDate, DateTime toDate, ILambdaContext context) { lock (cacheLock) { // Logic to get data from cache or service if needed MyResponse result = new MyResponse(); // Replace with actual data retrieval logic return result; } } } } < /code>
Добавлена следующая логика вызова лямбды в сервисный уровень проекта API: < /li> < /ol> public class LambdaInvokerService { private readonly IAmazonLambda _lambdaClient;
public LambdaInvokerService(IAmazonLambda lambdaClient) { _lambdaClient = lambdaClient; }
public async Task InvokeLambdaAsync(string functionName, object payload) { var request = new InvokeRequest { FunctionName = functionName, Payload = System.Text.Json.JsonSerializer.Serialize(payload) }; var response = await _lambdaClient.InvokeAsync(request); return new StreamReader(response.Payload).ReadToEnd(); } } < /code> Вопросы: < /p>
Это правильный дизайн для вызова лямбды со уровня обслуживания? Есть улучшения? Как я могу автоматически интегрировать развертывание лямбда в свой существующий трубопровод CI/CD? [/list]