esbuild による Node.js Lambda関数の構築 (プレビュー) - AWS Serverless Application Model

esbuild による Node.js Lambda関数の構築 (プレビュー)

esbuild のサポートは現在パブリックプレビュー中です。パブリックプレビュー中は、esbuild のサポートは、下位互換性のない変更の対象となる場合があります。

esbuild と共に AWS SAM CLI を使用して Node.js Lambda 関数をビルドおよびパッケージ化します。esbuild は TypeScript で記述する Lambda 関数をサポートします。

esbuild を使用して Node.js Lambda 関数を構築するには、AWS:Serverless::Function リソースに Metadata オブジェクトを追加し、BuildMethodesbuild を指定します。sam build を実行すると、AWS SAM は esbuild を使用して、Lambda 関数コードをバンドルします。

Metadata プロパティ

Metadata オブジェクトは esbuild の以下のプロパティをサポートします。

BuildMethod

アプリケーションのバンドルを指定します。esbuild はサポートされる唯一の値です。

BuildProperties

Lambda 関数コードの構築プロパティを指定するオブジェクトです。

BuildProperties オブジェクトは esbuild の以下のプロパティをサポートします。プロパティはすべてオプションです。デフォルトでは、AWS SAM は、エントリポイントに Lambda 関数ハンドラを使用します。

EntryPoint

アプリケーションのエントリポイントを指定します。

外部

構築から除外するパッケージのリストを指定します。

ローダー

特定のファイルタイプのデータをロードするための設定のリストを指定します。

Minify

バンドルされた出力コードを縮小するかどうかを指定します。デフォルト値は true です。

Sourcemap

バンドラーがソースマップファイルを生成するかどうかを指定します。デフォルト値は true です。

ターゲット

ターゲットの ECMAScript バージョンを指定します。デフォルト値は es2020 です。

TypeScript Lambda 関数の例

次のサンプル AWS SAM テンプレートスニペットは、esbuild を使用して、hello-world/app.ts の TypeScript コードから Node.js Lambda 関数を作成します。

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: app.handler Runtime: nodejs14.x Architectures: - x86_64 Events: HelloWorld: Type: Api Properties: Path: /hello Method: get Metadata: BuildMethod: esbuild BuildProperties: Minify: false Target: "es2020" Sourcemap: true EntryPoints: - app.ts

esbuild プレビュー機能の使用

esbuild を使用するには、プレビュー機能にオプトインする必要があります。設定ファイル、環境変数、または esbuild を使用するコマンドライン引数を使用できます。これらのいずれも指定しない場合、AWS SAM CLI は、プレビュー機能の使用を確認するプロンプトを表示します。次の例では、esbuild と sam sync の使用をオプトインします。

Configuration file

アプリケーションの設定ファイルで以下を指定します。

[default.build.parameters] beta_features = true [default.sync.parameters] beta_features = true
Environment variable

SAM_CLI_BETA_ESBUILD=1 環境変数を設定します。

Command line argument

ビルドコマンドに --beta-features 引数を追加します。この引数により、AWS SAM CLI のすべてのプレビュー機能が有効になります。

sam build --beta-features