我是AWS世界的新手,正在使用Typescript编写lambda函数。有没有一种方法可以使用localstack进行开发,其中TS可以热重载。
n3h0vuf21#
Hi -这里是index.ts文件中的一个简单的Hello World! TypeScript Lambda函数:
index.ts
Hello World!
import { Context, APIGatewayProxyResult, APIGatewayEvent } from 'aws-lambda'; export const handler = async (event: APIGatewayEvent, context: Context): Promise<APIGatewayProxyResult> => { console.log(`Event: ${JSON.stringify(event, null, 2)}`); console.log(`Context: ${JSON.stringify(context, null, 2)}`); return { statusCode: 200, body: JSON.stringify({ message: 'Hello World!', }), }; };
使用npm或您选择的包管理器创建一个新的Node.js项目。
npm init -y
添加@types/aws-lambda和esbuild包作为开发依赖项。
@types/aws-lambda
esbuild
npm install -D @types/aws-lambda esbuild
将构建脚本添加到package.json文件:
package.json
"scripts": { "build": "esbuild index.ts --bundle --minify --sourcemap --platform=node --target=es2020 --outfile=dist/index.js" },
构建包:
npm run build
启动LocalStack并使用hot-reload magic S3 bucket创建一个新的Lambda函数:
hot-reload
awslocal lambda create-function \ --function-name hello-world \ --runtime "nodejs16.x" \ --role arn:aws:iam::123456789012:role/lambda-ex \ --code S3Bucket="hot-reload",S3Key="$(PWD)/dist" \ --handler index.handler
运行Lambda函数:
awslocal lambda invoke \ --function-name hello-world \ --cli-binary-format raw-in-base64-out \ --payload '{"action": "test"}' output.txt
查看output.txt文件:
output.txt
{"statusCode":200,"body":"{\"message\":\"Hello World!\"}"}
将Hello World!消息更改为Hello LocalStack!并运行npm run build。再次触发Lambda。您将在output.txt文件中看到以下内容:
Hello LocalStack!
{"statusCode":200,"body":"{\"message\":\"Hello LocalStack!\"}"}
我希望这能解决你的疑问!
1条答案
按热度按时间n3h0vuf21#
Hi -这里是
index.ts
文件中的一个简单的Hello World!
TypeScript Lambda函数:使用npm或您选择的包管理器创建一个新的Node.js项目。
添加
@types/aws-lambda
和esbuild
包作为开发依赖项。将构建脚本添加到
package.json
文件:构建包:
启动LocalStack并使用
hot-reload
magic S3 bucket创建一个新的Lambda函数:运行Lambda函数:
查看
output.txt
文件:将
Hello World!
消息更改为Hello LocalStack!
并运行npm run build
。再次触发Lambda。您将在output.txt
文件中看到以下内容:我希望这能解决你的疑问!