기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자습서: 다음을 사용하여 서버리스 애플리케이션 구축 및 테스트 AWS Lambda
템플릿을 사용하여 서버리스 Lambda 애플리케이션을 구축할 수 있습니다. AWS Toolkit for Visual Studio Lambda 프로젝트 템플릿에는 서버리스 애플리케이션 모델 (AWS SAM) 을 구현하는 서버리스 애플리케이션용 템플릿이 AWS Toolkit for Visual Studio 포함되어 있습니다.AWSAWS
설정에 대한 사전 요구 사항 및 정보는 Visual AWS Toolkit for Visual StudioStudio용 툴킷의 AWS Lambda 템플릿 사용을 참조하십시오. AWS
새 AWS 서버리스 애플리케이션 프로젝트 생성
AWS 서버리스 애플리케이션 프로젝트는 서버리스 템플릿을 사용하여 Lambda 함수를 생성합니다. AWS CloudFormation AWS CloudFormation 템플릿을 사용하면 데이터베이스와 같은 추가 리소스를 정의하고, IAM 역할을 추가하고, 한 번에 여러 함수를 배포할 수 있습니다. 이는 단일 AWS Lambda 함수를 개발하고 배포하는 데 중점을 둔 Lambda 프로젝트와 다릅니다.
다음 절차는 새 서버리스 애플리케이션 프로젝트를 생성하는 방법을 설명합니다. AWS
-
Visual Studio에서 파일 메뉴를 확장하고 새로 만들기를 확장한 다음 프로젝트를 선택합니다.
-
새 프로젝트 대화 상자에서 언어, 플랫폼 및 프로젝트 유형 드롭다운 상자가 “모두...”로 설정되어 있는지 확인하고 검색 필드에 를 입력합니다
aws lambda
. -
테스트가 포함된AWS 서버리스 애플리케이션(.NET Core - C#) 템플릿을 선택하세요.
참고
테스트가 포함된AWS 서버리스 애플리케이션 (.NET Core - C#) 템플릿이 결과 상단에 채워지지 않을 수 있습니다.
-
다음을 클릭하여 새 프로젝트 구성 대화 상자를 엽니다.
-
새 프로젝트 구성 대화 상자에서 이름을 입력한
ServerlessPowertools
다음 나머지 필드를 원하는 대로 작성합니다. 생성 버튼을 선택하여 블루프린트 선택 대화창으로 이동합니다. -
블루프린트 선택 대화상자에서 블루프린트용 AWS Lambda Powertools를 선택한 다음 마침을 선택하여 Visual Studio 프로젝트를 생성합니다.
서버리스 애플리케이션 파일 검토
다음 섹션에서는 프로젝트용으로 생성된 세 개의 서버리스 애플리케이션 파일을 자세히 살펴봅니다.
-
serverless.template
-
Functions.cs
-
aws-lambda-tools-defaults.json
1. 서버리스 템플릿
serverless.template
파일은 서버리스 함수 및 AWS CloudFormation 기타 리소스를 선언하기 위한 템플릿입니다. AWS 이 프로젝트에 포함된 파일에는 Amazon API Gateway를 통해 작업으로 노출되는 단일 Lambda 함수에 대한 선언이 포함되어 있습니다. HTTP *Get*
이 템플릿을 편집하여 기존 함수를 사용자 지정하거나 애플리케이션에 필요한 함수 및 기타 리소스를 더 추가할 수 있습니다.
다음은 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
파워툴스_로그_레벨=정보
파워툴_로거_케이스= PascalCase
파워툴스_트레이서_캡처_응답=TRUE
파워툴스_트레이서_캡처_오류=참
POWERTOOLS_METRICS_네임스페이스= ServerlessGreeting
환경 변수에 대한 정의 및 추가 세부 정보는 참조용 Powertools 웹 사이트를 참조하십시오. AWS Lambda
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 Bucket 필드에서 애플리케이션 번들이 업로드할 Amazon S3 버킷을 선택하거나 New... 를 선택합니다. 버튼을 클릭하고 새 Amazon S3 버킷의 이름을 입력합니다. 그런 다음 [Publish] 를 선택하여 게시하여 애플리케이션을 배포합니다.
참고
AWS CloudFormation 스택과 Amazon S3 버킷은 같은 AWS 지역에 있어야 합니다. 프로젝트의 나머지 설정은
serverless.template
파일에 정의되어 있습니다. -
게시 프로세스 중에 스택 보기 창이 열리고 배포가 완료되면 상태 필드에 다음이 표시됩니다.
CREATE_COMPLETE
서버리스 애플리케이션 테스트
스택 생성이 완료되면 AWS 서버리스 URL을 사용하여 애플리케이션을 볼 수 있습니다. 함수나 매개변수를 추가하지 않고 이 자습서를 완료한 경우 AWS 서버리스 URL에 액세스하면 웹 브라우저에 다음 문구가 표시됩니다. Hello Powertools for AWS Lambda (.NET)