View a markdown version of this page

使用 TypeScript 建置 Lambda 函數 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 TypeScript 建置 Lambda 函數

您可以使用 Node.js 執行期在 AWS Lambda中執行 TypeScript。由於 Node.js 不會在本機執行 TypeScript 程式碼,因此必須先將 TypeScript 程式碼轉譯為 JavaScript。然後,使用 JavaScript 檔案,將函數程式碼部署至 Lambda。您的程式碼會在包含適用於 JavaScript 的 AWS 開發套件的環境中執行,其中包含您管理之 AWS Identity and Access Management (IAM) 角色的登入資料。若要進一步了解 Node.js 執行時期隨附的 SDK 版本,請參閱 包含執行時期的 SDK 版本

如需使用 追蹤 TypeScript 函數的資訊,請參閱 在 中追蹤 TypeScript 程式碼 AWS Lambda

Lambda 支援以下 Node.js 執行期。

名稱 識別符 作業系統 取代日期 封鎖函數建立 封鎖函數更新

Node.js 24

nodejs24.x

Amazon Linux 2023

2028 年 4 月 30 日

2028 年 6 月 1 日

2028 年 7 月 1 日

Node.js 22

nodejs22.x

Amazon Linux 2023

2027 年 4 月 30 日

2027 年 6 月 1 日

2027 年 7 月 1 日

設定 TypeScript 開發環境

使用本機整合式開發環境 (IDE) 或文字編輯器來編寫 TypeScript 函式程式碼。無法在 Lambda 主控台上建立 TypeScript 程式碼。

您可以使用 esbuild 或 Microsoft 的 TypeScript 編譯器 (tsc),將 TypeScript 程式碼轉譯為 JavaScript。AWS Serverless Application Model (AWS SAM)AWS Cloud Development Kit (AWS CDK) 均採用 esbuild。

使用 esbuild 時,請考慮下列事項︰

  • 存在若干 TypeScript caveats

  • 您必須設定 TypeScript 轉譯設定,以便與計劃使用的 Node.js 執行時期相符。如需詳細資訊,請參閱 esbuild 文件中的目標。如需 tsconfig.json 檔案的範例,該檔案示範了如何以 Lambda 支援的特定 Node.js 版本為目標,請參閱 TypeScript GitHub 儲存庫

  • esbuild 不會執行類型檢查。若要檢查類型,請使用 tsc 編譯器。執行 tsc -noEmit 或將 "noEmit" 參數新增至 tsconfig.json 檔案,如下列範例所示。這會將 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"] }

Lambda 的類型定義

@types/aws-lambda 套件提供 Lambda 函式的類型定義。若您的函式使用下列任意一項,請安裝此套件:

若要將 Lambda 類型定義新增至函式,請將 @types/aws-lambda 安裝為開發相依項:

npm install -D @types/aws-lambda

然後,匯入 aws-lambda 中的類型:

import { Context, S3Event, APIGatewayProxyEvent } from 'aws-lambda'; export const handler = async (event: S3Event, context: Context) => { // Function code };

陳述式 import ... from 'aws-lambda' 會匯入類型定義。不會匯入 aws-lambda npm 套件,該套件是一個不相關的第三方工具。如需詳細資訊,請參閱 DefinitelyTyped GitHub 儲存庫中的 aws-lambda

注意

若您使用自訂類型定義,則無需安裝 @types/aws-lambda 套件。如需可定義自訂事件物件類型的函式範例,請參閱 TypeScript Lambda 函式程式碼範例