【问题标题】:Is it possible to use a newer version of the aws-sdk than provided in AWS Lambda?是否可以使用比 AWS Lambda 中提供的更新版本的 aws-sdk?
【发布时间】:2019-05-15 21:17:56
【问题描述】:

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

但是,AWS-SDK 的版本已经过时了几个月,还不能使用这些功能。想知道有没有办法使用最新的库?

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    步骤很简单。

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

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

    注意:Lambda 层是最近在 AWS re:Invent 2018 中引入的。它不仅与 NodeJS 兼容,还与几乎任何其他语言兼容(根据Amazon),例如 Python、Java、C#、C++(是的!)、Go、Rust 等。

    【讨论】:

    • 谢谢!
    【解决方案2】:

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

    这样它会强制把你发送的节点包拿走。肯定会需要一些额外的时间来上传等等,把一个简单的快速修复你可以试试。

    【讨论】:

      【解决方案3】:

      默认 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/

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-04
          • 2018-09-11
          • 2021-05-13
          • 2015-12-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-04
          相关资源
          最近更新 更多