【发布时间】:2022-02-07 23:05:40
【问题描述】:
我希望有一个调试端点仅可用于舞台。一种方法是在服务器代码中进行授权,但最好不要一起创建 API Gateway 端点。是否可以使用 Serverless 框架来实现?
【问题讨论】:
标签: serverless serverless-framework aws-serverless
我希望有一个调试端点仅可用于舞台。一种方法是在服务器代码中进行授权,但最好不要一起创建 API Gateway 端点。是否可以使用 Serverless 框架来实现?
【问题讨论】:
标签: serverless serverless-framework aws-serverless
在无服务器框架中,您可以使用基于您的环境的开关在 YAML 文件的上下文中切换配置选项。
例如,如果您想通过 API Gateway 设置一个普通的 HTTP 端点,您可以在您的 functions 部分添加类似以下内容:
functions:
ping:
handler: "src/functions/ping/handler.main"
events:
http:
method: "any"
path: "/ping"
如果您希望此http 事件仅可用于某个阶段,您可以在别处定义一个块并根据当前阶段名称引用它。为此,在 serverless.yml 文件中使用 custom 块是很常见的。要在阶段prod 和dev 之间隔离,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)都会将其禁用。请注意,在此示例中,如果您想支持 dev 和 prod 之外的阶段,则需要在 custom.pingEvents 下添加一个新块。
【讨论】: