如何使用localstack热重载Typescript Lambda

izkcnapc  于 2023-04-13  发布在  TypeScript
关注(0)|答案(1)|浏览(145)

我是AWS世界的新手,正在使用Typescript编写lambda函数。有没有一种方法可以使用localstack进行开发,其中TS可以热重载。

n3h0vuf2

n3h0vuf21#

Hi -这里是index.ts文件中的一个简单的Hello World! TypeScript Lambda函数:

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-lambdaesbuild包作为开发依赖项。

npm install -D @types/aws-lambda esbuild

将构建脚本添加到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函数:

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文件:

{"statusCode":200,"body":"{\"message\":\"Hello World!\"}"}

Hello World!消息更改为Hello LocalStack!并运行npm run build。再次触发Lambda。您将在output.txt文件中看到以下内容:

{"statusCode":200,"body":"{\"message\":\"Hello LocalStack!\"}"}

我希望这能解决你的疑问!

相关问题