有一种方法可以降低所有lambda的实例,强迫一个寒冷的开始?

问题描述 投票:0回答:7

这将迫使Lambda的下一个援引“冷启动”。

验证:

@timestamp, @message | sort @timestamp desc | limit 1000 | filter @message like "cold_start:true"

amazon-web-services amazon-s3 aws-lambda
7个回答
45
投票
使用

UpdateFunctionCode
API端点迫使所有容器的刷新。 

awssdks

包装它,以使您更容易使用自己喜欢的语言调用API。

我发现的最常方法是在诸如超时之类的基本设置中更改某些内容:

15
投票

我将+1提高了一秒钟,保存了,功能得到了刷新


    

添加一个新的环境变量和 /或更改现有环境。我创建了一个名为Bogus的人,并给了一个数字,每当我想强迫一个冷启动时,我会增加。

13
投票

目前,没有办法在运行Lambda容器时强制重新启动。 但是,您可以重新部署该功能,以便从那时开始使用新容器开始使用新容器。 Basic Settings 如果您使用的是lambda版本控制系统,另一种做到这一点的方法是发布新版本并使用别名将所有流量引导到它。

这里是一个例子:

Memory and timeout settings发布版本

aws lambda publish-version --function-name your-function-name-here

11
投票
auppate别名指向新版本:

aws lambda update-alias --function-name your-function-name-here --name alias-name-here --function-version 123

(从上面的第一个命令中使用输出消息中的函数版本)

5
投票

在上面的一些有效答案中,我碰巧在(平均)AWS lambda实例寿命上运行了一个实验。我找不到跑步时间更长的实例比(平均)两个小时:

https://xebia.com/blog/til-til-that-aws-aws-lambda-terminates-instances-instances-preemptivelivery/

.

4
投票

迫使Lambda丢弃现有容器的唯一方法是用不同的东西重新部署该功能。

在这里检查我的答案:

Force丢弃AWS lambda容器

好运, Moe


我发现的这个问题的最简单答案是。在功能上进行一些更改,例如添加简单的评论行或删除任何空白,然后重新部署该功能。 部署时会清除缓存。

关注

renatobyrro's
答案我使用

JavascriptAWSSDK

4
投票
import { LambdaClient, UpdateFunctionConfigurationCommand } from '@aws-sdk/client-lambda'; const forceLambdaRestart = async event => { try { const client = new LambdaClient({ region: 'your region here', credentials: { accessKeyId: 'your access key id', secretAccessKey: 'your secret access key', }, }); const command = new UpdateFunctionConfigurationCommand({ FunctionName: event.functionName, Description: `forced update ${Date.now()}`, }); const data = await client.send(command); console.log(data); return data; } catch (error) { console.error(error); return error; } }; forceLambdaRestart();

这似乎足以重新启动lambda并清除内存中缓存。 AWS控制台的更新描述将完成这项工作。我的用例是,我将SSM参数存储在Lambda函数中作为缓存中的静态变量。我更新了SSM参数的值,并更新了AWS Console的Lambda的描述。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.