本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用建置 Lambda 函數 TypeScript
您可以使用 Node.js 執行階段在中執行 TypeScript 程式碼 AWS Lambda。因為 Node.js 本機不會執行 TypeScript 程式碼,所以您必須先將 TypeScript 程式碼轉譯成. JavaScript 然後,使用這些 JavaScript 檔案將函數程式碼部署到 Lambda。您的程式碼在包含 AWS SDK 的環境中執行 JavaScript,其中包含您管理的 AWS Identity and Access Management (IAM) 角色的登入資料。若要進一步瞭解 Node.js 執行階段隨附的 SDK 版本,請參閱包含執行階段的 SDK 版本。
Lambda 支援以下 Node.js 執行期。
Node.js | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
名稱 | 識別符 | 作業系統 | 取代日期 | 封鎖函數建立 | 封鎖函數更新 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Node.js 20 |
|
Amazon Linux 2023 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Node.js 18 |
|
Amazon Linux 2 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Node.js 16 |
|
Amazon Linux 2 |
2024 年 6 月 12 日 |
2025年2月28日 |
2025年3月31日 |
主題
建立 TypeScript 開發環境
使用本機整合式開發環境 (IDE)、文字編輯器,或AWS Cloud9撰寫 TypeScript 函數程式碼。您無法在 Lambda 主控台上建立 TypeScript 程式碼。
為了轉換你的 TypeScript 代碼,設置一個編譯器,如 esbuildtsc
),它與發行版捆綁在TypeScript 一起。
使用 esbuild 時,請考慮下列事項︰
-
有幾個TypeScript 警告
。 -
您必須設定 TypeScript 轉置設定,以符合您計劃使用的 Node.js 執行階段。如需詳細資訊,請參閱 esbuild 文件中的目標
。如需示範如何鎖定 Lambda 支援的特定 Node.js 版本的 tsconfig.json 檔案範例,請參閱存放庫。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"] }