在 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/