基于TypeScript的无服务器函数:从A到Z掌握AWS Lambda

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

基于TypeScript和AWS Lambda的无服务器函数入门

\n\n

无服务器架构已成为现代云开发的标准。AWS Lambda允许您无需管理服务器即可运行代码,而TypeScript则提供了严格的类型检查和开发便利性。本文将带您了解整个过程:从创建第一个函数到部署到生产环境。您将学习如何编写高效的无服务器TypeScript函数、处理触发器以及错误处理。

\n\n

无服务器函数非常适合微服务、事件处理、Webhook和后台任务。TypeScript使代码更安全、更可预测,这对于生产级解决方案至关重要。

\n\n

1. 为AWS Lambda上的TypeScript配置开发环境

\n\n

开始之前,请安装必要的工具。您需要Node.js(18+版本)、npm和AWS CLI。

\n\n

1.1. 安装依赖

\n\n
npm init -y\nnpm install -D typescript @types/node @aws-sdk/client-lambda\nnpm install aws-lambda @types/aws-lambda\n
\n\n

1.2. TypeScript配置

\n\n

创建包含Lambda设置的tsconfig.json文件:

\n\n
{\n  "compilerOptions": {\n    "target": "ES2020",\n    "module": "commonjs",\n    "lib": ["ES2020"],\n    "outDir": "./dist",\n    "rootDir": "./src",\n    "strict": true,\n    "esModuleInterop": true,\n    "skipLibCheck": true,\n    "forceConsistentCasingInFileNames": true,\n    "resolveJsonModule": true,\n    "declaration": true,\n    "declarationMap": true,\n    "sourceMap": true\n  },\n  "include": ["src/**/*"],\n  "exclude": ["node_modules", "dist"]\n}\n
\n\n

1.3. 安装AWS CLI

\n\n

从官方源下载并配置AWS CLI。安装后执行:

\n\n
aws configure\n
\n\n

输入您的Access Key ID、Secret Access Key、区域(例如us-east-1)和输出格式(json)。

\n\n

2. 创建第一个基于TypeScript的无服务器函数

\n\n

项目结构应如下所示:

\n\n
my-lambda-project/\n├── src/\n│   └── handler.ts\n├── dist/\n├── tsconfig.json\n├── package.json\n└── .gitignore\n
\n\n

2.1. 基本Lambda处理器

\n\n

创建包含简单函数的文件src/handler.ts:

\n\n
import { Context, APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';\n\ninterface HelloResponse {\n  message: string;\n  timestamp: string;\n  eventType: string;\n}\n\nexport const handler = async (\n  event: APIGatewayProxyEvent,\n  context: Context\n): Promise<APIGatewayProxyResult> => {\n  console.log('Event:', JSON.stringify(event, null, 2));\n  console.log('Context:', context);\n\n  const response: HelloResponse = {\n    message: 'Hello from AWS Lambda with TypeScript!',\n    timestamp: new Date().toISOString(),\n    eventType: event.httpMethod || 'UNKNOWN'\n  };\n\n  return {\n    statusCode: 200,\n    headers: {\n      'Content-Type': 'application/json',\n      'Access-Control-Allow-Origin': '*'\n    },\n    body: JSON.stringify(response)\n  };\n};\n
\n\n

2.2. 编译TypeScript

\n\n

在package.json中添加脚本:

\n\n
"scripts": {\n  "build": "tsc",\n  "watch": "tsc --watch",\n  "clean": "rm -rf dist"\n}\n
\n\n

执行构建:

\n\n
npm run build\n
\n\n

检查dist文件夹中是否生成了handler.js文件。

\n\n

3. 将Lambda函数部署到AWS

\n\n

有几种部署方式。我们介绍最简单的一种——通过AWS CLI。

\n\n

3.1. 打包函数

\n\n

创建包含代码的ZIP压缩包:

\n\n
cd dist\nzip -r ../function.zip .\ncd ..\n
\n\n

3.2. 创建Lambda函数

\n\n

执行AWS CLI命令:

\n\n
aws lambda create-function \\\n  --function-name hello-typescript \\\n  --runtime nodejs18.x \\\n  --role arn:aws:iam::Y                

博客

书籍推荐