【发布时间】:2019-05-15 21:17:56
【问题描述】:
最新版本的 aws-sdk 具有 ComprehendMedical 的函数,我想为其创建一个 lambda 函数。
但是,AWS-SDK 的版本已经过时了几个月,还不能使用这些功能。想知道有没有办法使用最新的库?
谢谢!
【问题讨论】:
标签: node.js amazon-web-services aws-lambda aws-sdk aws-sdk-nodejs
最新版本的 aws-sdk 具有 ComprehendMedical 的函数,我想为其创建一个 lambda 函数。
但是,AWS-SDK 的版本已经过时了几个月,还不能使用这些功能。想知道有没有办法使用最新的库?
谢谢!
【问题讨论】:
标签: node.js amazon-web-services aws-lambda aws-sdk aws-sdk-nodejs
我建议您创建一个库包并使用库包中所需版本的 AWS-SDK(包括您想要的任何其他库)创建一个 Lambda Layer。设置 Lambda 层后,您可以将其分配给您的 Lambda 函数。这有助于减少 Lambda 函数的代码大小,而无需将您需要的所有库与每个 Lambda 函数捆绑在一起。考虑到 AWS-SDK 是一个非常大的库,Lambda 层将帮助您管理单个 Lambda 函数的大小,其中仅包含您的代码。
步骤很简单。
nodejs 的目录,这将是您的项目目录。名称must 为nodejs。npm init 在这个目录里面。 npm install --save。 注意:本地安装很重要。nodejs 目录并将其上传到 Lambda
层。 查看我的article,了解有关如何为 Node JS 依赖项设置 Lambda 层的完整详细信息。我认为未来,Lambda Layer 应该是每个人在 Lambda 中进行依赖管理的选择。
注意:Lambda 层是最近在 AWS re:Invent 2018 中引入的。它不仅与 NodeJS 兼容,还与几乎任何其他语言兼容(根据Amazon),例如 Python、Java、C#、C++(是的!)、Go、Rust 等。
【讨论】:
我找到了一个简单的方法。
如果你有 webpack.config.js,你可以将 externals: ['aws-sdk'], 更改为 externals: [],。
这样它会强制把你发送的节点包拿走。肯定会需要一些额外的时间来上传等等,把一个简单的快速修复你可以试试。
【讨论】:
默认 Lambda 使用这些 SDK 适用于 JavaScript 的 AWS 开发工具包 – 2.290.0 适用于 Python (Boto3) 的 SDK – 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/
【讨论】:
是的,您只需在 Lambda 函数的部署文件中捆绑最新版本的 SDK,而不是依赖现有的版本。
【讨论】: