esbuild による Node.js Lambda関数の構築 - AWS Serverless Application Model

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

esbuild による Node.js Lambda関数の構築

Node.js AWS Lambda 関数を構築してパッケージ化するには、esbuild JavaScript バンドルャ AWS SAMCLIで を使用できます。esbuild バンドラーは、 で記述する Lambda 関数をサポートします TypeScript。

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

Metadata プロパティ

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

BuildMethod

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

BuildProperties

Lambda 関数コードの構築プロパティを指定します。

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

EntryPoints

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

外部

構築から除外するパッケージのリストを指定します。詳細については、esbuild ウェブサイトの「External」を参照してください。

[形式]

アプリケーション内で生成された JavaScript ファイルの出力形式を指定します。詳細については、esbuild ウェブサイトの「Format」を参照してください。

[ローダー]

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

MainFields

パッケージを解決する際にインポートを試行する package.json フィールドを指定します。デフォルト値は、main,moduleです。

Minify

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

OutExtension

esbuild が生成するファイルのファイル拡張子をカスタマイズします。詳細については、esbuild ウェブサイトの「Out extension」を参照してください。

Sourcemap

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

true に設定すると、NODE_OPTIONS: --enable-source-maps が Lambda 関数の環境変数に追加され、ソースマップが生成されて関数に含まれます。

また、NODE_OPTIONS: --enable-source-maps が関数の環境変数に含まれると、Sourcemap が自動的に true に設定されます。

競合する場合、Sourcemap: falseNODE_OPTIONS: --enable-source-maps より優先されます。

注記

デフォルトでは、Lambda は保存中のすべての環境変数を AWS Key Management Service (AWS KMS) で暗号化します。デプロイを正常に行うには、ソースマップを使用するとき、関数の実行ロールに kms:Encrypt アクションを実行するアクセス許可が必要です。

SourcesContent

ソースマップファイルにソースコードを含めるかどうかを指定します。Sourcemap'true' に設定されている場合、このプロパティを設定します。

  • すべてのソースコードを含めるには SourcesContent: 'true' を指定します。

  • すべてのソースコードを除外するには SourcesContent: 'false' を指定します。これにより、ソースマップのファイルサイズが小さくなり、起動時間が短縮されるため本番環境で役立ちます。ただし、ソースコードはデバッガーでは使用できません。

デフォルト値は、SourcesContent: trueです。

詳細については、esbuild ウェブサイトの「ソースコンテンツ」を参照してください。

Target

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

TypeScript Lambda 関数の例

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

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: app.handler Runtime: nodejs20.x Architectures: - x86_64 Events: HelloWorld: Type: Api Properties: Path: /hello Method: get Environment: Variables: NODE_OPTIONS: --enable-source-maps Metadata: BuildMethod: esbuild BuildProperties: Format: esm Minify: false OutExtension: - .js=.mjs Target: "es2020" Sourcemap: true EntryPoints: - app.ts External: - "<package-to-exclude>"