El tipo ALIYUN::REDIS::Instance crea instancias de Redis.
Sintaxis
{
"Type": "ALIYUN::REDIS::Instance",
"Properties": {
"VpcId": String,
"EvictionPolicy": String,
"BackupPolicy": Map,
"ZoneId": String,
"InstanceClass": String,
"InstanceMaintainTime": Map,
"Tags": List,
"VpcPasswordFree": Boolean,
"VSwitchId": String,
"SecurityGroupId": String,
"EngineVersion": String,
"SSLEnabled": String,
"Password": String,
"InstanceName": String,
"DeletionForce": Boolean,
"Connections": Map,
"ChargeType": String,
"TLSProtocol": String,
"Period": Integer,
"AutoRenewDuration": Integer,
"ProductType": String,
"SubscriptionDeletionForce": Boolean,
"SecondaryZoneId": String,
"ResourceGroupId": String,
"PeriodUnit": String,
"TairConfig": Map,
"ShardCount": Integer,
"NodeType": String,
"DeletionProtection": Boolean,
"ReadOnlyCount": Integer
}
}
Propiedades
|
Propiedad |
Tipo |
Obligatorio |
Editable |
Descripción |
Restricciones |
|
AutoRenewDuration |
Integer |
No |
Sí |
La duración de la renovación automática. |
Valores válidos: de 1 a 12. Unidad: meses. Cuando la instancia está por vencer, se renueva automáticamente durante el tiempo que indica este parámetro. Nota
Este parámetro es válido cuando ChargeType se establece en PrePaid. |
|
BackupPolicy |
Map |
No |
Sí |
La política de copia de seguridad. |
Para más información, consulte BackupPolicy properties. |
|
ChargeType |
String |
No |
Sí |
El método de facturación de la instancia. |
Valores válidos:
|
|
Connections |
Map |
No |
Sí |
La dirección de conexión. |
Para más información, consulte Connections properties. |
|
DeletionForce |
Boolean |
No |
Sí |
Elimina la instancia al recuperarla. |
Valores válidos:
|
|
DeletionProtection |
Boolean |
No |
Sí |
Indica si la protección contra eliminación está habilitada. |
Valores válidos:
|
|
EngineVersion |
String |
No |
Sí |
La versión del motor de base de datos. |
Valores válidos:
|
|
EvictionPolicy |
String |
No |
No |
La política de expulsión de datos. |
Valores válidos:
|
|
InstanceClass |
String |
No |
Sí |
El tipo de instancia. |
Para más información, consulte Instance Specifications Overview. |
|
InstanceMaintainTime |
Map |
No |
Sí |
La ventana de mantenimiento de la instancia. |
Para más información, consulte InstanceMaintainTime properties. |
|
InstanceName |
String |
No |
Sí |
El nombre de la instancia. |
El nombre de la instancia debe tener entre 2 y 128 caracteres. Debe comenzar con una letra o un carácter chino. Puede contener letras, números, caracteres chinos, guiones bajos (_), guiones (-) y puntos (.). |
|
NodeType |
String |
No |
No |
El tipo de nodo. |
Valores válidos:
Nota
Para instancias nativas de la nube, seleccione MASTER_SLAVE o STAND_ALONE. Para instancias clásicas, seleccione double o single. |
|
Password |
String |
No |
Sí |
La contraseña. |
La contraseña debe tener entre 8 y 30 caracteres. Debe incluir letras mayúsculas, letras minúsculas y números. |
|
Period |
Integer |
No |
Sí |
El ciclo de facturación. |
Valores válidos: de 1 a 9, 12, 24, 36 y 60. Unidad: meses. |
|
PeriodUnit |
String |
No |
Sí |
La unidad de duración. |
Valores válidos:
|
|
ProductType |
String |
No |
No |
El tipo de producto. |
Valores válidos:
Nota
Establezca la propiedad ProductType para acelerar las consultas de parámetros. |
|
ReadOnlyCount |
Integer |
No |
No |
El número de nodos de solo lectura en la zona principal. |
Nota
El parámetro ReadOnlyCount aplica únicamente a instancias nativas de la nube con división de lectura y escritura habilitada. Si la instancia utiliza una arquitectura de clúster, este parámetro indica el número de nodos de solo lectura (en zonas principales y secundarias) para un único fragmento. |
|
ResourceGroupId |
String |
No |
Sí |
El ID del resource group. |
Ninguna |
|
SecondaryZoneId |
String |
No |
Sí |
El ID de la zona secundaria. |
Puede llamar a la operación DescribeZones - Query Supported Zones. Nota
Este parámetro distribuye los nodos de datos principales y secundarios en distintas zonas. Esto permite la recuperación ante desastres entre zonas y tolera fallas a nivel de centro de datos. |
|
SecurityGroupId |
String |
No |
Sí |
El ID del security group. |
Establezca un máximo de 10 ID. Sepárelos con comas (,). |
|
ShardCount |
Integer |
No |
No |
El número de fragmentos. |
Este parámetro aplica únicamente a instancias basadas en disco con arquitectura de clúster. Utilícelo para personalizar el número de fragmentos. |
|
SSLEnabled |
String |
No |
Sí |
El estado de SSL. |
Valores válidos:
|
|
SubscriptionDeletionForce |
Boolean |
No |
No |
Esta opción aplica únicamente a instancias de suscripción. En dichas instancias, si esta opción es true, la instancia se convierte a pay-as-you-go antes de eliminarse. Si es false, el sistema no fuerza la eliminación. Esta operación genera cargos adicionales. Elija con cuidado. |
Ninguna |
|
Tags |
List |
No |
Sí |
Las etiquetas. |
Cada instancia admite un máximo de 20 etiquetas. Para más información, consulte Tags properties. |
|
TairConfig |
Map |
No |
No |
La configuración de Tair. |
Para más información, consulte TairConfig properties. |
|
TLSProtocol |
String |
No |
No |
La versión de TLS de la instancia. |
Valores válidos:
|
|
VpcId |
String |
No |
No |
El ID de la VPC. |
Ninguna |
|
VpcPasswordFree |
Boolean |
No |
No |
Habilita o deshabilita el acceso sin contraseña a las instancias dentro de una VPC. |
Valores válidos:
|
|
VSwitchId |
String |
No |
No |
El ID del vSwitch en la VPC. |
Ninguna |
|
ZoneId |
String |
No |
No |
El ID de la zona. |
Este parámetro es obligatorio al crear una instancia en una VPC. Cuando cree una instancia multizona, puede llamar a la operación de API DescribeZones para obtener los ID de multizona compatibles. |
Sintaxis de BackupPolicy
"BackupPolicy": {
"PreferredBackupPeriod": "String",
"PreferredBackupTime": "String",
"EnableBackupLog": "Integer"
}
Propiedades de BackupPolicy
|
Propiedad |
Tipo |
Obligatorio |
Editable |
Descripción |
Restricciones |
|
PreferredBackupPeriod |
String |
Sí |
Sí |
El ciclo de copia de seguridad. |
Valores válidos:
|
|
PreferredBackupTime |
String |
Sí |
Sí |
La hora de la copia de seguridad. |
Formato: |
|
EnableBackupLog |
Integer |
No |
Sí |
Habilita o deshabilita la copia de seguridad incremental. |
Valores válidos:
|
Sintaxis de InstanceMaintainTime
"InstanceMaintainTime": {
"MaintainStartTime": "String",
"MaintainEndTime": "String"
}
Propiedades de InstanceMaintainTime
|
Propiedad |
Tipo |
Obligatorio |
Editable |
Descripción |
Restricciones |
|
MaintainEndTime |
String |
No |
No |
La hora de finalización de la ventana de mantenimiento. |
Formato: Nota
El intervalo entre la hora de inicio y la de finalización debe ser de 1 hora. Por ejemplo, si MaintainStartTime es |
|
MaintainStartTime |
String |
No |
No |
La hora de inicio de la ventana de mantenimiento. |
Formato: |
Sintaxis de Tags
"Tags": [
{
"Key": String,
"Value": String
}
]
Propiedades de Tags
|
Propiedad |
Tipo |
Obligatorio |
Editable |
Descripción |
Restricciones |
|
Key |
String |
Sí |
No |
La clave de la etiqueta. |
La clave de la etiqueta debe ser única dentro de la misma cuenta y región. |
|
Value |
String |
No |
No |
El valor de la etiqueta. |
Ninguna |
Sintaxis de Connections
"Connections": {
"VpcPrivateConnection": "Map",
"ClassicInnerConnection": "Map",
"DirectConnection": "Map",
"PublicConnection": "Map"
}
Propiedades de Connections
|
Propiedad |
Tipo |
Obligatorio |
Editable |
Descripción |
Restricciones |
|
ClassicInnerConnection |
Map |
No |
Sí |
La dirección de red interna clásica. |
Para más información, consulte ClassicInnerConnection properties. |
|
DirectConnection |
Map |
No |
Sí |
La dirección de conexión directa. Corresponde a una instancia de clúster. Solicite endpoints de conexión directa según sea necesario. |
Para más información, consulte DirectConnection Properties. |
|
PublicConnection |
Map |
No |
Sí |
La dirección pública. |
Para más información, consulte PublicConnection properties. |
|
VpcPrivateConnection |
Map |
No |
Sí |
La dirección de red privada de la VPC. |
Para más información, consulte VpcPrivateConnection properties. |
Sintaxis de VpcPrivateConnection
"VpcPrivateConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}
Propiedades de VpcPrivateConnection
|
Propiedad |
Tipo |
Obligatorio |
Editable |
Descripción |
Restricciones |
|
ConnectionPort |
Integer |
Sí |
Sí |
El puerto de servicio de ApsaraDB de la instancia. |
Valores válidos: de 1024 a 65535. |
|
ConnectionString |
String |
No |
Sí |
El prefijo del endpoint público. |
El prefijo debe tener entre 8 y 64 caracteres, comenzar con una letra minúscula y contener únicamente letras minúsculas y números. |
Sintaxis de PublicConnection
"PublicConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}
Propiedades de PublicConnection
|
Propiedad |
Tipo |
Obligatorio |
Editable |
Descripción |
Restricciones |
|
ConnectionPort |
Integer |
Sí |
Sí |
El puerto de servicio de ApsaraDB de la instancia. |
Valores válidos: de 1024 a 65535. |
|
ConnectionString |
String |
No |
Sí |
El prefijo del endpoint público. |
El prefijo debe tener entre 8 y 64 caracteres, comenzar con una letra minúscula y contener únicamente letras minúsculas y números. |
Sintaxis de DirectConnection
"DirectConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}
Propiedades de DirectConnection
|
Propiedad |
Tipo |
Obligatorio |
Editable |
Descripción |
Restricciones |
|
ConnectionPort |
Integer |
Sí |
Sí |
El puerto de servicio de ApsaraDB de la instancia. |
Valores válidos: de 1024 a 65535. |
|
ConnectionString |
String |
No |
Sí |
El prefijo del endpoint público. |
El prefijo debe tener entre 8 y 64 caracteres, comenzar con una letra minúscula y contener únicamente letras minúsculas y números. |
Sintaxis de ClassicInnerConnection
"ClassicInnerConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}
Propiedades de ClassicInnerConnection
|
Propiedad |
Tipo |
Obligatorio |
Editable |
Descripción |
Restricciones |
|
ConnectionPort |
Integer |
Sí |
Sí |
El puerto de servicio de ApsaraDB de la instancia. |
Valores válidos: de 1024 a 65535. |
|
ConnectionString |
String |
No |
Sí |
El prefijo del endpoint público. |
El prefijo debe tener entre 8 y 64 caracteres, comenzar con una letra minúscula y contener únicamente letras minúsculas y números. |
Sintaxis de TairConfig
"TairConfig": {
"Storage": "Integer",
"StorageType": "String",
"ShardCount": "Integer"
}
Propiedades de TairConfig
|
Propiedad |
Tipo |
Obligatorio |
Editable |
Descripción |
Restricciones |
|
ShardCount |
Integer |
No |
No |
Número de nodos de datos en la instancia. |
Valores válidos:
|
|
Storage |
Integer |
No |
No |
Capacidad de almacenamiento del disco en la nube. |
La capacidad de almacenamiento varía según las especificaciones de la instancia. Para obtener más información, consulte ESSD/SSD-based instances. |
|
StorageType |
String |
No |
No |
Clase de almacenamiento. |
Valores válidos:
|
Valores de retorno
Fn::GetAtt
InstanceId: identificador de la instancia.
OrderId: identificador del pedido de la instancia.
ConnectionDomain: dirección de conexión privada de la instancia.
Port: puerto del servicio de Redis.
InstanceName: nombre de la instancia.
InstanceClass: tipo de la instancia.
VpcId: identificador de la VPC.
Capacity: capacidad de almacenamiento de la instancia.
InstanceType: versión del motor de base de datos de la instancia.
ChargeType: método de facturación de la instancia.
PackageType: tipo de plan.
Connections: número máximo de conexiones que admite la instancia.
ArchitectureType: tipo de arquitectura.
NodeType: tipo de nodo.
HasRenewChangeOrder: indica si la cuenta de Alibaba Cloud tiene pedidos pendientes de renovación o ampliación.
ResourceGroupId: identificador del resource group.
QPS: número de consultas por segundo (QPS). Corresponde al valor teórico para el tipo de instancia actual.
ZoneId: identificador de la zona a la que pertenece la instancia.
Bandwidth: ancho de banda de la instancia. Unidad: Mbps.
EngineVersion: versión del motor.
NetworkType: tipo de red.
VSwitchId: identificador del vSwitch.
PrivateIp: dirección IP privada de la instancia.
PublicConnectionString: cadena de conexión pública de la instancia.
VpcPrivateConnectionPort: puerto de conexión privada de la VPC.
ClassicInnerConnectionString: cadena de conexión interna clásica de la instancia.
VpcPrivateConnectionString: cadena de conexión privada de la VPC de la instancia.
PublicConnectionPort: puerto de conexión pública de la instancia.
DirectConnectionString: cadena de conexión directa de la instancia.
DirectConnectionPort: puerto de conexión directa de la instancia.
ClassicInnerConnectionPort: puerto de conexión interna clásica de la instancia.
Ejemplos
Escenario 1: crear una instancia de Redis.
ROSTemplateFormatVersion: '2015-09-01'
Description: {}
Parameters:
VpcId:
Type: String
AssociationProperty: ALIYUN::ECS::VPC::VpcId
ZoneId:
Type: String
Description:
zh-cn: Before creating an instance, confirm the Availability Zone supports Redis resource specifications.
en: Before creating an instance, confirm the Availability Zone supports Redis resource specifications.
AssociationProperty: ALIYUN::ECS::Instance:ZoneId
Label:
en: Zone ID
zh-cn: Zone ID
VSwitchId:
Type: String
AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
AssociationPropertyMetadata:
VpcId: ${VpcId}
ZoneId: ${ZoneId}
Resources:
RedisInstance:
Type: ALIYUN::REDIS::Instance
Properties:
VpcId:
Ref: VpcId
VSwitchId:
Ref: VSwitchId
InstanceClass: redis.master.small.default
EvictionPolicy: noeviction
ZoneId:
Ref: ZoneId
InstanceName: DefaultRedis
Password: Admin@123!
Outputs:
InstanceId:
Value:
Fn::GetAtt:
- RedisInstance
- InstanceId {
"ROSTemplateFormatVersion": "2015-09-01",
"Description": {
},
"Parameters": {
"VpcId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VPC::VpcId"
},
"ZoneId": {
"Type": "String",
"Description": {
"zh-cn": "Before creating an instance, confirm the Availability Zone supports Redis resource specifications.",
"en": "Before creating an instance, confirm the Availability Zone supports Redis resource specifications."
},
"AssociationProperty": "ALIYUN::ECS::Instance:ZoneId",
"Label": {
"en": "Zone ID",
"zh-cn": "Zone ID"
}
},
"VSwitchId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
"AssociationPropertyMetadata": {
"VpcId": "${VpcId}",
"ZoneId": "${ZoneId}"
}
}
},
"Resources": {
"RedisInstance": {
"Type": "ALIYUN::REDIS::Instance",
"Properties": {
"VpcId": {
"Ref": "VpcId"
},
"VSwitchId": {
"Ref": "VSwitchId"
},
"InstanceClass": "redis.master.small.default",
"EvictionPolicy": "noeviction",
"ZoneId": {
"Ref": "ZoneId"
},
"InstanceName": "DefaultRedis",
"Password": "Admin@123!"
}
}
},
"Outputs": {
"InstanceId": {
"Value": {
"Fn::GetAtt": [
"RedisInstance",
"InstanceId"
]
}
}
}
}Escenario 2: crear una instancia de Redis y agregar una lista blanca de direcciones IP.
ROSTemplateFormatVersion: '2015-09-01'
Description: {}
Parameters:
VpcId:
Type: String
AssociationProperty: ALIYUN::ECS::VPC::VpcId
ZoneId:
Type: String
Description:
zh-cn: Before creating an instance, confirm the Availability Zone supports Redis resource specifications.
en: Before creating an instance, confirm the Availability Zone supports Redis resource specifications.
AssociationProperty: ALIYUN::ECS::Instance:ZoneId
Label:
en: Zone ID
zh-cn: Zone ID
VSwitchId:
Type: String
AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
AssociationPropertyMetadata:
VpcId: ${VpcId}
ZoneId: ${ZoneId}
Resources:
RedisInstance:
Type: ALIYUN::REDIS::Instance
Properties:
VpcId:
Ref: VpcId
VSwitchId:
Ref: VSwitchId
InstanceClass: redis.master.small.default
EvictionPolicy: noeviction
ZoneId:
Ref: ZoneId
InstanceName: DefaultRedis
Password: Admin@123!
REDISWhitelist:
Type: ALIYUN::REDIS::Whitelist
Properties:
InstanceId:
Ref: RedisInstance
SecurityIps: 192.168.0.0/16
Outputs:
InstanceId:
Value:
Fn::GetAtt:
- RedisInstance
- InstanceId {
"ROSTemplateFormatVersion": "2015-09-01",
"Description": {},
"Parameters": {
"VpcId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VPC::VpcId"
},
"ZoneId": {
"Type": "String",
"Description": {
"zh-cn": "Before creating an instance, confirm the Availability Zone supports Redis resource specifications.",
"en": "Before creating an instance, confirm the Availability Zone supports Redis resource specifications."
},
"AssociationProperty": "ALIYUN::ECS::Instance:ZoneId",
"Label": {
"en": "Zone ID",
"zh-cn": "Zone ID"
}
},
"VSwitchId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
"AssociationPropertyMetadata": {
"VpcId": "${VpcId}",
"ZoneId": "${ZoneId}"
}
}
},
"Resources": {
"RedisInstance": {
"Type": "ALIYUN::REDIS::Instance",
"Properties": {
"VpcId": {
"Ref": "VpcId"
},
"VSwitchId": {
"Ref": "VSwitchId"
},
"InstanceClass": "redis.master.small.default",
"EvictionPolicy": "noeviction",
"ZoneId": {
"Ref": "ZoneId"
},
"InstanceName": "DefaultRedis",
"Password": "Admin@123!"
}
},
"REDISWhitelist": {
"Type": "ALIYUN::REDIS::Whitelist",
"Properties": {
"InstanceId": {
"Ref": "RedisInstance"
},
"SecurityIps": "192.168.0.0/16"
}
}
},
"Outputs": {
"InstanceId": {
"Value": {
"Fn::GetAtt": [
"RedisInstance",
"InstanceId"
]
}
}
}
}Escenario 3: usar DTS para sincronizar la caché entre MySQL y Redis.
ROSTemplateFormatVersion: '2015-09-01'
Description:
zh-cn: This template synchronizes MySQL and Redis caches using DTS. It creates and configures security for VPC, ECS, RDS, and Redis instances. It also establishes consumer groups to ensure data consistency.
en: This template synchronizes MySQL and Redis caches using DTS. It creates and configures security for VPC, ECS, RDS, and Redis instances. It also establishes consumer groups to ensure data consistency.
Parameters:
ZoneId:
Type: String
Label:
en: VSwitch Availability Zone
zh-cn: VSwitch Availability Zone
AssociationProperty: ALIYUN::ECS::Instance::ZoneId
RDSDBUser:
Type: String
Label:
en: RDS DB Username
zh-cn: RDS DB Username
Description:
en: Username of database.
zh-cn: Username of database.
ConstraintDescription:
en: Must contain 2 to 16 lowercase letters and underscores. It must start with a letter and end with an alphanumeric character.
zh-cn: Must contain 2 to 16 lowercase letters and underscores. It must start with a letter and end with an alphanumeric character.
Default: demouser123
MinLength: 2
MaxLength: 16
DbName:
Type: String
Label:
en: RDS DB Name
zh-cn: RDS DB Name
ConstraintDescription:
en: Must contain 2 to 16 lowercase letters and underscores. It must start with a letter and end with an alphanumeric character.
zh-cn: Must contain 2 to 16 lowercase letters and underscores. It must start with a letter and end with an alphanumeric character.
Default: demodb
Required: true
MinLength: 2
MaxLength: 16
RDSDBPassword:
Type: String
Label:
en: RDS DB Password
zh-cn: RDS DB Password
Description:
en: The RDS database password must be 8 to 32 characters long. It must contain letters, numbers, and underscores (_). It must also include three different character types.
zh-cn: The RDS database password must be 8 to 32 characters long. It must contain letters, numbers, and underscores (_). It must also include three different character types.
ConstraintDescription:
en: Must be 8 to 32 characters long. It must contain letters, numbers, and underscores (_).
zh-cn: Must be 8 to 32 characters long. It must contain letters, numbers, and underscores (_).
AssociationProperty: ALIYUN::RDS::Instance::AccountPassword
MinLength: 8
MaxLength: 32
NoEcho: true
DBInstanceClass:
Type: String
Label:
en: Instance Class
zh-cn: Instance Class
AssociationProperty: ALIYUN::RDS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: ${ZoneId}
EngineVersion: "8.0"
Engine: MySQL
Category: HighAvailability
DBInstanceStorageType: cloud_essd
CommodityCode: bards
Default: mysql.x4.medium.2c
DtsJobName:
Type: String
Label:
en: Dts Job Name
zh-cn: Dts Job Name
Description:
en: Set a name that reflects its business purpose for easy identification. Uniqueness is not required.
zh-cn: Set a name that reflects its business purpose for easy identification. Uniqueness is not required.
Default: mysql2redis_dts
RedisInstanceClass:
Type: String
Label:
en: Tair Specifications
zh-cn: Tair Specifications
Description:
en: <font color='blue'>Before selecting a model, confirm if the model is in stock in the current availability zone. To save testing costs, use a 2 GB memory model, such as tair.rdb.2g.</font> For more information, see <a href='https://www.alibabacloud.com/help/zh/redis/product-overview/enhanced-performance' target='_blank'><font color='red'>Specification inquiry</font></a>.
zh-cn: <font color='blue'>Before selecting a model, confirm if the model is in stock in the current availability zone. To save testing costs, use a 2 GB memory model, such as tair.rdb.2g.</font> For more information, see <a href='https://www.alibabacloud.com/help/zh/redis/product-overview/enhanced-performance' target='_blank'><font color='red'>Specification inquiry</font></a>.
AssociationProperty: ALIYUN::REDIS::Instance::InstanceClass
AssociationPropertyMetadata:
Engine: Redis
ProductType: Tair_rdb
InstanceChargeType: PostPaid
ZoneId: ${ZoneId1}
OrderType: BUY
Default: tair.rdb.2g
RedisPassword:
Type: String
Label:
en: Instance Password
zh-cn: Instance Password
Description:
en: Must be 8 to 32 characters long. It can contain uppercase and lowercase letters, numbers, and special symbols: ! @ # $ % ^ & * ( ) _ + - =
zh-cn: Must be 8 to 32 characters long. It can contain uppercase and lowercase letters, numbers, and special symbols: ! @ # $ % ^ & * ( ) _ + - =
ConstraintDescription:
en: Must be 8 to 32 characters long. It can contain uppercase and lowercase letters, numbers, and special symbols: ! @ # $ % ^ & * ( ) _ + - =
zh-cn: Must be 8 to 32 characters long. It can contain uppercase and lowercase letters, numbers, and special symbols: ! @ # $ % ^ & * ( ) _ + - =
MinLength: '8'
MaxLength: '32'
NoEcho: true
Resources:
Vpc:
Type: ALIYUN::ECS::VPC
Properties:
CidrBlock: 192.168.0.0/16
VSwitch:
Type: ALIYUN::ECS::VSwitch
Properties:
ZoneId:
Ref: ZoneId
VpcId:
Ref: Vpc
VSwitchName:
Fn::Join:
- '-'
- - VSwitch
- StackId
- Ref: ALIYUN::StackId
CidrBlock: 192.168.0.0/24
RdsDBInstance:
Type: ALIYUN::RDS::DBInstance
Properties:
ZoneId:
Ref: ZoneId
VpcId:
Ref: Vpc
VSwitchId:
Ref: VSwitch
DBInstanceClass:
Ref: DBInstanceClass
DBInstanceStorage: 100
Engine: MySQL
EngineVersion: "8.0"
MasterUserPassword:
Ref: RDSDBPassword
MasterUserType: Super
MasterUsername:
Ref: RDSDBUser
DBMappings:
- CharacterSetName: utf8mb4
DBName:
Ref: DbName
Category: HighAvailability
DBInstanceStorageType: cloud_essd
SecurityIPList: 192.168.0.0/16
SlaveZoneIds:
- Ref: ZoneId
RedisInstance:
Type: ALIYUN::REDIS::Instance
Properties:
ZoneId:
Ref: ZoneId
VpcId:
Ref: Vpc
VSwitchId:
Ref: VSwitch
InstanceClass:
Ref: RedisInstanceClass
InstanceName: rds_mysql2redis_redis
EvictionPolicy: noeviction
EngineVersion: '6.0'
Password:
Ref: RedisPassword
Whitelist:
Type: ALIYUN::REDIS::Whitelist
Properties:
InstanceId:
Ref: RedisInstance
SecurityIps: 192.168.0.0/16
MigrationJob:
Type: ALIYUN::DTS::SynchronizationJob2
Properties:
DtsJobName:
Ref: DtsJobName
SourceEndpoint:
InstanceType: RDS
InstanceID:
Ref: RdsDBInstance
EngineName: MYSQL
Region:
Ref: ALIYUN::Region
UserName:
Ref: RDSDBUser
Password:
Ref: RDSDBPassword
DestinationEndpoint:
InstanceType: Redis
InstanceID:
Ref: RedisInstance
EngineName: Redis
Region:
Ref: ALIYUN::Region
Password:
Ref: RedisPassword
StructureInitialization: false
DelayNotice: true
ErrorNotice: true
DelayRuleTime: 60
DataInitialization: true
DataSynchronization: true
DbList:
Fn::GetJsonValue:
- DbList
- Fn::Sub: '{ "DbList": { "${DbName}": { "name": "0", "all": true, "customAttachedColumn": { "__DTS_TP_TO_REDIS_KEY__": { "name": "__DTS_TP_TO_REDIS_KEY__", "syntacticType": "ADD", "value": "__DB__+''.''+__TB__+''.''+pk_str_with_name_value(''.'',''.'')", "type": "STRING", "length": "" }, "__DTS_TP_TO_REDIS_VALUE__": { "name": "__DTS_TP_TO_REDIS_VALUE__", "syntacticType": "ADD", "value": "tp2redis_json_value()", "type": "STRING", "length": "" } } }}}'
DtsInstance:
Type: ALIYUN::DTS::Instance
Properties:
JobId:
Fn::GetAtt:
- MigrationJob
- DtsJobId
InstanceClass: small
PayType: PostPaid
AutoStart: true
Type: SYNC
SourceRegion:
Ref: ALIYUN::Region
DestinationRegion:
Ref: ALIYUN::Region
SourceEndpointEngineName: MySQL
DestinationEndpointEngineName: Redis
Outputs:
RdsInstanceAddress:
Description:
en: RDS Instance Address.
zh-cn: RDS Instance Address.
Value:
'Fn::Sub':
- 'https://rds.console.alibabacloud.com/detail/${InstanceID}/basicInfo?region=${Region}'
- InstanceID:
Ref: RdsDBInstance
Region:
Ref: ALIYUN::Region
TairInstanceAddress:
Description:
en: Tair Instance Address.
zh-cn: Tair Instance Address.
Value:
'Fn::Sub':
- 'https://kvstore.console.alibabacloud.com/Redis/instance/${Region}/${InstanceID}'
- InstanceID:
Ref: RedisInstance
Region:
Ref: ALIYUN::Region
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups:
- Parameters:
- ZoneId
Label:
default:
en: Infrastructure Configuration (Required)
zh-cn: Infrastructure Configuration (Required)
- Parameters:
- DBInstanceClass
- DbName
- RDSDBUser
- RDSDBPassword
Label:
default: RDS
- Parameters:
- RedisInstanceClass
- RedisPassword
Label:
default: Tair
- Parameters:
- DtsJobName
Label:
default: DTS
TemplateTags:
- acs:technical-solution:database:real-time synchronization of RDS and Redis to build cache consistency-tech_solu_21
{
"ROSTemplateFormatVersion": "2015-09-01",
"Description": {
"zh-cn": "This template synchronizes MySQL and Redis caches using DTS. It creates and configures security for VPC, ECS, RDS, and Redis instances. It also establishes consumer groups to ensure data consistency.",
"en": "This template synchronizes MySQL and Redis caches using DTS. It creates and configures security for VPC, ECS, RDS, and Redis instances. It also establishes consumer groups to ensure data consistency."
},
"Parameters": {
"ZoneId": {
"Type": "String",
"Label": {
"en": "VSwitch Availability Zone",
"zh-cn": "VSwitch Availability Zone"
},
"AssociationProperty": "ALIYUN::ECS::Instance::ZoneId"
},
"RDSDBUser": {
"Type": "String",
"Label": {
"en": "RDS DB Username",
"zh-cn": "RDS DB Username"
},
"Description": {
"en": "Username of database.",
"zh-cn": "Username of database."
},
"ConstraintDescription": {
"en": "Must contain 2 to 16 lowercase letters and underscores. It must start with a letter and end with an alphanumeric character.",
"zh-cn": "Must contain 2 to 16 lowercase letters and underscores. It must start with a letter and end with an alphanumeric character."
},
"Default": "demouser123",
"MinLength": 2,
"MaxLength": 16
},
"DbName": {
"Type": "String",
"Label": {
"en": "RDS DB Name",
"zh-cn": "RDS DB Name"
},
"ConstraintDescription": {
"en": "Must contain 2 to 16 lowercase letters and underscores. It must start with a letter and end with an alphanumeric character.",
"zh-cn": "Must contain 2 to 16 lowercase letters and underscores. It must start with a letter and end with an alphanumeric character."
},
"Default": "demodb",
"Required": true,
"MinLength": 2,
"MaxLength": 16
},
"RDSDBPassword": {
"Type": "String",
"Label": {
"en": "RDS DB Password",
"zh-cn": "RDS DB Password"
},
"Description": {
"en": "The RDS database password must be 8 to 32 characters long. It must contain letters, numbers, and underscores (_). It must also include three different character types.",
"zh-cn": "The RDS database password must be 8 to 32 characters long. It must contain letters, numbers, and underscores (_). It must also include three different character types."
},
"ConstraintDescription": {
"en": "Must be 8 to 32 characters long. It must contain letters, numbers, and underscores (_).",
"zh-cn": "Must be 8 to 32 characters long. It must contain letters, numbers, and underscores (_)."
},
"AssociationProperty": "ALIYUN::RDS::Instance::AccountPassword",
"MinLength": 8,
"MaxLength": 32,
"NoEcho": true
},
"DBInstanceClass": {
"Type": "String",
"Label": {
"en": "Instance Class",
"zh-cn": "Instance Class"
},
"AssociationProperty": "ALIYUN::RDS::Instance::InstanceType",
"AssociationPropertyMetadata": {
"ZoneId": "${ZoneId}",
"EngineVersion": "8.0",
"Engine": "MySQL",
"Category": "HighAvailability",
"DBInstanceStorageType": "cloud_essd",
"CommodityCode": "bards"
},
"Default": "mysql.x4.medium.2c"
},
"DtsJobName": {
"Type": "String",
"Label": {
"en": "Dts Job Name",
"zh-cn": "Dts Job Name"
},
"Description": {
"en": "Set a name that reflects its business purpose for easy identification. Uniqueness is not required.",
"zh-cn": "Set a name that reflects its business purpose for easy identification. Uniqueness is not required."
},
"Default": "mysql2redis_dts"
},
"RedisInstanceClass": {
"Type": "String",
"Label": {
"en": "Tair Specifications",
"zh-cn": "Tair Specifications"
},
"Description": {
"en": "<font color='blue'>Before selecting a model, confirm if the model is in stock in the current availability zone. To save testing costs, use a 2 GB memory model, such as tair.rdb.2g.</font> For more information, see <a href='https://www.alibabacloud.com/help/zh/redis/product-overview/enhanced-performance' target='_blank'><font color='red'>Specification inquiry</font></a>.",
"zh-cn": "<font color='blue'>Before selecting a model, confirm if the model is in stock in the current availability zone. To save testing costs, use a 2 GB memory model, such as tair.rdb.2g.</font> For more information, see <a href='https://www.alibabacloud.com/help/zh/redis/product-overview/enhanced-performance' target='_blank'><font color='red'>Specification inquiry</font></a>."
},
"AssociationProperty": "ALIYUN::REDIS::Instance::InstanceClass",
"AssociationPropertyMetadata": {
"Engine": "Redis",
"ProductType": "Tair_rdb",
"InstanceChargeType": "PostPaid",
"ZoneId": "${ZoneId1}",
"OrderType": "BUY"
},
"Default": "tair.rdb.2g"
},
"RedisPassword": {
"Type": "String",
"Label": {
"en": "Instance Password",
"zh-cn": "Instance Password"
},
"Description": {
"en": "Must be 8 to 32 characters long. It can contain uppercase and lowercase letters, numbers, and special symbols: ! @ # $ % ^ & * ( ) _ + - =",
"zh-cn": "Must be 8 to 32 characters long. It can contain uppercase and lowercase letters, numbers, and special symbols: ! @ # $ % ^ & * ( ) _ + - ="
},
"ConstraintDescription": {
"en": "Must be 8 to 32 characters long. It can contain uppercase and lowercase letters, numbers, and special symbols: ! @ # $ % ^ & * ( ) _ + - =",
"zh-cn": "Must be 8 to 32 characters long. It can contain uppercase and lowercase letters, numbers, and special symbols: ! @ # $ % ^ & * ( ) _ + - ="
},
"MinLength": "8",
"MaxLength": "32",
"NoEcho": true
}
},
"Resources": {
"Vpc": {
"Type": "ALIYUN::ECS::VPC",
"Properties": {
"CidrBlock": "192.168.0.0/16"
}
},
"VSwitch": {
"Type": "ALIYUN::ECS::VSwitch",
"Properties": {
"ZoneId": {
"Ref": "ZoneId"
},
"VpcId": {
"Ref": "Vpc"
},
"VSwitchName": {
"Fn::Join": [
"-",
[
"VSwitch",
"StackId",
{
"Ref": "ALIYUN::StackId"
}
]
]
},
"CidrBlock": "192.168.0.0/24"
}
},
"RdsDBInstance": {
"Type": "ALIYUN::RDS::DBInstance",
"Properties": {
"ZoneId": {
"Ref": "ZoneId"
},
"VpcId": {
"Ref": "Vpc"
},
"VSwitchId": {
"Ref": "VSwitch"
},
"DBInstanceClass": {
"Ref": "DBInstanceClass"
},
"DBInstanceStorage": 100,
"Engine": "MySQL",
"EngineVersion": "8.0",
"MasterUserPassword": {
"Ref": "RDSDBPassword"
},
"MasterUserType": "Super",
"MasterUsername": {
"Ref": "RDSDBUser"
},
"DBMappings": [
{
"CharacterSetName": "utf8mb4",
"DBName": {
"Ref": "DbName"
}
}
],
"Category": "HighAvailability",
"DBInstanceStorageType": "cloud_essd",
"SecurityIPList": "192.168.0.0/16",
"SlaveZoneIds": [
{
"Ref": "ZoneId"
}
]
}
},
"RedisInstance": {
"Type": "ALIYUN::REDIS::Instance",
"Properties": {
"ZoneId": {
"Ref": "ZoneId"
},
"VpcId": {
"Ref": "Vpc"
},
"VSwitchId": {
"Ref": "VSwitch"
},
"InstanceClass": {
"Ref": "RedisInstanceClass"
},
"InstanceName": "rds_mysql2redis_redis",
"EvictionPolicy": "noeviction",
"EngineVersion": "6.0",
"Password": {
"Ref": "RedisPassword"
}
}
},
"Whitelist": {
"Type": "ALIYUN::REDIS::Whitelist",
"Properties": {
"InstanceId": {
"Ref": "RedisInstance"
},
"SecurityIps": "192.168.0.0/16"
}
},
"MigrationJob": {
"Type": "ALIYUN::DTS::SynchronizationJob2",
"Properties": {
"DtsJobName": {
"Ref": "DtsJobName"
},
"SourceEndpoint": {
"InstanceType": "RDS",
"InstanceID": {
"Ref": "RdsDBInstance"
},
"EngineName": "MYSQL",
"Region": {
"Ref": "ALIYUN::Region"
},
"UserName": {
"Ref": "RDSDBUser"
},
"Password": {
"Ref": "RDSDBPassword"
}
},
"DestinationEndpoint": {
"InstanceType": "Redis",
"InstanceID": {
"Ref": "RedisInstance"
},
"EngineName": "Redis",
"Region": {
"Ref": "ALIYUN::Region"
},
"Password": {
"Ref": "RedisPassword"
}
},
"StructureInitialization": false,
"DelayNotice": true,
"ErrorNotice": true,
"DelayRuleTime": 60,
"DataInitialization": true,
"DataSynchronization": true,
"DbList": {
"Fn::GetJsonValue": [
"DbList",
{
"Fn::Sub": "{ \"DbList\": { \"${DbName}\": { \"name\": \"0\", \"all\": true, \"customAttachedColumn\": { \"__DTS_TP_TO_REDIS_KEY__\": { \"name\": \"__DTS_TP_TO_REDIS_KEY__\", \"syntacticType\": \"ADD\", \"value\": \"__DB__+'.'+__TB__+'.'+pk_str_with_name_value('.','.')\", \"type\": \"STRING\", \"length\": \"\" }, \"__DTS_TP_TO_REDIS_VALUE__\": { \"name\": \"__DTS_TP_TO_REDIS_VALUE__\", \"syntacticType\": \"ADD\", \"value\": \"tp2redis_json_value()\", \"type\": \"STRING\", \"length\": \"\" } } }}}"
}
]
}
}
},
"DtsInstance": {
"Type": "ALIYUN::DTS::Instance",
"Properties": {
"JobId": {
"Fn::GetAtt": [
"MigrationJob",
"DtsJobId"
]
},
"InstanceClass": "small",
"PayType": "PostPaid",
"AutoStart": true,
"Type": "SYNC",
"SourceRegion": {
"Ref": "ALIYUN::Region"
},
"DestinationRegion": {
"Ref": "ALIYUN::Region"
},
"SourceEndpointEngineName": "MySQL",
"DestinationEndpointEngineName": "Redis"
}
}
},
"Outputs": {
"RdsInstanceAddress": {
"Description": {
"en": "RDS Instance Address.",
"zh-cn": "RDS Instance Address."
},
"Value": {
"Fn::Sub": [
"https://rds.console.alibabacloud.com/detail/${InstanceID}/basicInfo?region=${Region}",
{
"InstanceID": {
"Ref": "RdsDBInstance"
},
"Region": {
"Ref": "ALIYUN::Region"
}
}
]
}
},
"TairInstanceAddress": {
"Description": {
"en": "Tair Instance Address.",
"zh-cn": "Tair Instance Address."
},
"Value": {
"Fn::Sub": [
"https://kvstore.console.alibabacloud.com/Redis/instance/${Region}/${InstanceID}",
{
"InstanceID": {
"Ref": "RedisInstance"
},
"Region": {
"Ref": "ALIYUN::Region"
}
}
]
}
}
},
"Metadata": {
"ALIYUN::ROS::Interface": {
"ParameterGroups": [
{
"Parameters": [
"ZoneId"
],
"Label": {
"default": {
"en": "Infrastructure Configuration (Required)",
"zh-cn": "Infrastructure Configuration (Required)"
}
}
},
{
"Parameters": [
"DBInstanceClass",
"DbName",
"RDSDBUser",
"RDSDBPassword"
],
"Label": {
"default": "RDS"
}
},
{
"Parameters": [
"RedisInstanceClass",
"RedisPassword"
],
"Label": {
"default": "Tair"
}
},
{
"Parameters": [
"DtsJobName"
],
"Label": {
"default": "DTS"
}
}
],
"TemplateTags": [
"acs:technical-solution:database:real-time synchronization of RDS and Redis to build cache consistency-tech_solu_21"
]
}
}
}Para consultar más ejemplos, revise las plantillas públicas que contienen este recurso.