当我需要 aws-sdk 模块时,AWS Lambda 函数超时

Sim*_*leJ 7 amazon-web-services node.js aws-lambda alexa-skills-kit

我正在尝试从 Lambda 函数(针对 Alexa 技能)查询 DynamoDB 表,但是当我发送调用 的意图时require('aws-sdk'),该技能似乎挂起并超时。Alexa 测试页面只是说“请求的技能响应出现问题”,我在 CloudWatch 日志中没有看到任何错误。我有能力捕捉任何错误并将它们作为口头回复返回,所以我确定这不是一个未捕捉到的异常。我也试过将 包裹require在一个try/catch块中,但这也不起作用。

这是在收到require测试数据库意图请求时加载的模块:

const AWS = require('aws-sdk');

module.exports = () => {
  return 'Success!';
};
Run Code Online (Sandbox Code Playgroud)

如果我注释掉require('aws-sdk'),该功能会正常工作,Alexa 会回复“成功”。

当我所做的只是需要aws-sdk模块时,为什么我的技能会中断?

我对 AWS 非常陌生,这是我第一次尝试在 Lambda 函数中访问 DynamoDB 表。

Lambda 函数作为 zip 上传,其中包含我的源代码、package.json(包括aws-sdk作为依赖项)和node_modules文件夹。

Dán*_*agy 4

经过几个小时的调试,我发现更改import * as AWS from 'aws-sdk';import {DynamoDB} from 'aws-sdk';(或{CloudFront}或您实际使用的任何内容)会使超时问题消失。请注意,实际连接到 DynamoDB 的时间对我来说从来都不是问题,它始终是import发生超时的线路。

  • 感谢那。对于 NodeJS:`const DynamoDB = require('aws-sdk/clients/dynamodb')` (2认同)