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 |
|
Amazon Linux 2023 |
スケジュールされていません |
スケジュールされていません |
スケジュールされていません |
Node.js 20 |
|
Amazon Linux 2023 |
スケジュールされていません |
スケジュールされていません |
スケジュールされていません |
Node.js 18 |
|
Amazon Linux 2 |
2025 年 7 月 31 日 |
2025 年 9 月 1 日 |
2025 年 10 月 1 日 |
トピック
- TypeScript 開発環境のセットアップ
- TypeScript の Lambda 関数ハンドラーの定義
- .zip ファイルアーカイブを使用して、トランスパイルされた TypeScript コードを Lambda にデプロイする
- コンテナイメージを使用して、トランスパイルされた TypeScript コードを Lambda にデプロイする
- TypeScript Lambda 関数のレイヤーを操作する
- Lambda コンテキストオブジェクトを使用して TypeScript 関数の情報を取得する
- TypeScript Lambda 関数のログ記録とモニタリング
- AWS Lambda での TypeScript コードのトレース
TypeScript 開発環境のセットアップ
TypeScript 関数のコードを記述するには、ローカルの統合開発環境 (IDE)、テキストエディタ、または AWS Cloud9 を使用します。Lambda コンソールでは TypeScript コードを作成できません。
TypeScript コードのトランスパイルのためには、esbuildtsc
) をセットアップします。これらは、TypeScript ディストリビューション
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"] }