AWS SAM을 사용하여 C# Lambda 함수 배포 - AWS Lambda

AWS SAM을 사용하여 C# Lambda 함수 배포

AWS Serverless Application Model(AWS SAM)은 AWS에서 서버리스 애플리케이션을 빌드하고 실행하는 프로세스를 간소화하는 데 도움이 되는 도구 키트입니다. YAML 또는 JSON 템플릿에서 애플리케이션의 리소스를 정의하고 AWS SAM Command Line Interface(AWS SAM CLI)를 사용하여 애플리케이션을 빌드, 패키징 및 배포합니다. AWS SAM 템플릿에서 Lambda 함수를 빌드하면 AWS SAM은(는) 함수 코드와 사용자가 지정하는 종속 항목을 사용하여 .zip 배포 패키지 또는 컨테이너 이미지를 자동으로 생성합니다. AWS SAM은(는) AWS CloudFormation 스택을 사용하여 함수를 배포합니다. AWS SAM을 사용하여 Lambda 함수를 빌드하고 배포하는 방법에 대해 자세히 알아보려면 AWS Serverless Application Model 개발자 안내서의 Getting started with 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 및 런타임을 설치합니다.

AWS SAM CLI 버전 1.39 이상

AWS SAM CLI의 최신 버전을 설치하는 방법에 대해 알아보려면 AWS SAM CLI 설치를 확인하십시오.

샘플 AWS SAM 애플리케이션 배포

  1. 다음 명령을 활용하는 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
  2. template.yaml file이(가) 포함된 디렉토리로 이동합니다. 이 파일은 Lambda 함수 및 API Gateway API를 포함하여 애플리케이션의 AWS 리소스를 정의하는 템플릿입니다.

    cd sam-app
  3. 애플리케이션의 소스를 빌드하려면 다음 명령을 실행합니다.

    sam build
  4. AWS에 애플리케이션을 배포하려면 다음 명령을 실행합니다.

    sam deploy --guided

    이 명령은 다음과 같은 일련의 프롬프트와 함께 애플리케이션을 패키징하고 배포합니다. 기본 옵션을 그대로 사용하려면 입력 키를 누릅니다.

    참고

    HelloWorldFunction에 권한 부여가 정의되어 있지 않을 수도 있습니다. 괜찮습니까?에 대해 y을(를) 입력합니다.

    • 스택 이름: AWS CloudFormation에 배포할 스택의 이름입니다. 이 이름은 AWS 계정 및 AWS 리전에 고유한 것이어야 합니다.

    • AWS 리전: 앱을 배포하려는 AWS 리전입니다.

    • 배포 전 변경 사항 확인: AWS SAM이(가) 애플리케이션 변경 사항을 배포하기 전에 변경 세트를 수동으로 검토하려면 예를 선택합니다. 아니요를 선택하면 AWS SAM CLI가 애플리케이션 변경 사항을 자동으로 배포합니다.

    • SAM CLI IAM 역할 생성 허용: 이 예제의 Hello world 템플릿을 비롯한 많은 AWS SAM 템플릿은 AWS Identity and Access Management (IAM) 역할을 생성하여 Lambda 함수를 다른 AWS 서비스에 액세스할 수 있는 권한을 부여합니다. IAM 역할을 생성하거나 수정하는 AWS CloudFormation 스택을 배포할 권한을 제공하려면 예를 선택합니다.

    • 롤백 비활성화: 기본적으로 AWS SAM이(가) 스택을 생성하거나 배포하는 동안 오류가 발생하면 스택을 이전 버전으로 롤백합니다. 이 기본값을 허용하려면 아니요를 선택합니다.

    • HelloWorldFunction에 권한 부여가 정의되어 있지 않을 수 있습니다. 괜찮습니까: y을(를) 입력합니다.

    • samconfig.toml에 인수 저장: 구성 선택 사항을 저장하려면 예를 선택합니다. 앞으로는 파라미터 sam deploy 없이 다시 실행하여 변경 내용을 애플리케이션에 배포할 수 있습니다.

  5. 애플리케이션 배포가 완료되면 CLI는 Hello World Lambda 함수의 Amazon 리소스 이름(ARN)과 이 함수에 대해 생성된 IAM 역할을 반환합니다. 또한 API Gateway API의 엔드포인트가 표시됩니다. 애플리케이션을 테스트하려면 브라우저에서 엔드포인트를 엽니다. 다음과 유사한 응답이 나타납니다.

    {"message":"hello world","location":"34.244.135.203"}
  6. 다음 명령을 실행하여 리소스를 삭제합니다. 참고로 생성한 API 엔드포인트는 인터넷을 통해 액세스할 수 있는 퍼블릭 엔드포인트입니다. 테스트 후에는 이 엔드포인트를 삭제하는 것이 좋습니다.

    sam delete

다음 단계

.NET을 사용하여 Lambda 함수를 빌드하고 배포하기 위해 AWS SAM을(를) 사용하는 방법에 대해 자세히 알아보려면 다음 리소스를 참조하십시오.