You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Serverless本地开发时禁用API Key?

如何在Serverless本地开发时禁用API Key验证?

要实现仅在本地离线开发时跳过API Key验证,同时保留部署到AWS时的保护,你可以利用Serverless框架的条件配置和离线环境自带的环境变量批量处理,不用逐个修改函数配置:

具体实现步骤

  1. 在配置中定义离线环境判断变量,复用Serverless Offline自动生成的IS_OFFLINE环境变量
  2. 给所有HTTP事件的private属性添加条件判断,动态切换是否启用API Key验证

修改后的完整serverless.yml配置如下:

service: my-service
frameworkVersion: "3"

custom:
  isOffline: ${env:IS_OFFLINE, false} # 读取离线环境变量,部署时默认取false

provider:
  name: aws
  runtime: nodejs16.x
  region: eu-central-1
  apiGateway:
    apiKeys:
      - name: my-apikey
        value: ${ssm:my-apikey}

functions:
  myfunc:
    handler: src/v1/myfunc/index.get
    events:
      - http:
          path: /v1/myfunc
          method: get
          private: ${if:${self:custom.isOffline}, false, true} # 离线时自动关闭私有验证

plugins:
  - serverless-esbuild
  - serverless-offline
  - serverless-dotenv-plugin

原理说明

  • IS_OFFLINE环境变量:执行serverless offline时,框架会自动将该变量设为true;执行serverless deploy时该变量不存在,会使用默认值false。
  • 条件函数if:通过${if:条件, 真值, 假值}语法,实现"离线时private为false,部署时为true"的动态配置。
  • 多函数批量适配:如果有多个HTTP函数,只需把每个函数事件中的private: true替换成上述条件表达式即可,用编辑器的全局替换功能就能快速完成。

内容的提问来源于stack exchange,提问作者Timo Ernst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:35:17