8

我最近更新了我的无服务器项目,我发现在最近几次更新中很多事情都发生了变化。

https://serverless.com/

我不完全理解拥有多个与同一个项目相关的 lambda 函数和 api 网关端点的正确方法是什么。对于旧的无服务器,我将每个 lambda 和端点作为一个完全独立的函数,这对我来说效果很好。

我似乎不能再这样做了,如果我尝试我的第二个 lambda 函数覆盖我的第一个函数,大概是因为我的“服务名称”对于两者是相同的。我的服务名称是相同的,因为我希望 API Gateway 中的同一个 API 中的两个休息端点。由于 serverless 根据服务名称创建 API 名称。

因此,我尝试将这两个功能添加到同一个“服务”中。这在大多数情况下都有效,除了现在我需要将我的所有功能的自定义角色声明包含到同一个角色中(因为这个角色现在已链接到我的所有功能)。有效地为每个单独的功能授予超出其应有的权限。另一个问题是我用于不同功能的所有处理程序文件都被放入每个功能部署包中。

所以基本上,我不确定拥有与同一个项目相关但功能不同的多个功能的正确方法是什么。以前有道理,现在不行了。

如果有人可以给我一些指示,请

谢谢

4

3 回答 3

6

我理解你的沮丧。直到我更深入地研究新版本并形成更好的理解,我才有同样的感觉。不过需要注意的一点是,新版本还没有完全完成。因此,如果某些内容完全丢失,您可以提交问题并在 1.0 发布之前对其进行优先处理。

您应该functions:serverless.yml. 要单独打包这些函数(不包括其他函数的代码),您必须individually: truepackage:section 下进行设置。然后,您可以在根级别和函数级别使用包含和排除选项。即将进行的更改将允许您在包含和排除选项中使用 glob 语法(例如 **/*-fn.js)。您可以在此处找到有关打包的更多信息https://serverless.com/framework/docs/guide/packaging/

不知道如何在同一个服务下为不同的功能使用不同的角色。你是怎么用0.5做到的?

于 2016-10-05T22:08:58.367 回答
1

我也试图为每个函数的单个 iam 角色找到解决方案。我找不到解决方法,但在查看文档时,我发现了一行:“即将支持每个函数的单独 IAM 角色。” 这个页面上,所以至少我们知道他们正在处理它。

于 2016-11-07T18:34:27.433 回答
0

Serverless的“每个函数的 IAM 角色”插件允许您完全按照它在锡上所说的去做:为每个函数指定角色。您仍然可以使用提供者级别的角色:

默认情况下,函数级别iamRoleStatements覆盖提供者级别定义。也可以通过指定选项来继承提供者级别定义iamRoleStatementsInherit: true

编辑:您还可以在提供程序和功能级别应用预定义roleAWS

于 2020-10-06T22:14:48.367 回答