如何使用 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 文档
我们使用无服务器将 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 文档