

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# でのネイティブ AOT コンパイルを使用した .NET Lambda 関数の構築 AWS SAM
<a name="build-dotnet7"></a>

( AWS Serverless Application Model AWS SAM) を使用して .NET 8 AWS Lambda 関数を構築およびパッケージ化し、ネイティブAhead-of-TimeAOT) コンパイルを利用して 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 SAM CLI を使用してアプリケーションを構築する](#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 の詳細については、GitHub の dotnet リポジトリで「[ネイティブ AOT の使用](https://github.com/dotnet/runtime/tree/main/src/coreclr/nativeaot#readme)」を参照してください。

## .NET 8 Lambda 関数 AWS SAM での の使用
<a name="build-dotnet7-sam"></a>

 AWS Serverless Application Model (AWS SAM) を使用して.NET 8 Lambda 関数を設定するには、次の手順を実行します。
+ 開発マシンに前提条件をインストールする。
+  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 SAM CLI がインストールされているかを確認するには、次のコマンドを実行します。

   ```
   sam --version
   ```

1. をインストールするには AWS SAM CLI、「」を参照してください[AWS SAM CLI のインストール](install-sam-cli.md)。

1. のインストール済みバージョンをアップグレードするには AWS SAM CLI、「」を参照してください[AWS SAM CLI のアップグレード](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade)。

**.NET Core CLI をインストールする**

1. .NET Core CLI をダウンロードしてインストールするには、Microsoft の Web サイトで「[.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 Tool の詳細については、GitHub の [AWS Extensions for .NET CLI](https://github.com/aws/aws-extensions-for-dotnet-cli) リポジトリを参照してください。

**Docker をインストールする**
+ ネイティブ AOT を構築に使用するには、Docker をインストールする必要があります。インストール手順については、「[AWS SAM CLI で 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 SAM CLI で 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 SAM CLI を使用してアプリケーションを構築する
<a name="build-dotnet7-sam-build"></a>

 プロジェクトのルートディレクトリから `sam build` コマンドを実行して、アプリケーションの構築を開始します。.NET 8 プロジェクトファイルで `PublishAot` プロパティを定義済みの場合、 AWS SAM CLI はネイティブ AOT コンパイルにより構築されます。`PublishAot` プロパティの詳細については、Microsoft の「*.NET ドキュメント*」で「[ネイティブ AOT デプロイ](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/)」を参照してください。

関数を構築する際、 AWS SAM CLI は 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)」を参照してください。