如何使用 Serverless 为 Azure Functions 指定自定义域和证书?

How to specify custom domain and certificate for Azure Functions using Serverless?

我们使用无服务器将 graphql 处理函数部署为 Azure 函数并通过 APIM 访问它。

我们需要使用自己的自定义域(通过 CNAME 指向 Azure APIM 域),并且可以通过 Azure 门户手动设置,并为其上传证书 + 指定证书密码。

但是,如果我们执行“sls deploy”,自定义域设置将被删除,因此我们需要以某种方式保留它或通过 serverless.yml 指定它,但我找不到有关如何执行的任何信息这样做。

当前 serverless.yml 配置:

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: true


plugins:
  - serverless-azure-functions

functions:
  graphql:
    handler: lib/azure.handler
    events:
      - http: true
        methods:
          - GET
          - POST
        authLevel: anonymous # can also be `function` or `admin`
        route: graphql
      - http: true
        direction: out
        name: "$return"
        route: graphql

如有任何指导,我们将不胜感激。

为了设置证书,我们需要从 Azure 门户 select TSL/SSL 设置选项,然后我们可以创建应用服务托管证书。

为此,我们需要按照以下步骤添加自定义域:

  • 将域映射到应用程序
  • 我们需要购买通配符证书

以下是我们通常的设置方式:

最后,我们需要创建 DNS 规则。

感谢codeproject,因为我们已经清楚地起草了所有信息

从 apim 部分检查以下示例 serverless.yml:

# serverless.yml

apim:
  apis:
    - name: v1
      subscriptionRequired: false # if true must provide an api key
      displayName: v1
      description: V1 sample app APIs
      protocols:
        - https
      path: v1
      tags:
        - tag1
        - tag2
      authorization: none
  cors:
    allowCredentials: false
    allowedOrigins:
      - "*"
    allowedMethods:
      - GET
      - POST
      - PUT
      - DELETE
      - PATCH
    allowedHeaders:
      - "*"
    exposeHeaders:
      - "*"
 

和“sls部署”

检查无服务器 framework and azure deployment 文档