本节我们将为Lambda配置Provisioned Concurrency,来验证它对冷启动的优化效果。
进入Lambda页面,创建新的函数provisioned-concurrency-test, Runtime选择Python 3.9:

更新函数代码如下,并重新进行部署:
import time
print("Initializing function")
time.sleep(2) # 模拟冷启动阶段,花费2s
def lambda_handler(event, context):
# TODO implement
print("Executing the lambda handler")
time.sleep(0.2) # 模拟lambda_handler内部执行,花费0.2s
return
创建新的测试事件,并连续进行两次测试。
第一次测试时,函数需要进行冷启动,所以Init Duration有2000ms:

第二次测试时,由于Lambda处于热启动状态,所以直接进入lambda_hander的代码,执行完成:

查看Lambda的CloudWatch Logs:

从日志中也可以看到Init阶段仅在第一次执行时有输出:

由于在配置Provisioned Concurrency前必须为lambda创建version或alias,我们先发布一个version:

点击Publish:

发布完成后,我们当前处于version 1环境,进入Configuratin -> Provisioned concurrency:

为当前版本创建10个单位的provisioned concurrency, 注意Lambda会实时计算出对应的花费。点击保存:

Lambda需要经过几分钟后,预热才能完成:

预热完成后显示如下:

回到CloudWatch Logs页面,发现新增了20个日志流:

里面帮我们完成了初始化的过程:
