ALIYUN::KAFKA::Instance

ALIYUN::KAFKA::Instance类型用于创建Kafka实例。

语法

{
  "Type": "ALIYUN::KAFKA::Instance",
  "Properties": {
    "DeployType": Integer,
    "DiskType": String,
    "DeployOption": Map,
    "EipMax": Integer,
    "SpecType": String,
    "IoMax": Integer,
    "IoMaxSpec": String,
    "DiskSize": Integer,
    "TopicQuota": Integer,
    "PayType": String,
    "Tags": List,
    "DeletionForce": Boolean,
    "OpenConnector": Boolean,
    "PartitionNum": Integer,
    "ServerlessConfig": Map
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

DeployType

Integer

部署类型。

取值:

  • 4:公网和VPC实例。

  • 5:VPC实例。

DiskType

String

磁盘类型。

取值:

  • 0:高效云盘。

  • 1:SSD。

DeployOption

Map

部署选项。

更多信息,请参见DeployOption属性

EipMax

Integer

公网流量。

当DeployType取值为4时,需指定该参数。

取值范围:1~160。

SpecType

String

规格类型。

取值:

  • normal:标准版(高写版)。

  • professional:专业版(高写版)。

  • professionalForHighRead:专业版(高读版)。

IoMax

Integer

流量峰值(不推荐)。

流量峰值和流量规格必须指定其中一个参数。如果同时指定,以流量规格为准。建议您只填写流量规格。

更多信息,请参见计费概述

IoMaxSpec

String

流量规格(推荐)。

流量峰值和流量规格必须指定其中一个参数。如果同时指定,以流量规格为准。建议您只填写流量规格。

更多信息,请参见计费概述

DiskSize

Integer

磁盘容量。

取值范围:500~96,000。

单位:GB。

TopicQuota

Integer

Topic的数量。

取值范围:50~79。

PayType

String

付费类型。

取值:

  • Hour:按小时付费。

  • Month:按月付费。

Tags

List

标签。

最多支持添加20个标签。

更多信息,请参见Tags属性

DeletionForce

Boolean

是否强制删除。

取值:

  • true:强制删除。

  • false(默认值):不强制删除。

OpenConnector

Boolean

是否开启Connector。

取值:

  • true:开启Connector。

  • false(默认值):关闭Connector。

说明

关于Connector的更多信息,请参见Connector概述

PartitionNum

Integer

分区数(推荐)。

要求如下:

  • 分区数和Topic规格必须选填一个,建议您只填写分区数。

  • 分区数和Topic规格同时填写时,将会按照老的Topic售卖模型去校验分区数和Topic规格是否等价。如不等价将返回失败,反之则按分区数进行购买。

更多信息,请参见计费概述

ServerlessConfig

Map

Serverless 实例的相关设置。

创建 V3 系列(Serverless)实例时必传。详细信息,请参考ServerlessConfig属性。

Tags语法

"Tags": [
  {
    "Key": String,
    "Value": String
  }
]  

Tags属性

属性名称

类型

必须

允许更新

描述

约束

Key

String

标签键。

长度为1~128个字符,不能以aliyunacs:开头,不能包含http://或者https://

Value

String

标签值。

长度为0~128个字符,不能以aliyunacs:开头,不能包含http://或者https://

DeployOption语法

"DeployOption": {
  "IsEipInner": Boolean,
  "VpcId": String,
  "ZoneId": String,
  "VSwitchId": String,
  "SecurityGroup": String,
  "DeployModule": String,
  "Name": String,
  "IsSetUserAndPassword": Boolean,
  "Username": String,
  "Password": String,
  "ServiceVersion": String,
  "Config": Map,
  "Notifier": String,
  "CrossZone": Boolean,
  "UserPhoneNum": String,
  "SelectedZones": List,
  "VSwitchIds": List,
  "KMSKeyId": String,
  "IsForceSelectedZones": Boolean
}

DeployOption属性

属性名称

类型

必须

允许更新

描述

约束

IsEipInner

Boolean

是否支持EIP。

取值:

  • true:支持EIP。

  • false(默认值):不支持EIP。

EIP支持情况必须与实例类型一致。即公网和VPC实例取值为true,VPC实例取值为false。

DeployModule

String

部署模式。

取值:

  • vpc:VPC实例的部署模式。

  • eip:公网和VPC实例的部署模式。

VpcId

String

实例部署的专有网络ID。

ZoneId

String

实例部署的可用区ID。

VSwitchId

String

实例部署的交换机ID。

SecurityGroup

String

实例的安全组。

如果不指定该参数,消息队列Kafka版会自动为您的实例配置安全组。

Name

String

实例的名称。

IsSetUserAndPassword

Boolean

是否设置新的用户名和密码。

仅支持公网和VPC实例。取值:

  • true:设置新的用户名和密码。

  • false(默认值):不设置新的用户名和密码。

Username

String

用户名。

仅支持公网和VPC实例。

长度为8~40个字符,可包含英文字母和数字。

Password

String

用户密码。

仅支持公网和VPC实例。

长度为8~40个字符,可包含英文字母和数字,且必须同时包含小写英文字母、大写英文字母和数字。

ServiceVersion

String

部署的消息队列Kafka版的版本。

取值:

  • 0.10.2

  • 2.2.0

Config

Map

部署的消息队列Kafka版实例的初始配置。

配置信息必须是一个合法的JSON字符串。取值:

  • enable.vpc_sasl_ssl:是否开启VPC传输加密。取值:

    • true:开启VPC传输加密。如果开启,则须同时开启ACL。

    • false(默认值):关闭VPC传输加密。

  • enable.acl:是否开启ACL。取值:

    • true:开启ACL。

    • false(默认值):关闭ACL。

  • kafka.log.retention.hours:在磁盘容量充足的情况下,消息的最长保留时间。

    取值范围:24~480。

    默认值:72。

    单位:小时。

    说明

    磁盘容量不足(即磁盘水位达到85%)时,将提前删除旧的消息,以确保服务可用性。

  • kafka.message.max.bytes:消息队列Kafka版能收发的消息的最大值。

    取值范围:1,048,576~10,485,760。

    默认值:1,048,576。

    单位:字节。

    说明

    修改该配置前,请确认修改值是否匹配生产和消费客户端相应配置。

Notifier

String

预警联系人。

CrossZone

Boolean

是否要跨可用区部署。

取值:

  • true:需要跨可用区部署。

  • false:不需要跨可用区部署。

默认值:true。

UserPhoneNum

String

预警联系人手机号码。

SelectedZones

List

选择部署的主可用区候选集合。

以及备可用区候选集合的二维数组。支持自定义 code(zone{可用区})与标准 code(cn-RegionID-{可用区})。

  • 当希望跨可用区部署(isCrossZone=true),并且主可用区候选集合为可用区 H 或可用区 F,备可用区候选集合为可用区 K,以自定义 code 为例,则传入参数为[[\"zoneh\",\"zonef\"],[\"zonek\"]]

    说明

    当主或备可用区填写多个可用区时,表示从多个可用区中任选一个,且没有优先级关系,以[[\"zoneh\",\"zonef\"],[\"zonek\"]]为例,最终部署的主可用区为可用区 H 或可用区 F,备可用区为 K。

  • 当不希望跨可用区部署时(isCrossZone=false),可用区部署在可用区 K,以自定义 code 为例,则传入参数[[\"zonek\"],[]],注意此时仍需传入 2 个数组,第二个表示备可用区候选集合的数组为空[]即可。

VSwitchIds

List

实例部署的 vSwitch ID 列表。

该参数在 V2 和 V3 系列实例中必填,Confluent 类型实例支持该参数,且 VSwitchIds 与 VSwitchId 需要至少填写一项,都填写时,优先使用 VSwitchIds。

KMSKeyId

String

同地域内的云盘加密的密钥 ID。

您可以在密钥管理服务控制台查看密钥 ID,也可以创建新的密钥。具体操作,请参见创建密钥

传入此参数表示开启实例加密(开启后无法关闭),在调用该接口时,系统会检查是否创建服务关联角色 AliyunServiceRoleForAlikafkaInstanceEncryption,若未创建,则会自动创建服务关联角色。更多信息,请参见服务关联角色

IsForceSelectedZones

Boolean

是否强制部署在所选可用区。

ServerlessConfig语法

"ServerlessConfig": {
   "ReservedPublishCapacity": Integer,
   "ReservedSubscribeCapacity": Integer
}

ServerlessConfig属性

属性名称

类型

必须

允许更新

描述

约束

ReservedPublishCapacity

Integer

预留的发送流量规格值。

仅支持传入整数,最低 60

ReservedSubscribeCapacity

Integer

预留的消费流量规格值。

仅支持传入整数,最低 20。

返回值

Fn::GetAtt

  • InstanceId:实例ID。

  • OrderId:订单ID。

  • Name:实例名称。

  • SslEndpoint:SSL接入点的IP接入点。

  • SaslDomainEndpoint:SASL接入点的域名接入点。

  • SslDomainEndpoint:SSL接入点的域名接入点。

  • DomainEndpoint:默认接入点的域名接入点。

  • Endpoint:默认接入点的IP接入点。

示例

YAML格式

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  VpcId:
    Type: String
    AssociationProperty: ALIYUN::ECS::VPC::VPCId
  ZoneId:
    Type: String
    AssociationProperty: ALIYUN::ECS::ZoneId
  VSwitchId:
    Type: String
    AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
    AssociationPropertyMetadata:
      VpcId: ${VpcId}
      ZoneId: ${ZoneId}
  SecurityGroupId:
    Type: String
    AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
    AssociationPropertyMetadata:
      VpcId: ${VpcId}
Resources:
  Instance:
    Type: ALIYUN::KAFKA::Instance
    Properties:
      DeployType: 5
      SpecType: normal
      PayType: Hour
      DiskType: '1'
      DeployOption:
        VpcId:
          Ref: VpcId
        ZoneId:
          Ref: ZoneId
        VSwitchId:
          Ref: VSwitchId
        SecurityGroup:
          Ref: SecurityGroupId
        DeployModule: vpc
        ServiceVersion: 0.10.2
        Config:
          kafka.log.retention.hours: '33'
      DeletionForce: 'false'
      DiskSize: 500
      TopicQuota: 50
      OpenConnector: 'false'
      IoMaxSpec: alikafka.hw.2xlarge
Outputs:
  InstanceId:
    Description: 'Id of the instance. '
    Value:
      Fn::GetAtt:
        - Instance
        - InstanceId
  OrderId:
    Description: 'Id of the order. '
    Value:
      Fn::GetAtt:
        - Instance
        - OrderId
  Name:
    Description: Name of the instance.
    Value:
      Fn::GetAtt:
        - Instance
        - Name

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "VpcId": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::VPC::VPCId"
    },
    "ZoneId": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::ZoneId"
    },
    "VSwitchId": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
      "AssociationPropertyMetadata": {
        "VpcId": "${VpcId}",
        "ZoneId": "${ZoneId}"
      }
    },
    "SecurityGroupId": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::SecurityGroup::SecurityGroupId",
      "AssociationPropertyMetadata": {
        "VpcId": "${VpcId}"
      }
    }
  },
  "Resources": {
    "Instance": {
      "Type": "ALIYUN::KAFKA::Instance",
      "Properties": {
        "DeployType": 5,
        "SpecType": "normal",
        "PayType": "Hour",
        "DiskType": "1",
        "DeployOption": {
          "VpcId": {
            "Ref": "VpcId"
          },
          "ZoneId": {
            "Ref": "ZoneId"
          },
          "VSwitchId": {
            "Ref": "VSwitchId"
          },
          "SecurityGroup": {
            "Ref": "SecurityGroupId"
          },
          "DeployModule": "vpc",
          "ServiceVersion": "0.10.2",
          "Config": {
            "kafka.log.retention.hours": "33"
          }
        },
        "DeletionForce": "false",
        "DiskSize": 500,
        "TopicQuota": 50,
        "OpenConnector": "false",
        "IoMaxSpec": "alikafka.hw.2xlarge"
      }
    }
  },
  "Outputs": {
    "InstanceId": {
      "Description": "Id of the instance. ",
      "Value": {
        "Fn::GetAtt": [
          "Instance",
          "InstanceId"
        ]
      }
    },
    "OrderId": {
      "Description": "Id of the order. ",
      "Value": {
        "Fn::GetAtt": [
          "Instance",
          "OrderId"
        ]
      }
    },
    "Name": {
      "Description": "Name of the instance.",
      "Value": {
        "Fn::GetAtt": [
          "Instance",
          "Name"
        ]
      }
    }
  }
}

更多示例,请参见创建Kafka实例和创建Topic的组合示例:YAML示例