🌟 왜 이게 중요한가요?
AWS Lambda는 서버를 직접 관리하지 않고 코드를 실행할 수 있는 서버리스 서비스예요.
하지만 .NET 개발자가 Lambda 코드를 로컬에서 실행하고 디버깅하려면 꽤 번거로웠습니다.
최근 AWS가 .NET Aspire와 Lambda를 연결할 수 있는 기능을 내놨어요.
이제는 Visual Studio 같은 IDE에서 F5 한 번만 누르면 람다 함수를 바로 실행하고 디버깅할 수 있습니다.
즉, 클라우드에 배포하기 전에 내 컴퓨터에서 미리 실험할 수 있게 된 거죠.
🏗️ 준비 단계: App Host 만들기
Aspire에서는 여러 리소스를 모아 실행할 수 있는 App Host라는 프로젝트를 둡니다.
Lambda 함수도 여기에 등록해야 Aspire 대시보드와 연결됩니다.
App Host 프로젝트 추가하기
솔루션에 새 프로젝트를 추가하고 이름을 프로젝트명.AppHost처럼 지어주세요.
NuGet 패키지 설치하기
Aspire.Hosting.AWS (버전 9.1.4 이상) 패키지를 설치합니다.
Lambda 프로젝트 참조 추가
기존에 만든 Lambda 프로젝트를 App Host에서 참조로 연결합니다.
✍️ 코드로 Lambda 등록하기
App Host의 Program.cs에서 Lambda 함수를 등록합니다.
#pragma warning disable CA2252 // 미리보기 기능 사용 허용
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAWSLambdaFunction<Projects.LambdaWebCalculator>(
"AddFunction",
lambdaHandler: "LambdaWebCalculator::LambdaWebCalculator.Functions::AddFunctionHandler");
builder.Build().Run();
👉 여기서 중요한 점은:
AddAWSLambdaFunction으로 Aspire에 람다 함수를 알려줍니다.
#pragma warning disable CA2252는 “이 기능은 아직 미리보기 단계지만 사용하겠다”는 표시예요.
🌐 API Gateway 흉내 내기
Lambda 함수는 보통 API Gateway와 함께 사용합니다.
Aspire에는 API Gateway 에뮬레이터가 있어서 로컬에서 그 흐름을 그대로 따라할 수 있습니다.
builder.AddAWSAPIGatewayEmulator("APIGatewayEmulator", Aspire.Hosting.AWS.Lambda.APIGatewayType.HttpV2)
.WithReference(addFunction, Method.Get, "/add/{x}/{y}");
이제 http://localhost:<포트>/add/1/2로 접속하면 Lambda 함수가 실행되어 결과를 확인할 수 있어요.
🐞 디버깅하기
이제 가장 신나는 부분, 디버깅입니다.
Visual Studio에서 App Host를 **디버그 모드(F5)**로 실행합니다.
Aspire 대시보드에서 Lambda 함수가 등록된 걸 확인합니다.
“디버그” 버튼을 눌러 이벤트를 호출하거나, 직접 로컬 주소로 API를 호출할 수 있습니다.
로그도 바로 확인할 수 있어서 문제를 찾고 고치기 쉬워집니다.
⚠️ 알아두면 좋은 점
현재 이 기능은 프리뷰(미리보기) 단계라 일부 IDE에서는 안 될 수 있습니다.
Preview 기능을 쓰려면 위에서처럼 #pragma 구문을 반드시 넣어야 합니다.
API 경로를 지정할 때 {proxy+} 같은 와일드카드 패턴이 필요할 수도 있어요.
📌 마무리
이번 Part 1에서는:
App Host 프로젝트 만들기
Lambda 함수 등록하기
API Gateway 에뮬레이터로 로컬 테스트하기
IDE에서 직접 디버깅하기
이 네 가지를 배웠습니다.
👉 Part 2에서는 모니터링(OpenTelemetry), 외부 리소스 연결(DynamoDB Local, Redis 등) 같은 좀 더 고급 기능을 다룰 예정이라고 해요.
앞으로 정식 버전이 나오면, .NET 개발자들은 Lambda를 훨씬 더 쉽게 개발하고 테스트할 수 있을 겁니다 🚀