AWS Lambda - Java静态初始化

Hol*_*ncy 3 java initialization java-8 aws-lambda

在AWS lambda函数(用Java编写)中我想使用AsyncHttpClient(https://github.com/AsyncHttpClient/async-http-client). Unfortunately it takes around 500 ms to create an instance of this object.. (but I still like it, please don't advice me to change the http client).

我正在考虑在静态初始化块中创建 AsyncHttpClient 。因此,它可能会由 AWS 执行一次,并且每次 AWS Lambda 执行都会克隆快照。我对么 ?

何时在 AWS Lambda 中执行静态块?

  • 一旦快照被克隆到每个 AWS Lambda 调用
  • 或者为每个 Lambda 执行单独执行静态块(并且将 Http Client 的创建放在那里没有帮助)

谢谢你的帮助

Mar*_*k B 6

从来没有为您的 Lambda 执行环境拍摄“快照”。然而,存在容器重用的概念。当函数在新容器中首次运行时,将调用静态初始化块,并且发送到该容器的每个后续 Lambda 执行都将能够跳过初始化步骤。每次 Lambda 为 Lambda 函数启动一个新容器时,都需要再次进行初始化工作。

我建议阅读AWS 博客上有关 Lambda 容器重用的这篇文章。