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 のインストール
-
AWS SAM CLI がインストールされているかを確認するには、次のコマンドを実行します。
sam --version -
AWS SAM CLI をインストールするには、「AWS SAM CLI のインストール」をご参照ください。
-
インストールされている AWS SAM CLI のバージョンをアップグレードするには、「AWS SAM CLI のアップグレード」を参照してください。
.NET Core CLI をインストールする
-
.NET Core CLI をダウンロードしてインストールするには、Microsoft の Web サイトで「.NET のダウンロード
」を参照してください。 -
NET Core CLI の詳細については、「AWS Lambda デベロッパーガイド」の「.NET Core CLI」を参照してください。
Amazon.Lambda.Tools .NET Core Global Tool をインストールする
-
次のコマンドを実行してください。
dotnet tool install -g Amazon.Lambda.Tools -
ツールがすでにインストールされている場合には、次のコマンドを実行し、最新バージョンを使用していることを確認します。
dotnet tool update -g Amazon.Lambda.Tools -
Amazon.Lambda.Tools の .NET Core Global Tool の詳細については、GitHub の AWS Extensions for .NET CLI
リポジトリを参照してください。
Docker をインストールする
-
ネイティブ AOT を構築に使用するには、Docker をインストールする必要があります。 のインストール手順については、「」を参照してくださいAWS SAM CLI で Docker を使用するためのインストール方法
AWS SAM テンプレートで .NET 8 Lambda 関数を定義する
AWS SAM テンプレートで .NET 8 Lambda 関数を定義するには、次の手順を実行します。
-
選択した開始ディレクトリから次のコマンドを実行します。
sam init AWS Quick Start Templatesを選択して開始テンプレートを選択します。Hello World Exampleテンプレートを選択します。nを入力して、最も人気のあるランタイムとパッケージタイプを使用しないことを選択します。ランタイムで、
dotnet8を選択します。パッケージタイプで、
Zipを選択します。スターターテンプレートで、
Hello World Example using native AOTを選択します。
Docker をインストールする
-
ネイティブ AOT を構築に使用するには、Docker をインストールする必要があります。 のインストール手順については、「」を参照してくださいAWS SAM CLI で 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::Function の Event プロパティが 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」を参照してください。