【问题标题】:Serverless deploying multiple functions无服务器部署多种功能
【发布时间】:2017-02-13 12:58:38
【问题描述】:

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

https://serverless.com/

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

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

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

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

如果有谁可以指点一下

谢谢

【问题讨论】:

    标签: aws-lambda serverless-framework


    【解决方案1】:

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

    您应该在serverless.ymlfunctions: 部分下的同一服务下定义多个函数。要单独打包这些功能(不包括其他功能的代码),您必须在package: 部分下设置individually: true。然后,您可以在根级别和函数级别使用包含和排除选项。即将进行的更改将允许您在包含和排除选项中使用 glob 语法(例如 **/*-fn.js)。你可以在这里找到更多关于包装的信息https://serverless.com/framework/docs/guide/packaging/

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

    【讨论】:

    • 感谢您的回答,包装的东西回答了我的第一个问题。我曾经使用'customRole'标签将不同的角色分配给不同的功能,该标签将功能指向角色的arn。这位于每个功能上,因此您可以为每个功能分配不同的角色以将其限制为仅应具有的权限
    【解决方案2】:

    我也在尝试为每个函数的单个 iam 角色找到解决方案。我找不到解决方法,但是在查看文档时,我发现了以下行:“即将支持每个函数的单独 IAM 角色。”this page,所以至少我们知道他们正在努力。

    【讨论】:

      【解决方案3】:

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

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

      编辑:您还可以在 both the provider and function level 处应用预定义的 AWS role

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-29
        • 1970-01-01
        • 2022-12-17
        • 2018-02-05
        • 2019-02-08
        • 1970-01-01
        相关资源
        最近更新 更多