本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
您可以使用 Node.js 執行期在 AWS Lambda中執行 TypeScript。由於 Node.js 不會在本機執行 TypeScript 程式碼,因此必須先將 TypeScript 程式碼轉換為 JavaScript。然後,使用 JavaScript 檔案,將函數程式碼部署至 Lambda。您的程式碼會在包含適用於 JavaScript 的 AWS SDK 的環境中執行,其中包含您管理之 AWS Identity and Access Management (IAM) 角色的登入資料。若要進一步了解 Node.js 執行時期隨附的 SDK 版本,請參閱 包含執行時期的 SDK 版本。
Lambda 支援以下 Node.js 執行期。
名稱 | 識別符 | 作業系統 | 取代日期 | 封鎖函數建立 | 封鎖函數更新 |
---|---|---|---|---|---|
Node.js 22 |
|
Amazon Linux 2023 |
2027 年 4 月 30 日 |
2027 年 6 月 1 日 |
2027 年 7 月 1 日 |
Node.js 20 |
|
Amazon Linux 2023 |
2026 年 4 月 30 日 |
2026 年 6 月 1 日 |
2026 年 7 月 1 日 |
Node.js 18 |
|
Amazon Linux 2 |
2025 年 9 月 1 日 |
2025 年 10 月 1 日 |
2025 年 11 月 1 日 |
主題
設定 TypeScript 開發環境
使用本機整合開發環境 (IDE) 或文字編輯器來撰寫 TypeScript 函數程式碼。無法在 Lambda 主控台上建立 TypeScript 程式碼。
您可以使用 esbuildtsc
) 將 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
-
常見 AWS 事件來源,例如:
-
APIGatewayProxyEvent
:適用於 Amazon API Gateway 代理整合 -
SNSEvent
:適用於 Amazon Simple Notification Service 通知 -
SQSEvent
:適用於 Amazon Simple Queue Service 訊息 -
S3Event
:適用於 S3 觸發事件 -
DynamoDBStreamEvent
:適用於 Amazon DynamoDB Streams
-
-
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