【问题标题】:Unzipped size must be smaller than 262144000 bytes aws-iot-device-sdk-v2解压后的大小必须小于 262144000 字节 aws-iot-device-sdk-v2
【发布时间】:2021-09-22 23:54:41
【问题描述】:

刚刚将aws-iot-device-sdk-v2 安装到我的 lambda 集群中。我能够将包很好地安装到项目中。不幸的是,我收到了错误An error occurred: exampleLambda - Resource handler returned message: "Unzipped size must be smaller than 262144000 bytes (Service: Lambda, Status Code: 400, Request ID: ... 查看无服务器,我看到包含将我的包大小从 36MB 增加到 92MB。这似乎根本不对。我们的团队已经安装了 100 多个包,但没有一个包使我们部署的内存大小增加了这么多。这个问题有解决办法吗?

【问题讨论】:

    标签: amazon-web-services aws-lambda serverless aws-iot


    【解决方案1】:

    是的,解压缩后的代码和相关内容有 250 MB 的限制。我们确实提供了一个压缩的代码文件以及相关文件,但在后台它会被解压缩。

    最佳实践:保持 lambda 的大小尽可能小,并根据流程进行编排,而不是在一个 Lambda 中完成所有操作。大尺寸的 lambda 确实会影响初始化(冷启动)

    解决方法:

    1. 在包装时使用缩小版面。在打包项目时使用打包工具/实用程序。
    2. 如果不使用,请尝试删除不需要的 depandancies。
    3. 如果资产被使用并且体积很大,请将它们放在 S3 中并使用它们,而不是将它们放在包中。

    如果这些都不起作用,请保留 S3 中的大型 depandacies 并将其加载到 /tmp 目录并使用它。这不是一个好的解决方案,但会起作用。我已经用它在 Java 中建立了一个 selenium depandacies。

    另外,我愿意接受来自社区的其他解决方案。谢谢!

    【讨论】:

      【解决方案2】:

      我建议尝试几件事:

      1. 用C语言编写的aws-iot-device-sdk-v2直接依赖aws-crt是跨平台的,您可以使用脚本从node_modules/aws-crt/dist/bin中删除未使用平台的二进制文件。
      2. 如果您使用 serverless.com 来打包 lambda,则有一个 plugin 也可以帮助减小包大小,将其与 1 结合使用可以进一步减小包大小。
      3. aws-iot-device-sdk-v2 依赖可以移动到 Lambda 层,这将减少 lambda 包的大小。

      【讨论】:

        【解决方案3】:

        从另一个角度来看您的问题,我会质疑是否需要从 AWS Lambda 函数内部使用设备开发工具包。设备 sdk 通常用于在客户端和 AWS IoT Core 之间建立双向连接,以发布和接收 MQTT 消息。它涉及需要在每次冷启动时重新建立的 TCP/TLS 或 Websocket 连接。这是 Lambda 函数的反模式,尤其是在消息量很大的情况下。

        使用 Lambda 函数时,您应该使用 AWS 开发工具包直接发布到 AWS IoT Core:对于 Javascript,它将是 IoT Data Plane Client

        为了通过 Lambda 函数处理 MQTT 消息,您可以改为依靠 Rules for AWS IoT 将消息直接中继到处理 Lambda 函数,或者,为了增加可靠性和可扩展性,您可以将消息放入 Amazon SQS 队列或使用相应 rule actions 的 Amazon Kinesis 数据流,并将它们配置为您的 Lambda 函数的事件源。

        【讨论】:

          【解决方案4】:

          我遇到了这样的问题,我意识到我正在使用不同的 NodeJS 版本来进行部署/构建,而不是在应用程序中/在开发/安装期间使用的版本

          注意:

          这是我从面临的相同问题中收到的自己的解决方案。 仅适用于使用 NodeJS 的应用程序。

          【讨论】:

            猜你喜欢
            • 2018-01-02
            • 2021-04-30
            • 1970-01-01
            • 2021-07-18
            • 1970-01-01
            • 2021-11-16
            • 2021-07-27
            • 2018-09-26
            • 2021-10-16
            相关资源
            最近更新 更多