【问题标题】:How to expose lamba endpoint in serverless.yml only for dev stage?如何仅在开发阶段公开 serverless.yml 中的 Lamba 端点?
【发布时间】:2022-02-07 23:05:40
【问题描述】:

我希望有一个调试端点仅可用于舞台。一种方法是在服务器代码中进行授权,但最好不要一起创建 API Gateway 端点。是否可以使用 Serverless 框架来实现?

【问题讨论】:

    标签: serverless serverless-framework aws-serverless


    【解决方案1】:

    在无服务器框架中,您可以使用基于您的环境的开关在 YAML 文件的上下文中切换配置选项。


    例如,如果您想通过 API Gateway 设置一个普通的 HTTP 端点,您可以在您的 functions 部分添加类似以下内容:

    functions:
      ping:
        handler: "src/functions/ping/handler.main"
        events:
          http:
            method: "any"
            path: "/ping"
    

    如果您希望此http 事件仅可用于某个阶段,您可以在别处定义一个块并根据当前阶段名称引用它。为此,在 serverless.yml 文件中使用 custom 块是很常见的。要在阶段proddev 之间隔离,dev 是您的暂存区域,您可以这样做:

    custom:
      pingEvents: "${opt:stage, self:provider.stage}"
        prod:
          http:
            method: "any"
            path: "/ping"
        dev:
          http:
    
    functions:
      ping:
        handler: "src/functions/ping/handler.main"
        events: "${self:custom.pingEvents.${opt:stage, self:provider.stage}}"
    

    只有当您运行sls deploy --stage dev 来发布您的应用程序时,上述内容才会通过HTTP 公开端点;任何其他阶段(例如 – prod)都会将其禁用。请注意,在此示例中,如果您想支持 devprod 之外的阶段,则需要在 custom.pingEvents 下添加一个新块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多