java - AWS Lambda - Java 静态初始化

标签 java java-8 initialization aws-lambda

在 AWS lambda 函数内部(用 Java 编写)我想使用 AsyncHttpClient ( https://github.com/AsyncHttpClient/async-http-client )。 不幸的是,创建这个对象的实例大约需要 500 毫秒。(但我仍然喜欢它,请不要建议我更改 http 客户端)。

我正在考虑在静态初始化 block 中创建 AsyncHttpClient。所以它可能会被 AWS 执行一次,然后快照会在每次 AWS Lambda 执行时被克隆。我对么 ?

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

  • 一旦快照被克隆到每个 AWS Lambda 调用
  • 或者为每个 Lambda 执行单独执行静态 block (将 Http 客户端的创建放在那里)

谢谢你的帮助

最佳答案

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

我建议阅读 this post on the AWS blog关于 Lambda 容器重用。

关于java - AWS Lambda - Java 静态初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50347544/

相关文章:

java - 根据组合框选择 JavaFX 和 Java 1.7 的组合更改 TextField 值

java - 从文本中提取特定单词

具有自身静态 const 成员实例的 C++ 模板类

java - 如何检测一个 Java 类是被它自己的 main() 调用还是被另一个类调用?

java - 在 Java Poi (Excel) 中更改单元格格式(长度?)

java - Android:WebView 是否受 Java 堆限制的影响?

java - 根据数字将数组排序为 3 个桶

java - 为什么这个与 lambda 相关的类型推断会失败?

java - JPA 惰性列表上的流

c++ - 初始化非默认可构造元素的 std::array?