我最近更新了我的无服务器项目,并且我发现在最近几次更新中发生了很多变化。
我不完全了解具有多个lambda函数和与同一项目相关的api网关端点的正确方法。使用旧的无服务器,我将每个lambda和端点作为一个完全独立的功能,这对我来说非常好。
我似乎不再这样做了,如果我尝试第二次lambda函数会覆盖我的第一次,大概是因为我的服务名称"两者都是一样的。我的服务名称是相同的,因为我希望两个休息端点都在API网关的相同API中。由于无服务器根据服务名称创建API名称。
然后我尝试将两个功能添加到同一个"服务"。这在大多数情况下都有效,除了现在我需要将我的所有函数的自定义角色语句包含到同一个角色中(因为这个角色现在被链接到我的所有函数)。有效地为每个单独的功能提供比它应有的更多权限。另一个问题是,我将把不同函数的所有处理程序文件放入每个函数部署包中。
基本上,我不确定具有与同一项目相关但功能分离的多个功能的正确方法是什么。它曾经有意义,现在没有。
如果有人可以给我一些指示,请
谢谢
答案 0 :(得分:6)
我理解你的沮丧。在我深入了解新版本并形成更好的理解之前,我有同感。有一点需要注意的是,新版本尚未完全完成。因此,如果某些内容完全丢失,您可以提交问题并在1.0发布之前对其进行优先级排序。
您应该在functions:
的{{1}}部分下的同一服务下定义多个功能。要单独打包这些功能(不包括其他功能的代码),您必须在serverless.yml
部分下设置individually: true
。然后,您可以在根级别和功能级别使用包含和排除选项。即将发生的更改将允许您在include和exclude选项中使用glob语法(例如** / * - fn.js)。您可以在此处找到有关打包的更多信息https://serverless.com/framework/docs/guide/packaging/。
不确定如何在同一服务下为不同的功能使用不同的角色..你是如何用0.5做的?
答案 1 :(得分:1)
我也试图为每个功能找到个人iam角色的解决方案。我无法找到办法,但是当我查看文档时,我发现了一行:"每个功能的单独IAM角色的支持即将推出。" this page,所以至少我们知道他们正在努力。
答案 2 :(得分:0)
Serverless的"IAM Roles Per Function"插件使您可以完全按照其提示进行操作:为每个功能指定角色。您仍然仍然可以使用提供程序级别的角色:
默认情况下,功能级别
也可以继承提供程序级别的定义。iamRoleStatements
覆盖提供程序级别定义。通过指定选项iamRoleStatementsInherit: true
编辑:您还可以在both the provider and function level上应用预定义的AWS role
。