是否可以使用比AWS Lambda提供的版本更高的aws-sdk?

时间:2018-12-14 15:20:39

标签: node.js amazon-web-services aws-lambda aws-sdk aws-sdk-nodejs

最新版本的aws-sdk具有ComprehendMedical的函数,我想为其创建lambda函数。

但是,AWS-SDK的版本已经过时了几个月,尚无法使用这些功能。想知道是否有一种使用最新库的方法吗?

谢谢!

4 个答案:

答案 0 :(得分:5)

我建议您创建一个库捆绑包,并使用该库捆绑包中的所需版本的AWS-SDK(包括所需的任何其他库)来创建一个 Lambda Layer 。设置Lambda图层后,可以将其分配给Lambda函数。这有助于减小Lambda函数的代码大小,而不必将每个所需的库与每个Lambda函数捆绑在一起。考虑到AWS-SDK是一个相当大的库,Lambda Layer将帮助您仅使用其中的代码来管理各个Lambda函数的大小。

步骤很简单。

  1. 创建一个名为nodejs的目录,它将成为您的项目目录。名称mustnodejs
  2. 执行 npm init在此目录中。
  3. 从中安装所有库 npm使用npm install --save注意:本地安装很重要。
  4. 完成后,压缩nodejs目录并将其上传到Lambda 层。
  5. 在所有Lambda函数中使用Lambda层。

查看我的article,了解有关如何为Node JS依赖项设置Lambda层的完整详细信息。我认为,未来,Lambda层应该是每个人在Lambda中进行依赖管理的选择。

注意:Lambda Layer是最近在AWS re:Invent 2018中引入的。它不仅与NodeJS兼容,而且与几乎所有其他语言(如Amazon)兼容,如Python,Java, C#,C ++(是!),Go,Rust等。

答案 1 :(得分:1)

是的,您只需要在Lambda函数的部署文件中捆绑SDK的最新版本,而不必依赖那里的版本。

答案 2 :(得分:1)

在默认情况下,Lambda使用这些SDK 适用于JavaScript的AWS开发工具包– 2.290.0 适用于Python的SDK(Boto3)– 3-1.7.74 botocore-1.10.74

但是您可以通过npm(或使用的任何工具)安装最新的SDK,然后将整个文件上传到lamda。

看看SLS(无服务器框架),添加要部署的文件很容易;)

https://serverless.com/framework/docs/providers/aws/

https://serverless.com/framework/docs/providers/aws/guide/packaging/

答案 3 :(得分:1)

我找到了一种简单的方法。 如果您有webpack.config.js,则可以将externals: ['aws-sdk'],更改为externals: [],

通过这种方式,将强制接收您发送的节点程序包。确保将花费一些额外的时间来上传,依此类推,并提供一个可以尝试的简单快速修复方法。