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

如何通过Serverless框架为Azure Functions配置自定义域名与证书

解决方案

配置被清空的原因

sls deploy 执行时手动配置的APIM自定义域名被清空,核心原因是serverless-azure-functions插件默认开启apim: true后,每次部署会全量重写APIM实例的所有配置,手动在Azure Portal添加的自定义域名、证书等全局配置不在插件的部署清单中,因此会被覆盖。

方案1:直接在serverless.yml中配置自定义域名

将apim配置从布尔值改为对象,补充自定义域名、证书相关参数,实现全配置代码化,无需手动操作Azure Portal,适配CI/CD流程。修改后的配置参考:

service: my-service-${env:STAGE, 'develop'}
configValidationMode: off

provider:
  name: azure
  runtime: nodejs12
  region: north-europe
  resourceGroup: My-Service-Group
  subscriptionId: MySubscriptionId
  stage: ${env:STAGE, 'develop'}
  apim:
    name: 你的APIM实例名称
    # 若APIM和函数不在同一个资源组,需显式指定资源组
    # resourceGroup: APIM资源组名称
    customDomains:
      - name: 你的自定义域名,例如api.example.com
        certificatePath: ./本地PFX证书存储路径.pfx
        # 证书密码从环境变量读取,禁止明文写入配置文件
        certificatePassword: ${env:APIM_CERT_PASSWORD}
        type: Proxy # 对应APIM代理端点类型

plugins:
  - serverless-azure-functions

functions:
  graphql:
    handler: lib/azure.handler
    events:
      - http: true
        methods:
          - GET
          - POST
        authLevel: anonymous
        route: graphql
        apim:
          # 可选:配置该API在APIM中的路径、限流等规则
          api:
            path: /
            displayName: GraphQL服务
      - http: true
        direction: out
        name: "$return"
        route: graphql

方案2:禁用APIM全局配置覆盖,保留手动设置

如果不想把证书、域名配置放到代码仓库,可开启skipFullUpdate参数,插件仅会更新函数接口到APIM的映射规则,不会修改APIM本身的全局配置(包括手动添加的自定义域名、证书、全局策略等)。修改后的provider配置参考:

provider:
  name: azure
  runtime: nodejs12
  region: north-europe
  resourceGroup: My-Service-Group
  subscriptionId: MySubscriptionId
  stage: ${env:STAGE, 'develop'}
  apim:
    name: 你的APIM实例名称
    skipFullUpdate: true # 核心参数,禁止全量覆盖APIM全局配置

注意事项

  • 方案1中证书密码严禁明文写入配置文件,需通过环境变量或者Azure Key Vault引用传递,避免密钥泄露
  • 若配置不生效,请先升级serverless-azure-functions插件到最新稳定版
  • 当前使用的nodejs12 runtime已停止官方安全维护,建议升级到nodejs18及以上的LTS版本

内容的提问来源于stack exchange,提问作者Stefan H Singer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:39:01