AWS Lambda 배포 설정
- aws-lambda-tools-defaults.json 파일에 구성합니다. 일종의…게시 프로필 이라고 생각하시면 될 것 같습니다. Visual Studio 2022와 잘 통합되어 있는 Azure의 경우 Visual Studio 2022의 Publish 기능에 게시 프로필을 생성하는 게 있는데 그것과 같은 역할을 한다고 보시면 됩니다. Visual Studio 2022에서는 기본적으로 1개를 다루지만, 게시 프로필을 여러개 만들면 dotnet 명령어로 다양하게 배포할 수 있기 때문에 .NET 프로젝트 1개 안에 여러개의 AWS Lambda Class, Method를 생성하고 여러 AWS Lambda로 배포하여 각기 다른 기능을 하게 할 수 있습니다. 즉, 여러 개의 Lambda를 다루기 위해서 .NET 프로젝트를 1:1 대응으로 여러개 만들 필요가 없다는 것입니다. 1개의 .NET 프로젝트와 N:M 관계의 Class와 게시 프로필 관계이면 됩니다.
- 임의로 변수는 대괄호[ ] 안에 표기하겠습니다.
{
"Information" : [
"[문자열1]",
"[문자열2]"
],
"profile" : "[AWS Region ID]",
"region" : "[AWS 리전 이름 ex) us-west-2]",
"configuration" : "[빌드 형태 ex) Release, Debug]",
"function-architecture" : "[아키텍쳐 ex) x64, arm64]",
"function-runtime" : "[.NET 버전 ex) dotnet8]",
"function-memory-size" : 512,
"function-timeout" : 15,
"function-handler" : "[.NET 어셈블리 이름::네임스페이스.클래스 명::Lambda로 트리거되는 메서드 이름]",
"framework" : "net8.0",
"function-name" : "[AWS Lambda 리소스 이름]",
"function-description" : "",
"package-type" : "Zip",
"function-role" : "[AWS Lambda 리소스를 만들면 만들 때 role을 새로 생성할 수도 있고, 기존의 role을 가져다 쓸 수도 있습니다. 그 role의 ARN을 적습니다.]",
"function-subnets" : "",
"function-security-groups" : "",
"tracing-mode" : "PassThrough",
"environment-variables" : "",
"image-tag" : ""
}
AWS role이 놓치기 쉬운 부분인데 지금 예제로 드는 EC2를 제어하는 AWS Lambda의 경우 새로 생성한 권한이던, 기존에 있던 권한이던, 권한 정책에 아래 두개의 정책이 들어있어야만 제어가 가능합니다.
- ElasticLoadBalancingFullAccess
- ElasticLoadBalancingReadOnly