无服务器架构:如何删除一个函数

22

我正在使用无服务器技术将我的API部署在AWS上。

使用无服务器技术,可以部署单个函数:

sls deploy -f <function name>

但它不允许移除单个函数:

sls remove // will remove all functions.

有没有办法删除单个函数而不影响其他函数?

5
你不能只是从你的无服务器文件中删除它,然后进行部署吗? - justin.m.chase
是的,它起作用了,为什么我没想到那个方法呢? - Phong Vu
1
我将关闭这个问题。感谢@justin.m.chase,很高兴能够提问并且你回复得如此迅速。 - Phong Vu
4个回答

47

@justin.m.chase建议:

只需在serverless.yml文件中删除该函数,然后运行完整的部署。

sls deploy

这个函数被删除了(Lambda + API Gateway)。太完美了!


1
-1 这是错误的,如果您从 serverless.yml 文件中删除函数并尝试部署,则会出现“UPDATE ROLLBACK FAILED”错误。 - Daniel Viglione
1
@Donato 请尝试删除 .serverless 文件夹(在 Mac 上它是不可见的,所以您必须使用 command + shift + dot 命令使其可见) - Xitcod13
2
我刚刚完成了以下操作: 1)从serverless.yml中删除了函数。 2)删除了.serverless文件夹。 3)执行了sls deploy命令。重新部署花费了很长时间,我一度以为出了问题,但最终它还是成功了,Lambda函数也被删除了。再次提醒大家注意:不要在AWS GUI中手动删除,否则会引起很多问题。 - Rebecca Sich

-1

我知道这可能有点过时,但无服务器编程的部署问题仍然很明显。

最近我开发了一个CLI工具,可以利用AWS sam cli(因此命名为Rocketsam)在AWS中构建微服务。

该CLI工具使每个函数都能够进行缓存(如果只更改了一个函数代码,则无需对整个微服务进行全面部署)。 它还具有其他功能,如将模板文件分割到每个函数,跨函数共享代码,获取日志等 :)

https://www.npmjs.com/package/rocketsam

目前,cli仅支持在Python 3.6中构建函数,但根据需求,未来可以轻松扩展。


-1

正如Peter Pham所说,从serverless.yml中删除该函数并进行完整操作:

sls deploy

如果您尝试在 AWS 中手动删除函数,会导致很多麻烦。


-14

我知道这个问题已经超过一年并且已经关闭了,但是正确删除单个函数的方法是通过指定函数名称来执行的,你几乎已经做对了:

sls remove -f <函数名称>


12
这是不正确的。-f参数没有被执行,并且整个堆栈都被移除。 - Je Suis Alrick
这个答案应该从这里删除。 - rilian
我正在寻找删除整个栈的方法。虽然并不需要 -f,但感谢回答。已点赞! - Anum Sheraz
@AnumSheraz 虽然这可能对你有所帮助,但你的需求与实际问题非常不同。我不知道为什么你会认为赞同一个危险的答案是个好主意... - Tim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接