首页 > 解决方案 > 如何在 Typescript 中优雅地导入 AWS - Lambda?

问题描述

我正在 aws lambda 上构建一个打字稿项目。与aws-sdk类型定义一样,我希望它也包含 aws lambda 的定义。但我似乎必须@types/aws-lambda单独安装它才能工作。

//import { Lambda } from "aws-sdk";
import { Context } from "aws-lambda";

module.exports.hello = async (event:any, context:Context) => {
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: 'function executed successfully!',
      input: event,
    }),
  };
};

我希望这样的事情是可能的:

import { Lambda } from "aws-sdk";

module.exports.hello = async (event:any, context:Lambda.Context) => {
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: 'function executed successfully!',
      input: event,
    }),
  };
};

但事实并非如此;)

那么我该如何正确地做到这一点呢?

标签: amazon-web-servicestypescripttypesaws-lambda

解决方案


aws-sdk不包含 lambda 的类型。aws-sdk因此,@types/aws-lambda不幸的是,您将两者都需要。另外我建议@types/aws-lambdadevDependencies你的package.json.

import * as AWS from "aws-sdk";
import { Context } from "aws-lambda";

module.exports.hello = async (event:any, context:Context) => {
  // eg. if you need a DynamoDB client
  // const docClient: AWS.DynamoDB.DocumentClient = new AWS.DynamoDB.DocumentClient({region: 'ap-southeast-2'});
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: 'function executed successfully!',
      input: event,
    }),
  };
};

推荐阅读