.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 · 알고리즘

구조물 블록 쌓기 (다중조건 정렬 DP)

가로(w), 세로(d), 높이(h)가 주어진 블록 N개가 있습니다. 회전은 허용하지 않으며, 어떤 블록 위에 다른 블록을 올리려면 위에 놓일 블록의 가로와 세로가 모두 아래 블록보다 작아야 합니다. 각 블록은 최대 한 번만 사용할 수 있을 때, 쌓을 수 있는 탑의 최대 높이(사용한 블록들의 높이 합)를 구하세요.

바로 연습하기
Coding Quest · 알고리즘

구조물 블록 쌓기 (다중조건 정렬 DP)

가로(w), 세로(d), 높이(h)가 주어진 블록 N개가 있습니다. 회전은 허용하지 않으며, 어떤 블록 위에 다른 블록을 올리려면 위에 놓일 블록의 가로와 세로가 모두 아래 블록보다 작아야 합니다. 각 블록은 최대 한 번만 사용할 수 있을 때, 쌓을 수 있는 탑의 최대 높이(사용한 블록들의 높이 합)를 구하세요.

바로 연습하기
Coding Quest · 알고리즘

그래프 시간예산 최대점수

N개의 방이 간선(이동 시간 가중치)으로 연결된 그래프가 주어집니다. 0번 방에서 출발해 주어진 시간 예산 T 안에서 이동하며, 새로 방문하는 방의 점수를 얻습니다(같은 방을 다시 방문해도 점수는 한 번만 획득). 얻을 수 있는 최대 점수를 구하세요.

바로 연습하기
Coding Quest · 알고리즘

그래프 시간예산 최대점수

N개의 방이 간선(이동 시간 가중치)으로 연결된 그래프가 주어집니다. 0번 방에서 출발해 주어진 시간 예산 T 안에서 이동하며, 새로 방문하는 방의 점수를 얻습니다(같은 방을 다시 방문해도 점수는 한 번만 획득). 얻을 수 있는 최대 점수를 구하세요.

바로 연습하기
Coding Quest · 빈칸

긴 출입 코드 최댓값 만들기

숫자로만 이루어진 긴 출입 코드 문자열 S와 지워야 할 개수 K가 주어집니다. S에서 숫자 K개를 지우고 남은 숫자를 원래 순서 그대로 이어 붙였을 때 만들 수 있는 가장 큰 수를 구하세요. (자릿수가 더 많은 상급 버전입니다)

바로 연습하기