

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 에서 네이티브 AOT 컴파일을 사용하여 .NET Lambda 함수 빌드 AWS SAM
<a name="build-dotnet7"></a>

네이티브 AOT(Ahead-of-Time AWS SAM) 컴파일을 활용하여 AWS Lambda 콜드 스타트 시간을 개선하는 AWS Serverless Application Model ()로 .NET 8 AWS Lambda 함수를 빌드하고 패키징합니다.

**Topics**
+ [.NET 8 네이티브 AOT 개요](#build-dotnet7-overview)
+ [.NET 8 Lambda 함수와 AWS SAM 함께 사용](#build-dotnet7-sam)
+ [사전 조건 설치](#build-dotnet7-prerequisites)
+ [AWS SAM 템플릿에서 .NET 8 Lambda 함수 정의](#build-dotnet7-sam-define)
+ [AWS SAMCLI를 사용한 애플리케이션 구축](#build-dotnet7-sam-build)
+ [자세히 알아보기](#build-dotnet7-learn-more)

## .NET 8 네이티브 AOT 개요
<a name="build-dotnet7-overview"></a>

전통적으로 .NET Lambda 함수의 콜드 스타트 시간은 사용자 경험, 시스템 지연 시간, 서버리스 애플리케이션 사용 비용에 영향을 미칩니다. .NET 네이티브 AOT 컴파일을 사용하면 Lambda 함수의 콜드 스타트 시간을 개선할 수 있습니다. .NET 8용 네이티브 AOT에 대한 자세한 내용은 Dotnet GitHub 리포지토리**의 [네이티브 AOT 사용](https://github.com/dotnet/runtime/tree/main/src/coreclr/nativeaot#readme)을 참조하세요.

## .NET 8 Lambda 함수와 AWS SAM 함께 사용
<a name="build-dotnet7-sam"></a>

다음을 수행하여 .NET 8 Lambda 함수에서 AWS Serverless Application Model (AWS SAM)을 구성합니다.
+ 귀하의 개발 기기에 사전 조건을 설치합니다.
+  AWS SAM 템플릿에서 .NET 8 Lambda 함수를 정의합니다.
+ 를 사용하여 애플리케이션을 빌드합니다 AWS SAM CLI.

## 사전 조건 설치
<a name="build-dotnet7-prerequisites"></a>

다음은 필수적 사전 조건입니다.
+ 는 AWS SAM CLI
+ .NET Core CLI
+ Amazon.Lambda.Tools .NET Core Global Tool
+ Docker

**AWS SAM CLI 설치**

1. 이미 AWS SAMCLI가 설치되어 있는지 확인하려면 다음을 실행합니다.

   ```
   sam --version
   ```

1. 를 설치하려면 단원을 AWS SAM CLI참조하십시오[AWS SAM CLI 설치](install-sam-cli.md).

1. 설치된 버전의를 업그레이드하려면 단원을 AWS SAM CLI참조하십시오[AWS SAMCLI업그레이드](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade).

**.NET Core CLI 설치**

1. .NET Core CLI를 다운로드하고 설치하려면 Microsoft 웹 사이트에서[ .NET 다운로드](https://dotnet.microsoft.com/download)를 참조하세요.

1. .NET Core CLI에 대한 자세한 내용은 *AWS Lambda 개발자 가이드*의 [.NET Core CLI](https://docs.aws.amazon.com/lambda/latest/dg/csharp-package-cli.html)를 참조하세요.

**Amazon.Lambda.Tools .NET Core Global Tool 설치**

1. 다음 명령을 실행합니다.

   ```
   dotnet tool install -g Amazon.Lambda.Tools
   ```

1. 이 도구가 이미 설치되어 있으면 다음 명령을 사용하여 최신 버전인지 확인할 수 있습니다.

   ```
   dotnet tool update -g Amazon.Lambda.Tools
   ```

1. Amazon.Lambda.Tools .NET Core Global에 대한 자세한 내용은 GitHub의 [AWS Extensions for .NET CLI](https://github.com/aws/aws-extensions-for-dotnet-cli) 리포지토리를 참조하세요.

**Docker 설치**
+ 네이티브 AOT로 구축하려면 Docker이 설치되어야 합니다. 설치 지침은 [AWS SAMCLI와 함께 사용할 Docker 설치](install-docker.md)을 확인하십시오.

## AWS SAM 템플릿에서 .NET 8 Lambda 함수 정의
<a name="build-dotnet7-sam-define"></a>

 AWS SAM 템플릿에서 .NET8 Lambda 함수를 정의하려면 다음을 수행합니다.

1. 선택한 시작 디렉터리에서 다음 명령을 실행합니다.

   ```
   sam init
   ```

1. `AWS Quick Start Templates`을 선택하여 시작 템플릿을 선택합니다.

1. `Hello World Example` 템플릿을 선택합니다.

1. `n`을 입력하여 가장 많이 사용하는 런타임 및 패키지 유형을 사용하지 않도록 선택합니다.

1. 런타임에서 `dotnet8`을 선택합니다.

1. 패키지 유형에서 `Zip`을 선택합니다.

1. 스타터 템플릿에서 `Hello World Example using native AOT`를 선택합니다.

**Docker 설치**
+ 네이티브 AOT로 구축하려면 Docker이 설치되어야 합니다. 설치 지침은 [AWS SAMCLI와 함께 사용할 Docker 설치](install-docker.md)을 확인하십시오.

```
Resources:
HelloWorldFunction:
  Type: AWS::Serverless::Function
  Properties:
    CodeUri: ./src/HelloWorldAot/
    Handler: bootstrap
    Runtime: dotnet8
    Architectures:
      - x86_64
    Events:
      HelloWorldAot:
        Type: Api 
        Properties:
          Path: /hello
          Method: get
```

**참고**  
의 `Event` 속성`AWS::Serverless::Function`이 로 설정`Api`되었지만 `RestApiId` 속성이 지정되지 않은 경우는 `AWS::ApiGateway::RestApi` CloudFormation 리소스를 AWS SAM 생성합니다.

## AWS SAMCLI를 사용한 애플리케이션 구축
<a name="build-dotnet7-sam-build"></a>

 프로젝트의 루트 디렉터리에서 `sam build` 명령을 실행하여 애플리케이션 구축을 시작합니다. .NET 8 프로젝트 파일에 `PublishAot` 속성을 정의한 경우 AWS SAMCLI가 네이티브 AOT 컴파일을 사용하여 빌드합니다. `PublishAot`속성에 대한 자세한 내용은 Microsoft의 [.NET 설명서](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/)에서 *네이티브 AOT 배포*를 참조하세요.

함수를 구축하려면 AWS SAMCLI가 Amazon.Lambda.Tools .NET Core Global Tool을 사용하는 .NET Core CLI를 간접 호출합니다.

**참고**  
구축 시 `.sln` 파일이 프로젝트의 동일 또는 상위 디렉터리에 있는 경우 `.sln` 파일이 들어있는 디렉터리가 컨테이너에 마운트됩니다. `.sln` 파일을 찾을 수 없는 경우 프로젝트 폴더만 마운트됩니다. 따라서 다중 프로젝트 응용 프로그램을 구축하는 경우 `.sln` 파일이 속성에 있는지 확인하십시오.

## 자세히 알아보기
<a name="build-dotnet7-learn-more"></a>

.NET 8 Lambda 함수 빌드에 대한 자세한 내용은 [AWS Lambda용 .NET 8 런타임 소개](https://aws.amazon.com/blogs/compute/introducing-the-net-8-runtime-for-aws-lambda/)를 참조하세요.

**sam build** 명령에 대한 참조는 [sam build](sam-cli-command-reference-sam-build.md)를 확인하세요.