你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Microsoft.ApiManagement 服务 2021-08-01

Bicep 资源定义

可以使用面向以下操作部署服务资源类型:

有关每个 API 版本中已更改属性的列表,请参阅 更改日志

资源格式

若要创建 Microsoft.ApiManagement/服务资源,请将以下 Bicep 添加到模板。

resource symbolicname 'Microsoft.ApiManagement/service@2021-08-01' = {
  name: 'string'
  location: 'string'
  tags: {
    tagName1: 'tagValue1'
    tagName2: 'tagValue2'
  }
    {customized property}: 'string'
  sku: {
    capacity: int
    name: 'string'
  }
  identity: {
    type: 'string'
    userAssignedIdentities: {
      {customized property}: {
        clientId: 'string'
        principalId: 'string'
      }
    }
  }
  properties: {
    additionalLocations: [
      {
        disableGateway: bool
        location: 'string'
        publicIpAddressId: 'string'
        sku: {
          capacity: int
          name: 'string'
        }
        virtualNetworkConfiguration: {
          subnetResourceId: 'string'
        }
        zones: [
          'string'
        ]
      }
    ]
    apiVersionConstraint: {
      minApiVersion: 'string'
    }
    certificates: [
      {
        certificate: {
          expiry: 'string'
          subject: 'string'
          thumbprint: 'string'
        }
        certificatePassword: 'string'
        encodedCertificate: 'string'
        storeName: 'string'
      }
    ]
    customProperties: {
      {customized property}: 'string'
    }
    disableGateway: bool
    enableClientCertificate: bool
    hostnameConfigurations: [
      {
        certificate: {
          expiry: 'string'
          subject: 'string'
          thumbprint: 'string'
        }
        certificatePassword: 'string'
        certificateSource: 'string'
        certificateStatus: 'string'
        defaultSslBinding: bool
        encodedCertificate: 'string'
        hostName: 'string'
        identityClientId: 'string'
        keyVaultId: 'string'
        negotiateClientCertificate: bool
        type: 'string'
      }
    ]
    notificationSenderEmail: 'string'
    privateEndpointConnections: [
      {
        id: 'string'
        name: 'string'
        properties: {
          privateEndpoint: {}
          privateLinkServiceConnectionState: {
            actionsRequired: 'string'
            description: 'string'
            status: 'string'
          }
        }
        type: 'string'
      }
    ]
    publicIpAddressId: 'string'
    publicNetworkAccess: 'string'
    publisherEmail: 'string'
    publisherName: 'string'
    restore: bool
    virtualNetworkConfiguration: {
      subnetResourceId: 'string'
    }
    virtualNetworkType: 'string'
  }
  zones: [
    'string'
  ]
}

属性值

服务

名称 说明
name 资源名称 字符串 (必需)

字符限制:1-50

有效字符:
字母数字和连字符。

以字母开头且以字母数字结尾。

资源名称在 Azure 中必须是唯一的。
location 资源位置。 字符串 (必需)
标记 资源标记。 标记名称和值的字典。 请参阅 模板中的标记
sku API 管理服务的 SKU 属性。 ApiManagementServiceSkuProperties (必需)
标识 Api 管理服务的托管服务标识。 ApiManagementServiceIdentity
properties API 管理服务的属性。 ApiManagementServiceProperties (所需的)
zones 指示资源需要来自何处的可用性区域列表。 string[]

ApiManagementServiceIdentity

名称 说明 Value
type 用于资源的标识类型。 类型“SystemAssigned ,UserAssigned”包含隐式创建的标识和一组用户分配的标识。 类型“None”将从服务中删除任何标识。 “None”
“SystemAssigned”
“SystemAssigned, UserAssigned”
“UserAssigned” (必需)
userAssignedIdentities 与资源关联的用户标识列表。 用户标识
字典键引用将采用以下格式的 ARM 资源 ID:
'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'。
ApiManagementServiceIdentityUserAssignedIdentities

ApiManagementServiceIdentityUserAssignedIdentities

名称 说明
{customized property} UserIdentityProperties

UserIdentityProperties

名称 说明
clientId 用户分配标识的客户端 ID。 字符串
principalId 用户分配标识的主体 ID。 字符串

ApiManagementServiceProperties

名称 说明
additionalLocations API 管理服务的其他数据中心位置。 AdditionalLocation[]
apiVersionConstraint API 管理服务的控制平面 Api 版本约束。 ApiVersionConstraint
certificates 需要在 API 管理 服务中安装的证书列表。 可安装的最大支持证书数为 10。 CertificateConfiguration[]
customProperties API 管理服务的自定义属性。
设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168 将禁用所有 TLS (1.0、1.1 和 1.2) 的密码TLS_RSA_WITH_3DES_EDE_CBC_SHA。
设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11 可用于仅禁用 TLS 1.1。
设置Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10可用于在API 管理服务上禁用 TLS 1.0。
设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11 可用于仅禁用与后端通信的 TLS 1.1。
设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10 可用于禁用 TLS 1.0 与后端的通信。
设置Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2可用于在API 管理服务上启用 HTTP2 协议。
如果不在 PATCH 操作上指定任何这些属性,则会将省略的属性的值重置为默认值。 对于除 Http2 之外的所有设置,如果服务是在 2018 False 年 4 月 1 日或之前创建的,则默认值为 True ,否则为 。 Http2 设置的默认值为 False

可以使用设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.[cipher_name]禁用以下任何密码:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_AES_128_GCM_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA256、 TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA、TLS_RSA_WITH_AES_128_CBC_SHA。 例如:Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256falsetrue默认值为 。
注意:由于内部平台组件需要以下密码,因此无法禁用以下密码:TLS_AES_256_GCM_SHA384、TLS_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
ApiManagementServiceBasePropertiesCustomProperties
disableGateway 属性仅对部署在多个位置的 Api 管理服务有效。 这可用于禁用主区域中的网关。 bool
enableClientCertificate 属性仅用于消耗 SKU 服务。 这会强制在向网关发出每个请求时提供客户端证书。 这还允许在网关上的策略中对证书进行身份验证。 bool
hostnameConfigurations API 管理服务的自定义主机名配置。 HostnameConfiguration[]
notificationSenderEmail Email发送通知的地址。 字符串
专用终结点 此服务的专用终结点连接列表。 RemotePrivateEndpointConnectionWrapper[]
publicIpAddressId 要与区域中部署的服务关联的基于公共标准 SKU IP V4 的 IP 地址虚拟网络。 仅支持在 虚拟网络 中部署的开发人员和高级 SKU。 字符串
publicNetworkAccess 此API 管理服务是否允许公共终结点访问。 值是可选的,但如果传入,则必须为“Enabled”或“Disabled”。 如果为“Disabled”,则专用终结点是独占访问方法。 默认值为“Enabled” 'Disabled'
'Enabled'
publisherEmail 发布者电子邮件。 字符串 (必需)
publisherName 发布者名称。 字符串 (必需)
还原 取消删除 Api 管理服务(如果以前已软删除)。 如果指定了此标志并将其设置为 True,则将忽略所有其他属性。 bool
virtualNetworkConfiguration API 管理服务的虚拟网络配置。 VirtualNetworkConfiguration
virtualNetworkType 需要在其中配置API 管理服务的 VPN 类型。 无 (默认值) 表示API 管理服务不属于任何虚拟网络,外部表示API 管理部署是在具有面向 Internet 的终结点的虚拟网络内设置的,而“内部”表示API 管理部署是在仅具有面向 Intranet 的终结点的虚拟网络内设置的. 'External'
'Internal'
“None”

AdditionalLocation

名称 说明
disableGateway 属性仅对部署在多个位置的 Api 管理服务有效。 这可用于禁用此附加位置中的网关。 bool
location Azure 数据中心区域之间附加区域的位置名称。 字符串 (必需)
publicIpAddressId 要与位置中部署 虚拟网络的服务关联的基于公共标准 SKU IP V4 的 IP 地址。 仅支持在 虚拟网络 中部署的高级 SKU。 字符串
sku API 管理服务的 SKU 属性。 ApiManagementServiceSkuProperties (必需)
virtualNetworkConfiguration 位置的虚拟网络配置。 VirtualNetworkConfiguration
zones 指示资源需要来自何处的可用性区域列表。 string[]

ApiManagementServiceSkuProperties

名称 说明
容量 SKU 的容量 (SKU) 的已部署单位数。 对于消耗型,SKU 容量必须指定为 0。 int (必需)
name SKU 的名称。 'Basic'
“消耗”
'Developer'
'Isolated'
“Premium”
需要“标准” ()

VirtualNetworkConfiguration

名称 说明
subnetResourceId 虚拟网络中要在其中部署API 管理服务的子网的完整资源 ID。 字符串

ApiVersionConstraint

名称 说明
minApiVersion 将控制平面 API 调用限制为版本等于或高于此值API 管理服务。 字符串

CertificateConfiguration

名称 说明
证书 (certificate) 证书信息。 CertificateInformation
certificatePassword 证书密码。 字符串
encodedCertificate Base64 编码证书。 字符串
storeName System.Security.Cryptography.x509certificates.StoreName 证书存储位置。 只有 Root 和 CertificateAuthority 是有效位置。 “CertificateAuthority”
“Root” (必需)

CertificateInformation

名称 说明
expiry 证书的到期日期。 日期符合以下格式: yyyy-MM-ddTHH:mm:ssZ 由 ISO 8601 标准指定。 字符串 (必需)
subject 证书的使用者。 字符串 (必需)
thumbprint 证书的指纹。 字符串 (必需)

ApiManagementServiceBasePropertiesCustomProperties

名称 说明
{customized property} 字符串

HostnameConfiguration

名称 说明
证书 (certificate) 证书信息。 CertificateInformation
certificatePassword 证书密码。 字符串
certificateSource 证书源。 'BuiltIn'
“Custom”
“KeyVault”
'Managed'
certificateStatus 证书状态。 “Completed”
“Failed”
“InProgress”
defaultSslBinding 指定 true 以设置与此主机名关联的证书作为默认 SSL 证书。 如果客户端不发送 SNI 标头,则这是将质询的证书。 如果服务启用了多个自定义主机名,并且它需要确定默认 SSL 证书,则 属性非常有用。 设置仅适用于代理主机名类型。 bool
encodedCertificate Base64 编码证书。 字符串
hostName 要对 Api 管理服务配置的主机名。 字符串 (必需)
identityClientId 由 Azure AD 生成的系统或用户分配的托管标识 clientId,对包含 SSL 证书的 keyVault 具有 GET 访问权限。 字符串
keyVaultId 包含 Ssl 证书的 KeyVault 机密的 URL。 如果提供了包含版本的绝对 URL,则 ssl 证书的自动更新将不起作用。 这需要使用 aka.ms/apimmsi 配置 Api 管理服务。 机密应为 application/x-pkcs12 类型 字符串
negotiateClientCertificate 指定 true 以始终协商主机名上的客户端证书。 默认值为 false。 bool
类型 主机名类型。 “DeveloperPortal”
“管理”
“门户”
“Proxy”
“Scm” (必需)

RemotePrivateEndpointConnectionWrapper

名称 说明 Value
id 专用终结点连接资源 ID 字符串
name 专用终结点连接名称 string
properties 资源属性。 PrivateEndpointConnectionWrapperProperties
类型 专用终结点连接资源类型 字符串

PrivateEndpointConnectionWrapperProperties

名称 说明
privateEndpoint 专用终结点的资源。 ArmIdWrapper
privateLinkServiceConnectionState 有关服务使用者与提供程序之间的连接状态的信息集合。 PrivateLinkServiceConnectionState (必需)

ArmIdWrapper

此对象不包含在部署期间要设置的任何属性。 所有属性均为 ReadOnly。

PrivateLinkServiceConnectionState

名称 说明
actionsRequired 一条消息,指示服务提供商的更改是否需要对使用者进行任何更新。 字符串
description 批准/拒绝连接的原因。 字符串
status 指示连接是否已由服务的所有者批准/拒绝/删除。 “已批准”
“挂起”
“Rejected”

快速入门模板

以下快速入门模板部署此资源类型。

模板 说明
使用模板创建 API 管理实例和所有子资源

部署到 Azure
此模板演示如何创建API 管理服务和配置子实体
使用外部Azure Cache for Redis部署API 管理

部署到 Azure
此模板演示如何在消耗层中创建 Azure API 管理 的实例,其中外部Azure Cache for Redis实例作为API 管理外部缓存。
使用公共 IP 在外部 VNet 中部署API 管理

部署到 Azure
此模板演示如何在外部模式下在虚拟网络子网的高级层中创建 Azure API 管理实例,并在子网上配置建议的 NSG 规则。 实例部署到两个可用性区域。 该模板还配置订阅中的公共 IP 地址。
使用自定义主机名创建API 管理实例

部署到 Azure
此模板演示如何使用门户的自定义主机名和代理的多个自定义主机名创建 Azure API 管理实例
使用应用网关在内部 VNet 中创建API 管理

部署到 Azure
此模板演示如何在受Azure 应用程序网关保护的专用网络上创建 Azure API 管理 实例。
使用公共 IP 在内部 VNet 中部署API 管理

部署到 Azure
此模板演示如何在内部模式下在虚拟网络子网的高级层中创建 Azure API 管理 实例,并在子网上配置建议的 NSG 规则。 实例部署到两个可用性区域。 该模板还配置订阅中的公共 IP 地址。
创建具有 MSI 标识的API 管理实例

部署到 Azure
此模板创建 Azure 的开发人员实例,API 管理具有 MSI 标识
创建多区域高级层API 管理实例

部署到 Azure
此模板演示如何创建具有其他位置的 API 管理 实例。 主要位置与资源组的位置相同。 对于其他位置,模板显示 NorthCentralUs 和 East US2。 主要位置应不同于其他位置。
使用 KeyVault 使用自定义代理 ssl 创建API 管理

部署到 Azure
此模板演示如何使用 keyvault 中的 ssl 证书创建 Azure API 管理实例并为代理配置自定义主机名。
使用 KeyVault 中的 SSL 创建API 管理服务

部署到 Azure
此模板部署使用用户分配的标识配置的API 管理服务。 它使用此标识从 KeyVault 提取 SSL 证书,并通过每 4 小时检查一次来保持更新。
创建和监视API 管理实例

部署到 Azure
此模板创建 Azure API 管理 服务和 Log Analytics 工作区的实例,并使用 Log Analytics 为API 管理服务设置监视
使用专用终结点创建API 管理服务

部署到 Azure
此模板将创建一个API 管理服务、一个虚拟网络和一个向虚拟网络公开API 管理服务的专用终结点。
将 API 管理部署到可用性区域中

部署到 Azure
此模板创建 Azure API 管理的高级实例,并将其部署到可用性区域
使用模板创建 API 管理实例

部署到 Azure
此模板创建 Azure API 管理 的开发人员实例
具有API 管理源的 Front Door 标准版/高级版

部署到 Azure
此模板创建 Front Door Premium 和 API 管理 实例,并使用 NSG 和全局API 管理策略来验证流量是否已通过 Front Door 源。
在 Azure API 管理 前面创建 Azure Front Door

部署到 Azure
此示例演示如何在 Azure API 管理前面使用 Azure Front Door 作为全局负载均衡器。
使用内部API 管理和 Web 应用应用程序网关

部署到 Azure
应用程序网关将 Internet 流量路由到虚拟网络 (内部模式) API 管理 实例,该实例为 Azure Web 应用中托管的 Web API 提供服务。

ARM 模板资源定义

可以使用面向以下操作部署服务资源类型:

有关每个 API 版本中已更改属性的列表,请参阅 更改日志

资源格式

若要创建 Microsoft.ApiManagement/服务资源,请将以下 JSON 添加到模板。

{
  "type": "Microsoft.ApiManagement/service",
  "apiVersion": "2021-08-01",
  "name": "string",
  "location": "string",
  "tags": {
    "tagName1": "tagValue1",
    "tagName2": "tagValue2"
  },
    "{customized property}": "string"
  "sku": {
    "capacity": "int",
    "name": "string"
  },
  "identity": {
    "type": "string",
    "userAssignedIdentities": {
      "{customized property}": {
        "clientId": "string",
        "principalId": "string"
      }
    }
  },
  "properties": {
    "additionalLocations": [
      {
        "disableGateway": "bool",
        "location": "string",
        "publicIpAddressId": "string",
        "sku": {
          "capacity": "int",
          "name": "string"
        },
        "virtualNetworkConfiguration": {
          "subnetResourceId": "string"
        },
        "zones": [ "string" ]
      }
    ],
    "apiVersionConstraint": {
      "minApiVersion": "string"
    },
    "certificates": [
      {
        "certificate": {
          "expiry": "string",
          "subject": "string",
          "thumbprint": "string"
        },
        "certificatePassword": "string",
        "encodedCertificate": "string",
        "storeName": "string"
      }
    ],
    "customProperties": {
      "{customized property}": "string"
    },
    "disableGateway": "bool",
    "enableClientCertificate": "bool",
    "hostnameConfigurations": [
      {
        "certificate": {
          "expiry": "string",
          "subject": "string",
          "thumbprint": "string"
        },
        "certificatePassword": "string",
        "certificateSource": "string",
        "certificateStatus": "string",
        "defaultSslBinding": "bool",
        "encodedCertificate": "string",
        "hostName": "string",
        "identityClientId": "string",
        "keyVaultId": "string",
        "negotiateClientCertificate": "bool",
        "type": "string"
      }
    ],
    "notificationSenderEmail": "string",
    "privateEndpointConnections": [
      {
        "id": "string",
        "name": "string",
        "properties": {
          "privateEndpoint": {},
          "privateLinkServiceConnectionState": {
            "actionsRequired": "string",
            "description": "string",
            "status": "string"
          }
        },
        "type": "string"
      }
    ],
    "publicIpAddressId": "string",
    "publicNetworkAccess": "string",
    "publisherEmail": "string",
    "publisherName": "string",
    "restore": "bool",
    "virtualNetworkConfiguration": {
      "subnetResourceId": "string"
    },
    "virtualNetworkType": "string"
  },
  "zones": [ "string" ]
}

属性值

服务

名称 说明 Value
type 资源类型 'Microsoft.ApiManagement/service'
apiVersion 资源 API 版本 '2021-08-01'
name 资源名称 字符串 (必需)

字符限制:1-50

有效字符:
字母数字和连字符。

以字母开头且以字母数字结尾。

资源名称在 Azure 中必须是唯一的。
location 资源位置。 字符串 (必需)
标记 资源标记。 标记名称和值的字典。 请参阅 模板中的标记
sku API 管理服务的 SKU 属性。 ApiManagementServiceSkuProperties (必需)
标识 Api 管理服务的托管服务标识。 ApiManagementServiceIdentity
properties API 管理服务的属性。 ApiManagementServiceProperties (所需的)
zones 指示资源需要来自何处的可用性区域列表。 string[]

ApiManagementServiceIdentity

名称 说明 Value
type 用于资源的标识类型。 类型“SystemAssigned ,UserAssigned”包含隐式创建的标识和一组用户分配的标识。 类型“None”将从服务中删除任何标识。 “None”
“SystemAssigned”
“SystemAssigned, UserAssigned”
“UserAssigned” (必需)
userAssignedIdentities 与资源关联的用户标识列表。 用户标识
字典键引用将采用以下格式的 ARM 资源 ID:
'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'。
ApiManagementServiceIdentityUserAssignedIdentities

ApiManagementServiceIdentityUserAssignedIdentities

名称 说明
{customized property} UserIdentityProperties

UserIdentityProperties

名称 说明
clientId 用户分配标识的客户端 ID。 字符串
principalId 用户分配标识的主体 ID。 字符串

ApiManagementServiceProperties

名称 说明
additionalLocations API 管理服务的其他数据中心位置。 AdditionalLocation[]
apiVersionConstraint API 管理服务的控制平面 Api 版本约束。 ApiVersionConstraint
certificates 需要在 API 管理 服务中安装的证书列表。 可安装的最大支持证书数为 10。 CertificateConfiguration[]
customProperties API 管理服务的自定义属性。
设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168 将禁用所有 TLS (1.0、1.1 和 1.2) 的密码TLS_RSA_WITH_3DES_EDE_CBC_SHA。
设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11 可用于仅禁用 TLS 1.1。
设置Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10可用于在API 管理服务上禁用 TLS 1.0。
设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11 可用于仅禁用与后端通信的 TLS 1.1。
设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10 可用于禁用 TLS 1.0 与后端的通信。
设置Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2可用于在API 管理服务上启用 HTTP2 协议。
如果不在 PATCH 操作上指定任何这些属性,则会将省略的属性的值重置为默认值。 对于除 Http2 之外的所有设置,如果服务是在 2018 False 年 4 月 1 日或之前创建的,则默认值为 True ,否则为 。 Http2 设置的默认值为 False

可以使用设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.[cipher_name]禁用以下任何密码:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_AES_128_GCM_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA256、 TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA、TLS_RSA_WITH_AES_128_CBC_SHA。 例如:Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256falsetrue默认值为 。
注意:由于内部平台组件需要以下密码,因此无法禁用以下密码:TLS_AES_256_GCM_SHA384、TLS_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
ApiManagementServiceBasePropertiesCustomProperties
disableGateway 属性仅对部署在多个位置的 Api 管理服务有效。 这可用于禁用主区域中的网关。 bool
enableClientCertificate 属性仅用于消耗 SKU 服务。 这会强制在向网关发出每个请求时提供客户端证书。 这还允许在网关上的策略中对证书进行身份验证。 bool
hostnameConfigurations API 管理服务的自定义主机名配置。 HostnameConfiguration[]
notificationSenderEmail Email发送通知的地址。 字符串
专用终结点 此服务的专用终结点连接列表。 RemotePrivateEndpointConnectionWrapper[]
publicIpAddressId 要与区域中部署的服务关联的基于公共标准 SKU IP V4 的 IP 地址虚拟网络。 仅支持在 虚拟网络 中部署的开发人员和高级 SKU。 字符串
publicNetworkAccess 此API 管理服务是否允许公共终结点访问。 值是可选的,但如果传入,则必须为“Enabled”或“Disabled”。 如果为“Disabled”,则专用终结点是独占访问方法。 默认值为“Enabled” 'Disabled'
'Enabled'
publisherEmail 发布者电子邮件。 字符串 (必需)
publisherName 发布者名称。 字符串 (必需)
还原 取消删除 Api 管理服务(如果以前已软删除)。 如果指定了此标志并将其设置为 True,则将忽略所有其他属性。 bool
virtualNetworkConfiguration API 管理服务的虚拟网络配置。 VirtualNetworkConfiguration
virtualNetworkType 需要在其中配置API 管理服务的 VPN 类型。 无 (默认值) 表示API 管理服务不属于任何虚拟网络,外部表示API 管理部署是在具有面向 Internet 的终结点的虚拟网络内设置的,而“内部”表示API 管理部署是在仅具有面向 Intranet 的终结点的虚拟网络内设置的. 'External'
'Internal'
“None”

AdditionalLocation

名称 说明
disableGateway 属性仅对部署在多个位置的 Api 管理服务有效。 这可用于禁用此附加位置中的网关。 bool
location Azure 数据中心区域之间附加区域的位置名称。 字符串 (必需)
publicIpAddressId 要与位置中部署 虚拟网络的服务关联的基于公共标准 SKU IP V4 的 IP 地址。 仅支持在 虚拟网络 中部署的高级 SKU。 字符串
sku API 管理服务的 SKU 属性。 ApiManagementServiceSkuProperties (必需)
virtualNetworkConfiguration 位置的虚拟网络配置。 VirtualNetworkConfiguration
zones 指示资源需要来自何处的可用性区域列表。 string[]

ApiManagementServiceSkuProperties

名称 说明
容量 SKU 的容量 (SKU) 的已部署单位数。 对于消耗型,SKU 容量必须指定为 0。 int (必需)
name SKU 的名称。 'Basic'
“消耗”
'Developer'
'Isolated'
“Premium”
需要“标准” ()

VirtualNetworkConfiguration

名称 说明
subnetResourceId 虚拟网络中要在其中部署API 管理服务的子网的完整资源 ID。 字符串

ApiVersionConstraint

名称 说明
minApiVersion 将控制平面 API 调用限制为版本等于或高于此值API 管理服务。 字符串

CertificateConfiguration

名称 说明
证书 (certificate) 证书信息。 CertificateInformation
certificatePassword 证书密码。 字符串
encodedCertificate Base64 编码证书。 字符串
storeName System.Security.Cryptography.x509certificates.StoreName 证书存储位置。 只有 Root 和 CertificateAuthority 是有效位置。 “CertificateAuthority”
“Root” (必需)

CertificateInformation

名称 说明
expiry 证书的到期日期。 日期符合以下格式: yyyy-MM-ddTHH:mm:ssZ 由 ISO 8601 标准指定。 字符串 (必需)
subject 证书的使用者。 字符串 (必需)
thumbprint 证书的指纹。 字符串 (必需)

ApiManagementServiceBasePropertiesCustomProperties

名称 说明
{customized property} 字符串

HostnameConfiguration

名称 说明
证书 (certificate) 证书信息。 CertificateInformation
certificatePassword 证书密码。 字符串
certificateSource 证书源。 'BuiltIn'
“Custom”
“KeyVault”
'Managed'
certificateStatus 证书状态。 “Completed”
“Failed”
“InProgress”
defaultSslBinding 指定 true 以设置与此主机名关联的证书作为默认 SSL 证书。 如果客户端不发送 SNI 标头,则这是将质询的证书。 如果服务启用了多个自定义主机名,并且它需要确定默认 SSL 证书,则 属性非常有用。 设置仅适用于代理主机名类型。 bool
encodedCertificate Base64 编码证书。 字符串
hostName 要对 Api 管理服务配置的主机名。 字符串 (必需)
identityClientId 由 Azure AD 生成的系统或用户分配的托管标识 clientId,对包含 SSL 证书的 keyVault 具有 GET 访问权限。 字符串
keyVaultId 包含 Ssl 证书的 KeyVault 机密的 URL。 如果提供了包含版本的绝对 URL,则无法自动更新 ssl 证书。 这要求使用 aka.ms/apimmsi 配置 Api 管理服务。 机密应为 application/x-pkcs12 类型 字符串
negotiateClientCertificate 指定 true 以始终协商主机名上的客户端证书。 默认值为 false。 bool
类型 主机名类型。 “DeveloperPortal”
“管理”
“门户”
“Proxy”
“Scm” (必需)

RemotePrivateEndpointConnectionWrapper

名称 说明 Value
id 专用终结点连接资源 ID 字符串
name 专用终结点连接名称 string
properties 资源属性。 PrivateEndpointConnectionWrapperProperties
类型 专用终结点连接资源类型 字符串

PrivateEndpointConnectionWrapperProperties

名称 说明
privateEndpoint 专用终结点的资源。 ArmIdWrapper
privateLinkServiceConnectionState 有关服务使用者与提供程序之间的连接状态的信息集合。 PrivateLinkServiceConnectionState (必需)

ArmIdWrapper

此对象不包含在部署期间要设置的任何属性。 所有属性均为 ReadOnly。

PrivateLinkServiceConnectionState

名称 说明
actionsRequired 一条消息,指示服务提供商的更改是否需要对使用者进行任何更新。 字符串
description 批准/拒绝连接的原因。 字符串
status 指示连接是否已由服务的所有者批准/拒绝/删除。 “已批准”
“挂起”
“Rejected”

快速入门模板

以下快速入门模板部署此资源类型。

模板 说明
使用模板创建 API 管理实例和所有子资源

部署到 Azure
此模板演示如何创建API 管理服务和配置子实体
使用外部Azure Cache for Redis部署API 管理

部署到 Azure
此模板演示如何在消耗层中创建 Azure API 管理 的实例,其中外部Azure Cache for Redis实例作为API 管理外部缓存。
使用公共 IP 在外部 VNet 中部署API 管理

部署到 Azure
此模板演示如何在外部模式下在虚拟网络子网的高级层中创建 Azure API 管理实例,并在子网上配置建议的 NSG 规则。 实例部署到两个可用性区域。 该模板还配置订阅中的公共 IP 地址。
使用自定义主机名创建API 管理实例

部署到 Azure
此模板演示如何使用门户的自定义主机名和代理的多个自定义主机名创建 Azure API 管理实例
使用应用网关在内部 VNet 中创建API 管理

部署到 Azure
此模板演示如何在受Azure 应用程序网关保护的专用网络上创建 Azure API 管理 实例。
使用公共 IP 在内部 VNet 中部署API 管理

部署到 Azure
此模板演示如何在内部模式下在虚拟网络子网的高级层中创建 Azure API 管理 实例,并在子网上配置建议的 NSG 规则。 实例部署到两个可用性区域。 该模板还配置订阅中的公共 IP 地址。
创建具有 MSI 标识的API 管理实例

部署到 Azure
此模板创建 Azure 的开发人员实例,API 管理具有 MSI 标识
创建多区域高级层API 管理实例

部署到 Azure
此模板演示如何创建具有其他位置的 API 管理 实例。 主要位置与资源组的位置相同。 对于其他位置,模板显示 NorthCentralUs 和 East US2。 主要位置应不同于其他位置。
使用 KeyVault 使用自定义代理 ssl 创建API 管理

部署到 Azure
此模板演示如何使用 keyvault 中的 ssl 证书创建 Azure API 管理实例并为代理配置自定义主机名。
使用 KeyVault 中的 SSL 创建API 管理服务

部署到 Azure
此模板部署使用用户分配的标识配置的API 管理服务。 它使用此标识从 KeyVault 提取 SSL 证书,并通过每 4 小时检查一次来保持更新。
创建和监视API 管理实例

部署到 Azure
此模板创建 Azure API 管理 服务和 Log Analytics 工作区的实例,并使用 Log Analytics 为API 管理服务设置监视
使用专用终结点创建API 管理服务

部署到 Azure
此模板将创建一个API 管理服务、一个虚拟网络和一个向虚拟网络公开API 管理服务的专用终结点。
将 API 管理部署到可用性区域中

部署到 Azure
此模板创建 Azure API 管理的高级实例并部署到可用性区域
使用模板创建 API 管理实例

部署到 Azure
此模板创建 Azure API 管理 的开发人员实例
具有API 管理源的 Front Door 标准版/高级版

部署到 Azure
此模板创建 Front Door Premium 和 API 管理 实例,并使用 NSG 和全局API 管理策略来验证流量是否已通过 Front Door 源。
在 Azure API 管理前面创建 Azure Front Door

部署到 Azure
此示例演示如何在 Azure API 管理前面使用 Azure Front Door 作为全局负载均衡器。
使用内部API 管理和 Web 应用应用程序网关

部署到 Azure
应用程序网关将 Internet 流量路由到虚拟网络 (内部模式) API 管理 实例,该实例为 Azure Web 应用中托管的 Web API 提供服务。

Terraform (AzAPI 提供程序) 资源定义

可以使用面向以下操作部署服务资源类型:

  • 资源组

有关每个 API 版本中更改的属性的列表,请参阅 更改日志

资源格式

若要创建 Microsoft.ApiManagement/service 资源,请将以下 Terraform 添加到模板。

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.ApiManagement/service@2021-08-01"
  name = "string"
  location = "string"
  parent_id = "string"
  tags = {
    tagName1 = "tagValue1"
    tagName2 = "tagValue2"
  }
    {customized property} = "string"
  identity {
    type = "string"
    identity_ids = []
  }
  body = jsonencode({
    properties = {
      additionalLocations = [
        {
          disableGateway = bool
          location = "string"
          publicIpAddressId = "string"
          sku = {
            capacity = int
            name = "string"
          }
          virtualNetworkConfiguration = {
            subnetResourceId = "string"
          }
          zones = [
            "string"
          ]
        }
      ]
      apiVersionConstraint = {
        minApiVersion = "string"
      }
      certificates = [
        {
          certificate = {
            expiry = "string"
            subject = "string"
            thumbprint = "string"
          }
          certificatePassword = "string"
          encodedCertificate = "string"
          storeName = "string"
        }
      ]
      customProperties = {
        {customized property} = "string"
      }
      disableGateway = bool
      enableClientCertificate = bool
      hostnameConfigurations = [
        {
          certificate = {
            expiry = "string"
            subject = "string"
            thumbprint = "string"
          }
          certificatePassword = "string"
          certificateSource = "string"
          certificateStatus = "string"
          defaultSslBinding = bool
          encodedCertificate = "string"
          hostName = "string"
          identityClientId = "string"
          keyVaultId = "string"
          negotiateClientCertificate = bool
          type = "string"
        }
      ]
      notificationSenderEmail = "string"
      privateEndpointConnections = [
        {
          id = "string"
          name = "string"
          properties = {
            privateEndpoint = {}
            privateLinkServiceConnectionState = {
              actionsRequired = "string"
              description = "string"
              status = "string"
            }
          }
          type = "string"
        }
      ]
      publicIpAddressId = "string"
      publicNetworkAccess = "string"
      publisherEmail = "string"
      publisherName = "string"
      restore = bool
      virtualNetworkConfiguration = {
        subnetResourceId = "string"
      }
      virtualNetworkType = "string"
    }
    zones = [
      "string"
    ]
    sku = {
      capacity = int
      name = "string"
    }
  })
}

属性值

服务

名称 说明 Value
type 资源类型 “Microsoft.ApiManagement/service@2021-08-01”
name 资源名称 字符串 (必需)

字符限制:1-50

有效字符:
字母数字和连字符。

以字母开头且以字母数字结尾。

资源名称在 Azure 中必须是唯一的。
location 资源位置。 字符串 (必需)
parent_id 若要部署到资源组,请使用该资源组的 ID。 字符串 (必需)
标记 资源标记。 标记名称和值的字典。
sku API 管理服务的 SKU 属性。 ApiManagementServiceSkuProperties (必需的)
标识 Api 管理服务的托管服务标识。 ApiManagementServiceIdentity
properties API 管理服务的属性。 ApiManagementServiceProperties (必需)
zones 表示资源需要来自的可用性区域列表。 string[]

ApiManagementServiceIdentity

名称 说明 Value
type 用于资源的标识类型。 类型“SystemAssigned ,UserAssigned”包含隐式创建的标识和一组用户分配的标识。 类型“None”将从服务中删除任何标识。 “SystemAssigned”
“SystemAssigned,UserAssigned”
“UserAssigned” (必需)
identity_ids 与资源关联的用户标识列表。 用户标识
字典键引用将采用以下格式的 ARM 资源 ID:
'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'。
用户标识 ID 数组。

ApiManagementServiceIdentityUserAssignedIdentities

名称 说明
{customized property} UserIdentityProperties

UserIdentityProperties

名称 说明
clientId 用户分配标识的客户端 ID。 字符串
principalId 用户分配的标识的主体 ID。 字符串

ApiManagementServiceProperties

名称 说明
additionalLocations API 管理服务的其他数据中心位置。 AdditionalLocation[]
apiVersionConstraint API 管理服务的控制平面 Api 版本约束。 ApiVersionConstraint
certificates 需要安装在 API 管理 服务中的证书列表。 可安装的最大支持证书数为 10。 CertificateConfiguration[]
customProperties API 管理服务的自定义属性。
设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168 将禁用所有 TLS (1.0、1.1 和 1.2) 的密码TLS_RSA_WITH_3DES_EDE_CBC_SHA。
设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11 可用于仅禁用 TLS 1.1。
设置Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10可用于在API 管理服务上禁用 TLS 1.0。
设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11 可用于仅禁用 TLS 1.1 与后端的通信。
设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10 可用于禁用 TLS 1.0 与后端的通信。
设置Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2可用于在API 管理服务上启用 HTTP2 协议。
如果不在 PATCH 操作上指定任何这些属性,则会将省略属性的值重置为其默认值。 对于除 Http2 之外的所有设置,默认值为 True :服务是在 2018 False 年 4 月 1 日或之前创建的,否则为 。 Http2 设置的默认值为 False

可以使用设置 Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.[cipher_name]禁用以下任何密码:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_AES_128_GCM_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA256、 TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA、TLS_RSA_WITH_AES_128_CBC_SHA。 例如:Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256falsetrue默认值为它们。
注意:由于内部平台组件需要以下密码,因此无法禁用以下密码:TLS_AES_256_GCM_SHA384、TLS_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
ApiManagementServiceBasePropertiesCustomProperties
disableGateway 属性仅对部署在多个位置的 Api 管理服务有效。 这可用于在主区域中禁用网关。 bool
enableClientCertificate 属性仅用于消耗 SKU 服务。 这强制要求在向网关的每个请求上显示客户端证书。 这还允许在网关上的策略中对证书进行身份验证。 bool
hostnameConfigurations API 管理服务的自定义主机名配置。 HostnameConfiguration[]
notificationSenderEmail Email发送通知的地址。 字符串
专用终结点 此服务的专用终结点连接列表。 RemotePrivateEndpointConnectionWrapper[]
publicIpAddressId 基于公共标准 SKU IP V4 的 IP 地址,与区域中虚拟网络部署的服务相关联。 仅支持在 虚拟网络 中部署的开发人员和高级 SKU。 字符串
publicNetworkAccess 是否允许此API 管理服务访问公共终结点。 值是可选的,但如果传入,则必须为“Enabled”或“Disabled”。 如果“已禁用”,则专用终结点是独占访问方法。 默认值为“Enabled” “Disabled”
“已启用”
publisherEmail 发布者电子邮件。 字符串 (必需)
publisherName 发布者名称。 字符串 (必需)
还原 取消删除 Api 管理服务(如果以前是软删除的)。 如果指定了此标志并将其设置为 True,则将忽略所有其他属性。 bool
virtualNetworkConfiguration API 管理服务的虚拟网络配置。 VirtualNetworkConfiguration
virtualNetworkType 需要在其中配置API 管理服务的 VPN 类型。 无 (默认值) 表示API 管理服务不属于任何虚拟网络,外部意味着API 管理部署是在具有面向 Internet 的终结点的虚拟网络内设置的,而内部意味着API 管理部署是在仅具有面向 Intranet 的终结点的虚拟网络内设置的. “External”
“Internal”
"None"

AdditionalLocation

名称 说明
disableGateway 属性仅对部署在多个位置的 Api 管理服务有效。 这可用于在此附加位置中禁用网关。 bool
location Azure 数据中心区域之间其他区域的位置名称。 字符串 (必需)
publicIpAddressId 要与位置中部署 虚拟网络的服务关联的基于公共标准 SKU IP V4 的 IP 地址。 仅支持在 虚拟网络 中部署的高级 SKU。 字符串
sku API 管理服务的 SKU 属性。 ApiManagementServiceSkuProperties (必需的)
virtualNetworkConfiguration 位置的虚拟网络配置。 VirtualNetworkConfiguration
zones 指示资源需要来自何处的可用性区域列表。 string[]

ApiManagementServiceSkuProperties

名称 说明
容量 SKU 的容量 (SKU) 的已部署单位数。 对于消耗型,SKU 容量必须指定为 0。 int (必需)
name SKU 的名称。 "Basic"
“消耗”
“Developer”
“独立”
“Premium”
需要“标准” ()

VirtualNetworkConfiguration

名称 说明
subnetResourceId 虚拟网络中要在其中部署API 管理服务的子网的完整资源 ID。 字符串

ApiVersionConstraint

名称 说明
minApiVersion 将控制平面 API 调用限制为版本等于或高于此值API 管理服务。 字符串

CertificateConfiguration

名称 说明
证书 (certificate) 证书信息。 CertificateInformation
certificatePassword 证书密码。 字符串
encodedCertificate Base64 编码证书。 字符串
storeName System.Security.Cryptography.x509certificates.StoreName 证书存储位置。 只有 Root 和 CertificateAuthority 是有效位置。 “CertificateAuthority”
需要“Root” ()

CertificateInformation

名称 说明
expiry 证书的到期日期。 日期符合以下格式: yyyy-MM-ddTHH:mm:ssZ 由 ISO 8601 标准指定。 字符串 (必需)
subject 证书的使用者。 字符串 (必需)
thumbprint 证书的指纹。 字符串 (必需)

ApiManagementServiceBasePropertiesCustomProperties

名称 说明
{customized property} 字符串

HostnameConfiguration

名称 说明
证书 (certificate) 证书信息。 CertificateInformation
certificatePassword 证书密码。 字符串
certificateSource 证书源。 “BuiltIn”
“Custom”
“KeyVault”
“Managed”
certificateStatus 证书状态。 “Completed”
“Failed”
“InProgress”
defaultSslBinding 指定 true 以设置与此主机名关联的证书作为默认 SSL 证书。 如果客户端不发送 SNI 标头,则这是将质询的证书。 如果服务启用了多个自定义主机名,并且它需要确定默认 SSL 证书,则 属性非常有用。 设置仅适用于代理主机名类型。 bool
encodedCertificate Base64 编码证书。 字符串
hostName 在 Api 管理服务上配置的主机名。 字符串 (必需)
identityClientId 由 Azure AD 生成的系统或用户分配的托管标识 clientId,该客户端对包含 SSL 证书的 keyVault 具有 GET 访问权限。 字符串
keyVaultId 包含 Ssl 证书的 KeyVault 机密的 URL。 如果提供了包含版本的绝对 URL,则无法自动更新 ssl 证书。 这要求使用 aka.ms/apimmsi 配置 Api 管理服务。 机密应为 application/x-pkcs12 类型 字符串
negotiateClientCertificate 指定 true 以始终协商主机名上的客户端证书。 默认值为 false。 bool
类型 主机名类型。 “DeveloperPortal”
“管理”
“门户”
“Proxy”
需要“Scm” ()

RemotePrivateEndpointConnectionWrapper

名称 说明 Value
id 专用终结点连接资源 ID 字符串
name 专用终结点连接名称 string
properties 资源属性。 PrivateEndpointConnectionWrapperProperties
类型 专用终结点连接资源类型 字符串

PrivateEndpointConnectionWrapperProperties

名称 说明
privateEndpoint 专用终结点的资源。 ArmIdWrapper
privateLinkServiceConnectionState 有关服务使用者与提供程序之间的连接状态的信息集合。 PrivateLinkServiceConnectionState (必需)

ArmIdWrapper

此对象不包含在部署期间要设置的任何属性。 所有属性均为 ReadOnly。

PrivateLinkServiceConnectionState

名称 说明
actionsRequired 一条消息,指示服务提供商的更改是否需要对使用者进行任何更新。 字符串
description 批准/拒绝连接的原因。 字符串
status 指示连接是否已由服务的所有者批准/拒绝/删除。 “已批准”
“挂起”
“已拒绝”