如何保持与AWS Lambda函数的续集连接(或加速初始连接)?

Mic*_* Du 2 mysql amazon-web-services node.js sequelize.js aws-lambda

我目前有一个 AWS Lambda 函数,利用 Sequelize 从 RDS 中的 MySQL 数据库进行连接/查询。

一切都按预期进行,除了一段时间不活动后的首次连接总是需要至少 5 秒才能启动。随后的 lambda 调用很快,因此我怀疑连接已被持久化和池化。

这有点烦人,所以我想知道是否可以优化它以更快地连接,或者配置 lambda 以使连接是永久的。

"use strict"
var Sequelize = require('sequelize')

var database = 'participantData',
    host = 'hostname',
    username = 'username',
    password = 'blah'

var sequelize = new Sequelize(database, username, password, {
  host: host,
  dialect: 'mysql',
  logging: console.log('Query Logged')
})

var Resource = sequelize.define('resource', {
  program_name: { type: Sequelize.STRING },
  geocoded_address: { type: Sequelize.STRING }
})

exports.handler = function(event, context){
  Resource.findAll({
    //some filter
  })
    .then((res) => {
      context.succeed(JSON.stringify(res))
    })
    .catch(error => console.log(error))
}
Run Code Online (Sandbox Code Playgroud)

Jas*_*say 6

不,由于 Lambda 的基本工作方式,您无法在 Lambda 中建立永久连接。但您可以优化 Lambda 启动时间、重复使用等。请参阅https://www.reddit.com/r/aws/comments/49l91l/lambda_functions_in_vpc_cold_boot_times_of_10/https://aws.amazon.com/blogs/compute/ lambda 中的容器重用/

我的猜测是你只需要每隔一段时间发送一个请求,这样它就可以继续重用容器。