当前位置 : 主页 > 网络安全 > 测试自动化 >

Lambda 函数的最佳实践

来源:互联网 收集:自由互联 发布时间:2021-06-22
函数代码 从核心逻辑中分离 Lambda 处理程序(入口点)。 这样您可以创建更容易进行单元测试的函数。 利用执行上下文重用来提高函数性能。 确保您的代码检索到的外部化配置或依赖

函数代码

从核心逻辑中分离 Lambda 处理程序(入口点)。 这样您可以创建更容易进行单元测试的函数。

  • 利用执行上下文重用来提高函数性能。 确保您的代码检索到的外部化配置或依赖关系在初次执行后在本地存储和引用。限制变量/对象在每次调用时的重新初始化,而是使用静态初始化/构造函数、全局/静态变量以及单例。保持活动状态并重复使用上一次调用中建立的连接(HTTP、数据库等)。

  • 使用 AWS Lambda 环境变量 将操作参数传递到您的函数。 例如,您在写入 Amazon S3 存储桶时,不应对要写入的存储桶名称进行硬编码,而应将存储桶名称配置为环境变量。

  • 控制函数部署程序包中的依赖关系。AWS Lambda 执行环境中包括若干库,例如适用于 Node.js 和 Python 运行时的 AWS 开发工具包(完整列表位于此处:AWS Lambda 运行时)。Lambda 会定期更新这些库,以支持最新的功能组合和安全更新。这些更新可能会使 Lambda 函数的行为发生细微变化。要完全控制您的函数所用的依赖关系,建议在部署程序包中包装所有依赖关系。

  • 将部署程序包大小精简为只包含运行时必要的部分。 这样会减少调用前下载和解压缩部署程序包所需的时间。对于用 Java 或 .NET Core 编写的函数,请不要将整个 AWS 开发工具包库作为部署程序包的一部分上传,而是要根据所需的模块有选择地挑选开发工具包中的组件(例如 DynamoDB、Amazon S3 开发工具包模块和 Lambda 核心库)。

  • 将依赖关系 .jar 文件置于单独的 /lib 目录中,可减少 Lambda 解压缩部署程序包(用 Java 编写)所需的时间。这样比将函数的所有代码置于具有大量 .class 文件的同一 jar 中要快。有关说明,请参阅 Java 中的 AWS Lambda 部署程序包。

  • 将依赖关系的复杂性降至最低。 首选执行上下文启动时可以快速加载的更简单的框架。例如,首选更简单的 Java 依赖关系注入 (IoC) 框架,如 Dagger 或 Guice,而不是更复杂的 Spring Framework。

  • 避免在 Lambda 函数中使用递归代码,因为如果使用递归代码,函数便会自动调用自身,直到满足某些任意条件为止。这可能会导致意想不到的函数调用量和升级成本。如果您意外地执行此操作,请立即将函数并发执行数限制设置为 0 来限制对函数的所有调用,同时更新代码。

网友评论