【问题标题】:How do you elegantly import AWS - Lambda in Typescript?如何在 Typescript 中优雅地导入 AWS - Lambda?
【发布时间】:2019-02-16 18:45:04
【问题描述】:

我正在 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,
    }),
  };
};

但事实并非如此;)

那么我该如何正确地做呢?

【问题讨论】:

  • 你看过aws-sdk的源码吗?我认为没有理由期望 Lambda 函数内部相关的结构也与 SDK 相关。它们可能在那里,只是我不直观地认为它们为什么有用,因为 SDK 的交互方向错误(因为没有更好的术语)。

标签: amazon-web-services typescript types aws-lambda


【解决方案1】:

aws-sdk 不包含 lambda 的类型。因此,不幸的是,您将同时需要 aws-sdk@types/aws-lambda。另外我建议在package.jsondevDependencies 中声明@types/aws-lambda

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,
    }),
  };
};

【讨论】:

    猜你喜欢
    • 2022-12-01
    • 2023-03-08
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2022-10-15
    相关资源
    最近更新 更多