首页 > 解决方案 > 是否可以在 AWS 中触发 lambda init?

问题描述

Aws lambda 在其生命周期中有 3 个步骤:

有没有办法在不部署任何代码的情况下自动触发 lambda init?

更新:

我在初始化期间启动了一些操作:将文件的内容保存在变量中。然后在调用操作期间,不再下载内容。但是我需要不时启动下载的动作。然后,我想知道是否有办法触发 init 操作。

标签: amazon-web-servicesaws-lambda

解决方案


为什么不再次调用你的init()函数呢?

以下面的 Go Lambda 为例:

// handleRequest does process every request to the Lambda.
func handleRequest(ctx context.Context) error {
    init() // <-- call it whenever you want in your handler again
}

// init does store some data from a file in a variable.
func init() {}

func main() {
    init() // <-- called on the first start of the Lambda
    lambda.Start(handleRequest)
}

init函数在方法中调用,该main()方法在 Lambda 首次启动(冷启动或初始化)时执行。但是,如果您将初始化的“业务逻辑”移动到一个单独的函数中,您可以在处理函数中随时调用它。

注意:我根本不认为这是一个好主意。如果您需要/想要做这样的事情,这绝对是一种设计“气味”。因此,您应该重新考虑自己在做什么,而不是构建这样的解决方法。


推荐阅读