AWS SAM でのネイティブ AOT コンパイルを使用した .NET Lambda 関数の構築 - AWS Serverless Application Model

AWS SAM でのネイティブ AOT コンパイルを使用した .NET Lambda 関数の構築

.NET 8 AWS Lambda 関数を AWS Serverless Application Model (AWS SAM) で構築してパッケージ化し、ネイティブの事前 (AOT) コンパイルを利用することで、AWS Lambda のコールドスタート時間を短縮します。

.NET 8 ネイティブ AOT の概要

従来の .NET Lambda 関数にはコールドスタート時間があり、それがユーザーエクスペリエンスを損ね、システムのレイテンシーやサーバーレスアプリケーションの使用コストに影響を及ぼしていました。.NET ネイティブ AOT コンパイルを使用すると、Lambda 関数のコールドスタート時間を短縮できます。.NET 8 のネイティブ AOT の詳細については、GitHub の dotnet リポジトリで「ネイティブ AOT の使用」を参照してください。

AWS SAM での .NET 8 Lambda 関数の使用

AWS Serverless Application Model (AWS SAM) を使用して.NET 8 Lambda 関数を設定するには、次の手順を実行します。

  • 開発マシンに前提条件をインストールする。

  • .NET 8 Lambda 関数を AWS SAM テンプレートで定義します。

  • AWS SAM CLI を使用してアプリケーションを構築します。

インストール条件

以下がインストールの前提条件となります。

  • AWS SAMCLI

  • .NET Core CLI

  • Amazon.Lambda.Tools .NET Core Global Tool

  • Docker

AWS SAM CLI のインストール
  1. AWS SAM CLI がインストールされているかを確認するには、次のコマンドを実行します。

    sam --version
  2. AWS SAM CLI をインストールするには、「AWS SAM CLI のインストール」をご参照ください。

  3. インストールされている AWS SAM CLI のバージョンをアップグレードするには、「AWS SAM CLI のアップグレード」を参照してください。

.NET Core CLI をインストールする
  1. .NET Core CLI をダウンロードしてインストールするには、Microsoft の Web サイトで「.NET のダウンロード」を参照してください。

  2. NET Core CLI の詳細については、「AWS Lambda デベロッパーガイド」の「.NET Core CLI」を参照してください。

Amazon.Lambda.Tools .NET Core Global Tool をインストールする
  1. 次のコマンドを実行してください。

    dotnet tool install -g Amazon.Lambda.Tools
  2. ツールがすでにインストールされている場合には、次のコマンドを実行し、最新バージョンを使用していることを確認します。

    dotnet tool update -g Amazon.Lambda.Tools
  3. Amazon.Lambda.Tools の .NET Core Global Tool の詳細については、GitHub の AWS Extensions for .NET CLI リポジトリを参照してください。

Docker をインストールする

AWS SAM テンプレートで .NET 8 Lambda 関数を定義する

AWS SAM テンプレートで .NET 8 Lambda 関数を定義するには、次の手順を実行します。

  1. 選択した開始ディレクトリから次のコマンドを実行します。

    sam init
  2. AWS Quick Start Templates を選択して開始テンプレートを選択します。

  3. Hello World Example テンプレートを選択します。

  4. n を入力して、最も人気のあるランタイムとパッケージタイプを使用しないことを選択します。

  5. ランタイムで、dotnet8 を選択します。

  6. パッケージタイプで、Zip を選択します。

  7. スターターテンプレートで、Hello World Example using native AOT を選択します。

Docker をインストールする
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
注記

AWS::Serverless::FunctionEvent プロパティが Api に設定されているが、RestApiId プロパティは指定されていないという場合、AWS SAM は AWS::ApiGateway::RestApi CloudFormation リソースを生成します。

AWS SAM CLI を使用してアプリケーションを構築する

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

関数を構築する際、 AWS SAM CLI は Amazon.Lambda.Tools .NET Core Global Tool を使用する .NET Core CLI を呼び出します。

注記

構築時にプロジェクトの同じディレクトリか親ディレクトリに .sln ファイルが存在する場合、.sln ファイルが格納されたディレクトリがコンテナにマウントされます。.sln ファイルが見つからない場合は、プロジェクトフォルダだけがマウントされます。そのためマルチプロジェクトアプリケーションを構築する場合は、.sln ファイルが存在することを確認してください。

詳細

.NET 8 Lambda 関数の構築の詳細については、「AWS Lambda の .NET 8 ランタイムの紹介」を参照してください。

sam build コマンドのリファレンスについては、「sam build」を参照してください。