TypeScript による Lambda 関数の作成 - AWS Lambda

TypeScript による Lambda 関数の作成

Node.js ランタイムを使用すると、TypeScript コードを AWS Lambda で実行できます。Node.js は TypeScript コードをネイティブに実行しないため、最初に TypeScript から JavaScript へのコード変換 (トランスパイル) を行う必要があります。次に、JavaScript ファイルを使用して、この関数コードを Lambda にデプロイします。このコードは、ユーザーが管理する AWS Identity and Access Management (IAM) ロールの認証情報を使用することで、AWS SDK for JavaScript を含む環境内で実行できます。Node.js ランタイムに含まれている SDK バージョンの詳細については、「」を参照してくださいランタイムに含まれる SDK バージョン

Lambda は、以下の Node.js ランタイムをサポートしています。

名前 識別子 オペレーティングシステム 廃止日 関数の作成をブロックする 関数の更新をブロックする

Node.js 22

nodejs22.x

Amazon Linux 2023

スケジュールされていません

スケジュールされていません

スケジュールされていません

Node.js 20

nodejs20.x

Amazon Linux 2023

スケジュールされていません

スケジュールされていません

スケジュールされていません

Node.js 18

nodejs18.x

Amazon Linux 2

2025 年 7 月 31 日

2025 年 9 月 1 日

2025 年 10 月 1 日

TypeScript 開発環境のセットアップ

TypeScript 関数のコードを記述するには、ローカルの統合開発環境 (IDE)、テキストエディタ、または AWS Cloud9 を使用します。Lambda コンソールでは TypeScript コードを作成できません。

TypeScript コードのトランスパイルのためには、esbuild のようなコンパイラ、またはマイクロソフトの TypeScript コンパイラ (tsc) をセットアップします。これらは、TypeScript ディストリビューションに同梱されています。AWS Serverless Application Model (AWS SAM) または AWS Cloud Development Kit (AWS CDK) を使用すると、TypeScript コードのビルドとデプロイを簡素化できます。どちらのツールも、TypeScript コードから JavaScript へのトランスパイルに esbuild を使用します。

esbuild を使用する際は、以下を考慮してください。

  • TypeScript に関する注意事項がいくつか存在します。

  • TypeScript のトランスパイルには、使用する予定の Node.js ランタイムに適合する設定を行う必要があります。詳細については、esbuild ドキュメントの「Target」(ターゲット) を参照してください。Lambda でサポートされている特定の Node.js バージョンをターゲットにする場合の、tsconfig.json ファイルの例については、TypeScript GitHub リポジトリを参照してください。

  • esbuild では、型チェックは行われません。型をチェックする場合は、tsc コンパイラを使用します。次の例に示すように、tsc -noEmit を実行するか、tsconfig.json ファイルに "noEmit" パラメータを追加します。これを設定することで、tsc は JavaScript ファイルを出力しなくなります。型のチェックが終了したら、esbuild を使用して TypeScript ファイルを JavaScript に変換します。

例 tsconfig.json
{ "compilerOptions": { "target": "es2020", "strict": true, "preserveConstEnums": true, "noEmit": true, "sourceMap": false, "module":"commonjs", "moduleResolution":"node", "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "isolatedModules": true, }, "exclude": ["node_modules", "**/*.test.ts"] }