AWS SAM으로 C# Lambda 함수 배포
AWS SAM으로 C# Lambda 함수 배포
AWS Serverless Application Model(AWS SAM)은 AWS에서 서버리스 애플리케이션을 빌드하고 실행하는 과정을 간소화하는 도구 키트예요. YAML이나 JSON 템플릿에서 애플리케이션의 리소스를 정의하고, AWS SAM CLI(AWS SAM command line interface)를 사용해 애플리케이션을 빌드·패키징·배포하죠. AWS SAM 템플릿에서 Lambda 함수를 빌드하면 AWS SAM이 함수 코드와 지정한 의존성을 담은 .zip 배포 패키지 또는 컨테이너 이미지를 자동으로 만들어요. 그런 다음 AWS SAM은 CloudFormation 스택을 사용해 함수를 배포하죠. AWS SAM으로 Lambda 함수를 빌드·배포하는 방법을 더 알아보려면 AWS Serverless Application Model 개발자 안내서의 AWS SAM 시작하기를 참고하세요.
다음 단계는 AWS SAM을 사용해 샘플 .NET Hello World 애플리케이션을 다운로드하고 빌드하고 배포하는 방법을 보여줘요. 이 샘플 애플리케이션은 Lambda 함수와 Amazon API Gateway 엔드포인트를 사용해 기본 API 백엔드를 구현하죠. API Gateway 엔드포인트에 HTTP GET 요청을 보내면 API Gateway가 여러분의 Lambda 함수를 호출합니다. 함수는 요청을 처리한 Lambda 함수 인스턴스의 IP 주소와 함께 "hello world" 메시지를 반환해요.
AWS SAM으로 애플리케이션을 빌드·배포하면, 내부적으로 AWS SAM CLI가 dotnet lambda package 명령을 사용해 개별 Lambda 함수 코드 번들을 패키징해요.
본문
사전 요구 사항
.NET 8 SDK
.NET 8 SDK와 Runtime을 설치하세요.
AWS SAM CLI version 1.39 이상
AWS SAM CLI 최신 버전 설치 방법은 AWS SAM CLI 설치를 참고하세요.
샘플 AWS SAM 애플리케이션 배포
-
다음 명령으로 Hello world .NET 템플릿을 사용해 애플리케이션을 초기화합니다.
sam init --app-template hello-world --name sam-app \ --package-type Zip --runtime dotnet8이 명령은 프로젝트 디렉토리에 다음 파일과 디렉토리를 만듭니다.
└── sam-app ├── README.md ├── events │ └── event.json ├── omnisharp.json ├── samconfig.toml ├── src │ └── HelloWorld │ ├── Function.cs │ ├── HelloWorld.csproj │ └── aws-lambda-tools-defaults.json ├── template.yaml └── test └── HelloWorld.Test ├── FunctionTest.cs └── HelloWorld.Tests.csproj -
template.yaml파일이 있는 디렉토리로 이동합니다. 이 파일은 Lambda 함수와 API Gateway API를 포함해 애플리케이션의 AWS 리소스를 정의하는 템플릿이에요.cd sam-app -
애플리케이션 소스를 빌드하려면 다음 명령을 실행합니다.
sam build -
애플리케이션을 AWS에 배포하려면 다음 명령을 실행합니다.
sam deploy --guided이 명령은 다음 일련의 프롬프트로 애플리케이션을 패키징하고 배포해요. 기본 옵션을 수락하려면 Enter를 누르세요. 참고
HelloWorldFunction may not have authorization defined, is this okay? 에서는 반드시y를 입력하세요.- Stack Name: CloudFormation에 배포할 스택의 이름이에요. 이 이름은 AWS 계정과 AWS 리전에서 고유해야 합니다.
- AWS Region: 앱을 배포할 AWS 리전이에요.
- Confirm changes before deploy: yes를 선택하면 AWS SAM이 애플리케이션 변경 사항을 배포하기 전에 변경 세트(change set)를 수동 검토할 수 있어요. no를 선택하면 AWS SAM CLI가 애플리케이션 변경 사항을 자동 배포해요.
- Allow SAM CLI IAM role creation: 이 예제의 Hello world를 포함해 많은 AWS SAM 템플릿은 Lambda 함수가 다른 AWS 서비스에 접근할 수 있게 AWS Identity and Access Management(IAM) 역할을 만듭니다. IAM 역할을 만들거나 수정하는 CloudFormation 스택을 배포할 권한을 부여하려면 Yes를 선택하세요.
- Disable rollback: 기본적으로 AWS SAM은 스택을 만들거나 배포하는 동안 오류가 발생하면 스택을 이전 버전으로 롤백해요. 이 기본값을 수락하려면 No를 선택하세요.
- HelloWorldFunction may not have authorization defined, is this okay:
y를 입력하세요. - Save arguments to samconfig.toml: yes를 선택하면 구성 선택 사항을 저장해요. 나중에 매개변수 없이
sam deploy를 다시 실행해 애플리케이션 변경 사항을 배포할 수 있어요.
-
애플리케이션 배포가 완료되면 CLI는 Hello World Lambda 함수와 이를 위해 생성된 IAM 역할의 Amazon Resource Name(ARN)을 반환해요. API Gateway API의 엔드포인트도 표시되죠. 애플리케이션을 테스트하려면 브라우저에서 엔드포인트를 여세요. 다음과 유사한 응답이 보일 거예요.
{"message":"hello world","location":"34.244.135.203"} -
리소스를 삭제하려면 다음 명령을 실행합니다. 만든 API 엔드포인트는 인터넷을 통해 접근 가능한 공개 엔드포인트예요. 테스트 후에는 이 엔드포인트를 삭제하는 걸 권장해요.
sam delete
다음 단계
.NET으로 AWS SAM을 사용해 Lambda 함수를 빌드·배포하는 방법을 더 알아보려면 다음 리소스를 참고하세요:
더 알아보기 (Learn more)
- AWS SAM 템플릿에서 Lambda 함수 빌드, .NET Hello World 샘플 배포, 다음 단계 리소스까지 살펴보세요.