Aws lambda 另一个应用程序正在使用AWS Lambda函数时更新该函数

Aws lambda 另一个应用程序正在使用AWS Lambda函数时更新该函数,aws-lambda,Aws Lambda,这不是特定于代码的问题,而是一个流/流程问题 假设我有一个lambda函数,它正被另一个aws进程使用。数据正在流动和处理中 突然,我注意到一个bug,或者我想添加一些额外的代码,但我不想从现有的进程中丢失任何数据。更新lambda函数的正确过程是什么?我觉得我应该能够通过别名和版本控制来实现这一点,但我不确定正确的做法是什么 所以基本上: 创建lambda函数并将其挂接到另一个进程=>哦,不,存在一些bug!=>更新代码=>现在我想将进程挂接到新的lambda函数上,而不中断/停止旧的lamb

这不是特定于代码的问题,而是一个流/流程问题

假设我有一个lambda函数,它正被另一个aws进程使用。数据正在流动和处理中

突然,我注意到一个bug,或者我想添加一些额外的代码,但我不想从现有的进程中丢失任何数据。更新lambda函数的正确过程是什么?我觉得我应该能够通过别名和版本控制来实现这一点,但我不确定正确的做法是什么

所以基本上:

创建lambda函数并将其挂接到另一个进程=>哦,不,存在一些bug!=>更新代码=>现在我想将进程挂接到新的lambda函数上,而不中断/停止旧的lambda函数(以确保所有数据都已处理且lambda函数已停止)


有没有办法做到这一点?

您可以利用Lambda提供的别名和函数版本控制

以下是我在部署中使用的流程

指向$LATEST的开发人员别名

指向我已发布的版本的Prod别名

当我准备将发布的版本更新到我一直在开发的新版本时,我使用在运行旧版本时向新版本发送一定百分比的流量

在您的情况下,您可以在准备发布后使用重定向将所有新流量一次性重定向到新版本


AWS在这里还提供了一个很好的指南,说明如何使用CodeDeploy->

安全部署Lambda函数。我现在找不到这方面的源代码,但我认为Lambda不会在部署新请求时终止任何正在运行的请求。任何正在运行的进程都将一直运行到结束,新进程将被定向到新版本。因此,我应该能够创建新版本(拍摄快照)=>更新代码,或者在这种情况下我甚至需要新版本吗?在它中,当您更新Lambda函数时,会有一个短暂的时间窗口,通常不到一分钟,当旧版本或新版本的函数可以满足请求时。只需更新函数即可。运行过程不会受到影响。@JChao是的。根据我的经验,新代码几乎可以立即使用,但这并不能保证。