如何在 Lambda 中仅包含来自 aws-sdk 的一个 class
How to include only one class from aws-sdk in Lambda
为了改善 AWS Lambda 中的冷启动延迟,我试图为每个 Lambda 函数只包含必要的 类。我如何才能只包含 SDK 的 DynamoDB 部分而不是包含整个 SDK?
// Current method:
var AWS = require('aws-sdk');
var dynamodb = new AWS.DynamoDB();
// Desired method:
var AWSdynamodb = require('aws-dynamodb-sdk');
我认为这是不可能的。
npm 注册表只有 aws-sdk。 https://www.npmjs.com/package/aws-sdk
可能还有其他 npm 包可用于 dynamodb,但我建议只使用 aws 团队提供的 sdk。
简短的回答是:您不需要这样做。
JavaScript 的 AWS 开发工具包使用动态要求加载服务。换句话说,定义了 类,但定义了 the API data is only loaded when you instantiate a service object,因此没有 CPU 整个包的开销。
唯一可能的成本是磁盘 space 使用(和下载时间),但请注意 Lambda 已经在其末端捆绑了 aws-sdk
包,因此没有下载时间,并且与使用自定义的东西相比,使用 Lambda 提供的 SDK 包实际上使用更少的磁盘 space。
务必在处理程序之外实例化 SDK。
这个例子很好,冷启动时间约为1s
const AWS = require("aws-sdk");
const SNS = new AWS.SNS({apiVersion: '2010-03-31'});
exports.handler = function(event, context) {
//do stuff
};
这个例子不好,会导致大约5s的冷启动时间
exports.handler = function(event, context) {
const AWS = require("aws-sdk");
const SNS = new AWS.SNS({apiVersion: '2010-03-31'});
//do stuff
};
https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html
Take advantage of execution context reuse to improve the performance
of your function. Initialize SDK clients and database connections
outside of the function handler, and cache static assets locally in
the /tmp directory. Subsequent invocations processed by the same
instance of your function can reuse these resources. This saves
execution time and cost.
为了改善 AWS Lambda 中的冷启动延迟,我试图为每个 Lambda 函数只包含必要的 类。我如何才能只包含 SDK 的 DynamoDB 部分而不是包含整个 SDK?
// Current method:
var AWS = require('aws-sdk');
var dynamodb = new AWS.DynamoDB();
// Desired method:
var AWSdynamodb = require('aws-dynamodb-sdk');
我认为这是不可能的。 npm 注册表只有 aws-sdk。 https://www.npmjs.com/package/aws-sdk
可能还有其他 npm 包可用于 dynamodb,但我建议只使用 aws 团队提供的 sdk。
简短的回答是:您不需要这样做。
JavaScript 的 AWS 开发工具包使用动态要求加载服务。换句话说,定义了 类,但定义了 the API data is only loaded when you instantiate a service object,因此没有 CPU 整个包的开销。
唯一可能的成本是磁盘 space 使用(和下载时间),但请注意 Lambda 已经在其末端捆绑了 aws-sdk
包,因此没有下载时间,并且与使用自定义的东西相比,使用 Lambda 提供的 SDK 包实际上使用更少的磁盘 space。
务必在处理程序之外实例化 SDK。
这个例子很好,冷启动时间约为1s
const AWS = require("aws-sdk");
const SNS = new AWS.SNS({apiVersion: '2010-03-31'});
exports.handler = function(event, context) {
//do stuff
};
这个例子不好,会导致大约5s的冷启动时间
exports.handler = function(event, context) {
const AWS = require("aws-sdk");
const SNS = new AWS.SNS({apiVersion: '2010-03-31'});
//do stuff
};
https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html
Take advantage of execution context reuse to improve the performance of your function. Initialize SDK clients and database connections outside of the function handler, and cache static assets locally in the /tmp directory. Subsequent invocations processed by the same instance of your function can reuse these resources. This saves execution time and cost.