aws-lambda
로컬 컴퓨터에서 aws-lambda (C #)를 개발하는 방법
수색…
소개
Serverless 무브먼트의 일환으로 AWS는 AWS Lambda 기능에 대한 C # 지원을 최근 발표했습니다. 이 기사에서는 Visual Studio 2015를 사용하여 간단한 C # AWS 람다 함수를 개발, 설치 및 호출하는 방법을 설명합니다.
이 예제를 시작하기 전에이 문서의주의 사항 섹션으로 이동하여 필요한 모든 구성 요소가 설치되어 있는지 확인하십시오.
비고
필수 구성 요소 설치
이 글을 쓰는 시점 (2017 년 1 월)에 다음 구성 요소를이 순서로 컴퓨터에 설치해야합니다. 내가 사용했던 기계에는 Windows 10 Home이 설치되어있었습니다.
- Visual Studio 2015 업데이트 3
- AWS Toolkit for Visual Studio 2015 - 버전 1.11.2.0
- Microsoft .NET Core Tools (Preview 2) - 버전 14.1.21111.0
이러한 각 구성 요소는 활발히 개발되어 출시되므로 링크 및 버전을 다시 확인하고 필요한 경우이 문서를 업데이트하십시오.
이들 각각은 설치하는 데 약간의 시간 이 걸릴 수 있으므로 인내심을 가지고 한 번에 하나씩 실수를 최소화하십시오.
마지막으로 개발을 시작하기 전에 Windows를 재부팅하는 것은 슬픈 일이지만 Windows 상자에 주요 개발 도구를 설치 한 후에는 항상 좋은 생각입니다.
1 단계. Visual Studio에서 새 솔루션 만들기
- Visual Studio를 열고 파일 선택 -> 새 프로젝트
- 테스트가 포함 된 AWS Lambda 프로젝트 선택 (.NET Core)
- 다음으로 청사진 선택 화면이 표시됩니다. Empty Function을 선택하고 Finish 버튼을 클릭하십시오 :
- 도구 -> NuGet 패키지 관리자 -> 패키지 관리자 콘솔로 이동하십시오.
- 콘솔 창에 Install-Package Amazon.Lambda.Core를 입력 합니다.
- 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 패키지 복원을 선택하십시오. 이것은 코드 작성을 시작하기 전에 최종 준비 단계입니다.
2 단계. 프로젝트에서 코드 추가 및 변경
Function.cs
열고 클래스 코드를 다음으로 바꿉니다.public class Function { /// <summary> /// A simple function that takes a birth date and returns Age in years /// </summary> /// <param name="input"></param> /// <returns>Age is years</returns> /// [LambdaSerializer(typeof(SimpleSerializer))] public string FunctionHandler(Dictionary<string, int> input) { var defaultMessage = "Age could not be determined."; var birthDate = new DateTime(input["year"], input["month"], input["day"]); var ageInYears = DateTime.Today.Year - birthDate.Year; if (birthDate.DayOfYear > DateTime.Today.DayOfYear) ageInYears--; defaultMessage = $"Age in years: {ageInYears}"; return defaultMessage; } }
맨 위에 다음 using 문을 추가해야합니다.
using System.Collections.Generic;
using Amazon.Lambda.Core;
-
SimpleSerializer.cs
라는 프로젝트에 파일 추가 - 해당 파일에 다음 코드를 삽입하십시오.
using System;
using System.IO;
using Amazon.Lambda.Core;
using Newtonsoft.Json;
namespace AWSLambdaFunctionAgeInYears
{
public class SimpleSerializer : ILambdaSerializer
{
public T Deserialize<T>(Stream requestStream)
{
string text;
using (var reader = new StreamReader(requestStream))
text = reader.ReadToEnd();
try
{
return JsonConvert.DeserializeObject<T>(text);
}
catch (Exception ex)
{
if (typeof(T) == typeof(System.String))
return (T)Convert.ChangeType(text, typeof(T));
throw ex;
}
}
public void Serialize<T>(T response, Stream responseStream)
{
StreamWriter streamWriter = new StreamWriter(responseStream);
try
{
string text = JsonConvert.SerializeObject(response);
streamWriter.Write(text);
streamWriter.Flush();
}
catch (Exception ex)
{
if (typeof(T) == typeof(System.String))
{
streamWriter.Write(response);
streamWriter.Flush();
return;
}
throw ex;
}
}
}
}
테스트 프로젝트에서
FunctionTest.cs
23 번째 줄을 다음과 같이 변경합니다.var upperCase = function.FunctionHandler(null);
솔루션 빌드 - 빌드 오류가 없어야합니다.
3 단계 - AWS에 람다 함수 설치
프로젝트를 마우스 오른쪽 버튼으로 클릭 하고 AWS Lambda에 게시 ...를 선택 하십시오.
AWS 람다에 업로드 화면이 나타납니다. 올바른 영역이 선택되었는지 확인하십시오. 모든 기본값을 유지하십시오. 그런 다음 함수 이름 AWSLambdaFunctionAgeInYears 만 입력하고 다음을 클릭하십시오.
다음 페이지에서 역할 이름 필드에 AWSLambdaRole을 선택하십시오. 업로드를 클릭하면 오류없이 기능이 업로드됩니다.
4 단계. Visual Studio 내에서 AWS Lambda 함수 호출
- 위의 3 단계 후에 Visual Studio는 함수가로드 된
View Function
창을 엽니 다. - 이 화면의 왼쪽 하단에서 샘플 입력란에 다음 json을 입력하십시오.
{
"month": "10",
"day": "28",
"year": "1979"
}
- 마지막 단계 : 초록색 Invoke 버튼을 클릭하십시오. 이 기능은 AWS에서 실행되며 응답은 오른쪽 하단의 응답 창에 표시됩니다.