기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자습서:를 사용하여 서버리스 애플리케이션 빌드 및 테스트 AWS Lambda
AWS Toolkit for Visual Studio 템플릿을 사용하여 서버리스 Lambda 애플리케이션을 빌드할 수 있습니다. Lambda 프로젝트 템플릿에는 AWS 서버리스 애플리케이션 모델(SAM)의 AWS Toolkit for Visual Studio 구현인 서버리스 애플리케이션용 템플릿이 포함되어 있습니다. AWSAWS
설정에 대한 사전 조건 및 정보는 Toolkit for Visual Studio의 Lambda 템플릿 사용을 AWS Toolkit for Visual Studio참조하세요. AWSAWS
새 AWS 서버리스 애플리케이션 프로젝트 생성
AWS 서버리스 애플리케이션 프로젝트는 서버리스 AWS CloudFormation 템플릿을 사용하여 Lambda 함수를 생성합니다. AWS CloudFormation 템플릿을 사용하면 데이터베이스와 같은 추가 리소스를 정의하고, IAM 역할을 추가하고, 한 번에 여러 함수를 배포할 수 있습니다. 이는 단일 AWS Lambda 함수를 개발하고 배포하는 데 초점을 맞춘 Lambda 프로젝트와 다릅니다.
다음 절차에서는 새 AWS Serverless Application Project를 생성하는 방법을 설명합니다.
-
Visual Studio에서 파일 메뉴를 확장하고 새로 만들기를 확장한 다음 프로젝트를 선택합니다.
-
새 프로젝트 대화 상자에서 언어, 플랫폼 및 프로젝트 유형 드롭다운 상자가 "모두 ..."로 설정되어 있는지 확인하고 검색 필드에
aws lambda를 입력합니다. -
테스트가 포함된AWS 서버리스 애플리케이션(.NET Core - C#) 템플릿을 선택하세요.
참고
AWS Serverless Application with Tests(.NET Core - C#) 템플릿이 결과 상단에 채워지지 않을 수 있습니다.
-
다음을 클릭하여 새 프로젝트 구성 대화 상자를 엽니다.
-
새 프로젝트 구성 대화 상자에서 이름
ServerlessPowertools에를 입력한 다음 원하는 나머지 필드를 작성합니다. 생성 버튼을 선택하여 블루프린트 선택 대화 상자로 이동합니다. -
블루프린트 선택 대화 상자에서 블루프린트용 Powertools AWS Lambda를 선택한 다음 완료를 선택하여 Visual Studio 프로젝트를 생성합니다.
서버리스 애플리케이션 파일 검토
다음 섹션에서는 프로젝트에 대해 생성된 세 개의 서버리스 애플리케이션 파일을 자세히 살펴봅니다.
-
serverless.template
-
Functions.cs
-
aws-lambda-tools-defaults.json
1. serverless.template
serverless.template 파일은 Serverless 함수 및 기타 AWS 리소스를 선언하기 위한 AWS CloudFormation 템플릿입니다. 이 프로젝트에 포함된 파일에는 Amazon API Gateway를 통해 HTTP *Get* 작업으로 노출되는 단일 Lambda 함수에 대한 선언이 포함되어 있습니다. 이 템플릿을 편집하여 기존 함수를 사용자 지정하거나 애플리케이션에 필요한 함수 및 기타 리소스를 더 추가할 수 있습니다.
다음은 serverless.template 파일의 예제입니다:
{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Description": "An AWS Serverless Application.", "Resources": { "Get": { "Type": "AWS::Serverless::Function", "Properties": { "Architectures": [ "x86_64" ], "Handler": "ServerlessPowertools::ServerlessPowertools.Functions::Get", "Runtime": "dotnet8", "CodeUri": "", "MemorySize": 512, "Timeout": 30, "Role": null, "Policies": [ "AWSLambdaBasicExecutionRole" ], "Environment": { "Variables": { "POWERTOOLS_SERVICE_NAME": "ServerlessGreeting", "POWERTOOLS_LOG_LEVEL": "Info", "POWERTOOLS_LOGGER_CASE": "PascalCase", "POWERTOOLS_TRACER_CAPTURE_RESPONSE": true, "POWERTOOLS_TRACER_CAPTURE_ERROR": true, "POWERTOOLS_METRICS_NAMESPACE": "ServerlessGreeting" } }, "Events": { "RootGet": { "Type": "Api", "Properties": { "Path": "/", "Method": "GET" } } } } } }, "Outputs": { "ApiURL": { "Description": "API endpoint URL for Prod environment", "Value": { "Fn::Sub": "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/" } } } }
많은 ...AWS:: Serverless::Function... 선언 필드가 Lambda 프로젝트 배포의 필드와 유사합니다. Powertools 로깅, 지표 및 추적은 다음 환경 변수를 통해 구성됩니다.
POWERTOOLS_SERVICE_NAME=ServerlessGreeting
POWERTOOLS_LOG_LEVEL=정보
POWERTOOLS_LOGGER_CASE=PascalCase
POWERTOOLS_TRACER_CAPTURE_RESPONSE=true
POWERTOOLS_TRACER_CAPTURE_ERROR=true
POWERTOOLS_METRICS_NAMESPACE=ServerlessGreeting
환경 변수에 대한 정의 및 추가 세부 정보는 Powertools for AWS Lambda references
2. Functions.cs
Functions.cs는 템플릿 파일에 선언된 단일 함수에 매핑된 C# 메서드가 포함된 클래스 파일입니다. Lambda 함수는 API Gateway의 HTTP Get 메서드에 응답합니다. 다음은 Functions.cs 파일의 예입니다.
public class Functions { [Logging(LogEvent = true, CorrelationIdPath = CorrelationIdPaths.ApiGatewayRest)] [Metrics(CaptureColdStart = true)] [Tracing(CaptureMode = TracingCaptureMode.ResponseAndError)] public APIGatewayProxyResponse Get(APIGatewayProxyRequest request, ILambdaContext context) { Logger.LogInformation("Get Request"); var greeting = GetGreeting(); var response = new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = greeting, Headers = new Dictionary (string, string) { { "Content-Type", "text/plain" } } }; return response; } [Tracing(SegmentName = "GetGreeting Method")] private static string GetGreeting() { Metrics.AddMetric("GetGreeting_Invocations", 1, MetricUnit.Count); return "Hello Powertools for AWS Lambda (.NET)"; } }
3. aws-lambda-tools-defaults.json
aws-lambda-tools-defaults.json는 Visual Studio 내의 AWS 배포 마법사에 대한 기본값과 .NET Core CLI에 추가된 AWS Lambda 명령을 제공합니다. 다음은이 프로젝트에 포함된 aws-lambda-tools-defaults.json 파일의 예입니다.
{ "profile": "Default", "region": "us-east-1", "configuration": "Release", "s3-prefix": "ServerlessPowertools/", "template": "serverless.template", "template-parameters": "" }
서버리스 애플리케이션 배포
서버리스 애플리케이션을 배포하려면 다음 단계를 완료하세요.
-
솔루션 탐색기에서 프로젝트의 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 열고 AWS Lambda에 게시를 선택하여 AWS 서버리스 애플리케이션 게시 대화 상자를 엽니다.
-
AWS 서버리스 애플리케이션 게시 대화 상자에서 AWS CloudFormation 스택 이름 필드에 스택 컨테이너의 이름을 입력합니다.
-
S3 버킷 필드에서 애플리케이션 번들이 업로드할 Amazon S3 버킷을 선택하거나 새로 만들기... 버튼을 선택하고 새 Amazon S3 버킷의 이름을 입력합니다. 그런 다음 게시를 선택하여 애플리케이션을 배포할 게시합니다.
참고
AWS CloudFormation 스택과 Amazon S3 버킷이 동일한 AWS 리전에 있어야 합니다. 프로젝트의 나머지 설정은
serverless.template파일에 정의되어 있습니다.
-
게시 프로세스 중에 스택 보기 창이 열리고 배포가 완료되면 상태 필드에가 표시됩니다
CREATE_COMPLETE.
서버리스 애플리케이션 테스트
스택 생성이 완료되면 AWS 서버리스 URL을 사용하여 애플리케이션을 볼 수 있습니다. 추가 함수 또는 파라미터를 추가하지 않고이 자습서를 완료한 경우 AWS 서버리스 URL에 액세스하면 웹 브라우저에 라는 문구가 표시됩니다Hello Powertools for AWS Lambda (.NET).