如何为Serverless Framework AWS部署配置静态URL?
如何保持Serverless部署AWS API网关的静态主机前缀?
要解决每次部署API网关前缀变化的问题,有两种可靠方案:
方案一:使用自定义域名(推荐用于生产环境)
自定义域名是最彻底的解决方式,不仅能固定访问地址,还能提升用户体验。
- 先在AWS控制台的API网关服务中创建自定义域名,完成域名解析配置(可通过Route53或第三方DNS服务商),并将域名映射到你的API网关阶段(stage)。
- 在项目的
serverless.yml中添加自定义域名配置,需要借助serverless-domain-manager插件:- 安装插件:
npm install serverless-domain-manager --save-dev- 在
serverless.yml中添加配置:
部署后,API将通过你设置的自定义域名访问,地址永久固定。custom: customDomain: domainName: "api.yourdomain.com" # 替换成你的自定义域名 basePath: "" # 可选,设置API的基础路径 stage: "${self:provider.stage}" createRoute53Record: true # 若使用AWS Route53管理域名,可开启自动创建解析记录 plugins: - serverless-domain-manager
方案二:复用已有的API网关
如果只想保留AWS默认的API网关前缀,可通过复用已创建的API网关实现:
- 先完成一次初始部署,从AWS控制台的API网关详情页,或部署后的终端输出中,获取两个关键值:
restApiId(API网关ID)和restApiRootResourceId(根资源ID)。 - 在
serverless.yml的provider段添加这两个参数:
后续执行provider: name: aws runtime: nodejs18.x # 替换成你的运行时版本 stage: dev region: us-east-1 # 替换成你的部署区域 apiGateway: restApiId: "xxxxxxxxx" # 替换为你的API网关ID restApiRootResourceId: "yyyyyyyyy" # 替换为你的根资源IDsls deploy时,Serverless会复用这个已有的API网关,前缀不会再变化。
注意事项
- 复用API网关时,请勿删除该网关,否则后续部署会失败。
- 自定义域名方案更适合长期维护的生产项目,复用网关方案适合快速测试或临时场景。
内容的提问来源于stack exchange,提问作者xubia
相关产品推荐
相关产品推荐

