这将迫使Lambda的下一个援引“冷启动”。
验证:
@timestamp, @message | sort @timestamp desc | limit 1000 | filter @message like "cold_start:true"
UpdateFunctionCode
API端点迫使所有容器的刷新。 awssdks
包装它,以使您更容易使用自己喜欢的语言调用API。我发现的最常方法是在诸如超时之类的基本设置中更改某些内容:
目前,没有办法在运行Lambda容器时强制重新启动。
但是,您可以重新部署该功能,以便从那时开始使用新容器开始使用新容器。
如果您使用的是lambda版本控制系统,另一种做到这一点的方法是发布新版本并使用别名将所有流量引导到它。
发布版本:
aws lambda publish-version --function-name your-function-name-here
aws lambda update-alias --function-name your-function-name-here --name alias-name-here --function-version 123
在上面的一些有效答案中,我碰巧在(平均)AWS lambda实例寿命上运行了一个实验。我找不到跑步时间更长的实例比(平均)两个小时:
https://xebia.com/blog/til-til-that-aws-aws-lambda-terminates-instances-instances-preemptivelivery/
.迫使Lambda丢弃现有容器的唯一方法是用不同的东西重新部署该功能。
在这里检查我的答案:
Force丢弃AWS lambda容器 我发现的这个问题的最简单答案是。在功能上进行一些更改,例如添加简单的评论行或删除任何空白,然后重新部署该功能。 部署时会清除缓存。renatobyrro's答案我使用JavascriptAWSSDK
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的描述。