.NET Aspire로 .NET Lambda 함수 만들고 디버깅하기 (Part 1)

NET Aspire의 App Host를 이용해 여러 개의 .NET Lambda 함수를 로컬에서 한 번에 올리고, IDE(F5)로 바로 디버깅하는 방법을 소개합니다

📚
📅 2025-09-29

🌟 왜 이게 중요한가요?

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를 훨씬 더 쉽게 개발하고 테스트할 수 있을 겁니다 🚀

 

이 글과 함께 연습해보세요

읽은 내용을 Play Lab에서 바로 실행해볼 수 있어요.

Coding Quest · 빈칸

Hello와 World 함께 출력하기

두 단어가 한 줄에 출력되도록 함수 이름을 채워보세요.

바로 연습하기
Coding Quest · 빈칸

여러 줄 둘째 줄 출력하기

둘째 줄을 출력하는 함수 이름을 채워보세요.

바로 연습하기
Coding Quest · 빈칸

최대값 함수 사용

max 함수로 가장 큰 값을 출력하세요.

바로 연습하기
Coding Quest · 빈칸

최소값 함수 사용

min 함수로 가장 작은 값을 출력하세요.

바로 연습하기
Coding Quest · 빈칸

리스트 만들기

숫자 1, 2, 3이 들어 있는 리스트를 만드세요.

바로 연습하기