翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
で esbuild を使用して Node.js Lambda 関数を構築する AWS SAM
Node.js AWS Lambda 関数を構築してパッケージ化するには、esbuild JavaScript バンドルャ AWS SAMCLIで を使用できます。esbuild バンドラーは TypeScript で記述されて Lambda 関数をサポートします。
esbuild を使用して Node.js Lambda 関数を構築するには、AWS:Serverless::Function リソースに Metadata オブジェクトを追加し、BuildMethod に esbuild を指定します。sam build コマンドを実行すると、 は esbuild AWS SAM を使用して Lambda 関数コードをバンドルします。
Metadata プロパティ
Metadata オブジェクトは esbuild の以下のプロパティをサポートします。
BuildMethod
アプリケーションのバンドルを指定します。esbuild はサポートされる唯一の値です。
BuildProperties
Lambda 関数コードの構築プロパティを指定します。
BuildProperties オブジェクトは esbuild の以下のプロパティをサポートします。プロパティはすべてオプションです。デフォルトでは、 はエントリポイントに Lambda 関数ハンドラー AWS SAM を使用します。
- EntryPoint
-
アプリケーションのエントリポイントを指定します。
- 外部
-
構築から除外するパッケージのリストを指定します。詳細については、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: falseはNODE_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>"