O tipo ALIYUN::REDIS::Instance cria instâncias do Redis.
Sintaxe
{
"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
}
}
Propriedades
|
Propriedade |
Tipo |
Obrigatório |
Editável |
Descrição |
Restrições |
|
AutoRenewDuration |
Integer |
Não |
Sim |
A duração da renovação automática. |
Valores válidos: 1 a 12. Unidade: meses. O sistema renova a instância automaticamente pelo período especificado neste parâmetro quando ela estiver prestes a expirar. Nota
Este parâmetro é válido quando ChargeType está definido como PrePaid. |
|
BackupPolicy |
Map |
Não |
Sim |
A política de backup. |
Para mais informações, consulte BackupPolicy properties. |
|
ChargeType |
String |
Não |
Sim |
O método de faturamento da instância. |
Valores válidos:
|
|
Connections |
Map |
Não |
Sim |
O endereço de conexão. |
Para mais informações, consulte Connections properties. |
|
DeletionForce |
Boolean |
Não |
Sim |
Exclua a instância após a recuperação. |
Valores válidos:
|
|
DeletionProtection |
Boolean |
Não |
Sim |
Indica se a proteção contra liberação está ativada. |
Valores válidos:
|
|
EngineVersion |
String |
Não |
Sim |
A versão do mecanismo de banco de dados. |
Valores válidos:
|
|
EvictionPolicy |
String |
Não |
Não |
A política de evição de dados. |
Valores válidos:
|
|
InstanceClass |
String |
Não |
Sim |
O tipo de instância. |
Para mais informações, consulte Instance Specifications Overview. |
|
InstanceMaintainTime |
Map |
Não |
Sim |
A janela de manutenção da instância. |
Para mais informações, consulte InstanceMaintainTime properties. |
|
InstanceName |
String |
Não |
Sim |
O nome da instância. |
O nome da instância deve ter de 2 a 128 caracteres. Deve começar com uma letra ou caractere chinês e pode conter letras, números, caracteres chineses, sublinhados (_), hifens (-) e pontos (.). |
|
NodeType |
String |
Não |
Não |
O tipo de nó. |
Valores válidos:
Nota
Para instâncias cloud-native, selecione MASTER_SLAVE ou STAND_ALONE. Para instâncias clássicas, selecione double ou single. |
|
Password |
String |
Não |
Sim |
A senha. |
A senha deve ter de 8 a 30 caracteres e conter letras maiúsculas, letras minúsculas e números. |
|
Period |
Integer |
Não |
Sim |
O ciclo de faturamento. |
Valores válidos: 1 a 9, 12, 24, 36, 60. Unidade: meses. |
|
PeriodUnit |
String |
Não |
Sim |
A unidade de duração. |
Valores válidos:
|
|
ProductType |
String |
Não |
Não |
O tipo de product. |
Valores válidos:
Nota
Defina a propriedade ProductType para acelerar as consultas de parâmetros. |
|
ReadOnlyCount |
Integer |
Não |
Não |
O número de nós de somente leitura na zona primária. |
Nota
O parâmetro ReadOnlyCount aplica-se apenas a instâncias cloud-native com divisão de leitura/gravação ativada. Se a instância usar uma arquitetura de cluster, este parâmetro indica o número de nós de somente leitura (nas zonas primária e secundária) para um único shard. |
|
ResourceGroupId |
String |
Não |
Sim |
O ID do grupo de recursos. |
Nenhuma |
|
SecondaryZoneId |
String |
Não |
Sim |
O ID da zona secundária. |
Você pode chamar a operação DescribeZones - Query Supported Zones. Nota
Este parâmetro distribui os nós de dados primários e secundários em diferentes zonas, permitindo a recuperação de desastres entre zonas e tolerando falhas no nível do data center. |
|
SecurityGroupId |
String |
Não |
Sim |
O ID do grupo de segurança. |
Defina no máximo 10 IDs. Separe os IDs com vírgulas (,). |
|
ShardCount |
Integer |
Não |
Não |
O número de shards. |
Este parâmetro aplica-se apenas a instâncias de arquitetura de cluster baseadas em disco. Use este parâmetro para personalizar o número de shards. |
|
SSLEnabled |
String |
Não |
Sim |
O status do SSL. |
Valores válidos:
|
|
SubscriptionDeletionForce |
Boolean |
Não |
Não |
Esta opção aplica-se apenas a instâncias de assinatura. Para instâncias de assinatura, se esta opção for true, a instância é convertida para uma instância de pagamento conforme o uso antes da exclusão. Se for false, o sistema não força a exclusão. Esta operação incorre em taxas adicionais. Escolha com cuidado. |
Nenhuma |
|
Tags |
List |
Não |
Sim |
Tags. |
Cada instância suporta no máximo 20 tags. Para mais informações, consulte Tags properties. |
|
TairConfig |
Map |
Não |
Não |
A configuração do Tair. |
Para mais informações, consulte TairConfig properties. |
|
TLSProtocol |
String |
Não |
Não |
A versão do TLS da instância. |
Valores válidos:
|
|
VpcId |
String |
Não |
Não |
O ID da VPC. |
Nenhuma |
|
VpcPasswordFree |
Boolean |
Não |
Não |
Ative ou desative o acesso sem senha às instâncias em uma VPC. |
Valores válidos:
|
|
VSwitchId |
String |
Não |
Não |
O ID do vSwitch na VPC. |
Nenhuma |
|
ZoneId |
String |
Não |
Não |
O ID da zona. |
Este parâmetro é obrigatório ao criar uma instância em uma VPC. Ao criar uma instância multizona, você pode chamar a operação de API DescribeZones para obter os IDs multizona suportados. |
Sintaxe de BackupPolicy
"BackupPolicy": {
"PreferredBackupPeriod": "String",
"PreferredBackupTime": "String",
"EnableBackupLog": "Integer"
}
Propriedades de BackupPolicy
|
Propriedade |
Tipo |
Obrigatório |
Editável |
Descrição |
Restrições |
|
PreferredBackupPeriod |
String |
Sim |
Sim |
O ciclo de backup. |
Valores válidos:
|
|
PreferredBackupTime |
String |
Sim |
Sim |
O horário de backup. |
Formato: |
|
EnableBackupLog |
Integer |
Não |
Sim |
Ative ou desative o backup incremental. |
Valores válidos:
|
Sintaxe de InstanceMaintainTime
"InstanceMaintainTime": {
"MaintainStartTime": "String",
"MaintainEndTime": "String"
}
Propriedades de InstanceMaintainTime
|
Propriedade |
Tipo |
Obrigatório |
Editável |
Descrição |
Restrições |
|
MaintainEndTime |
String |
Não |
Não |
O horário de término da janela de manutenção. |
Formato: Nota
O intervalo entre os horários de início e término deve ser de 1 hora. Por exemplo, se MaintainStartTime for |
|
MaintainStartTime |
String |
Não |
Não |
O horário de início da janela de manutenção. |
Formato: |
Sintaxe de Tags
"Tags": [
{
"Key": String,
"Value": String
}
]
Propriedades de Tags
|
Propriedade |
Tipo |
Obrigatório |
Editável |
Descrição |
Restrições |
|
Key |
String |
Sim |
Não |
A chave da tag. |
A chave da tag deve ser exclusiva na mesma conta e região. |
|
Value |
String |
Não |
Não |
O valor da tag. |
Nenhuma |
Sintaxe de Connections
"Connections": {
"VpcPrivateConnection": "Map",
"ClassicInnerConnection": "Map",
"DirectConnection": "Map",
"PublicConnection": "Map"
}
Propriedades de Connections
|
Propriedade |
Tipo |
Obrigatório |
Editável |
Descrição |
Restrições |
|
ClassicInnerConnection |
Map |
Não |
Sim |
O endereço de rede interna clássica. |
Para mais informações, consulte ClassicInnerConnection properties. |
|
DirectConnection |
Map |
Não |
Sim |
O endereço de conexão direta. Esta é uma instância de cluster. Solicite endpoints de conexão direta conforme necessário. |
Para mais informações, consulte DirectConnection Properties. |
|
PublicConnection |
Map |
Não |
Sim |
O endereço público. |
Para mais informações, consulte PublicConnection properties. |
|
VpcPrivateConnection |
Map |
Não |
Sim |
O endereço de rede privada da VPC. |
Para mais informações, consulte VpcPrivateConnection properties. |
Sintaxe de VpcPrivateConnection
"VpcPrivateConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}
Propriedades de VpcPrivateConnection
|
Propriedade |
Tipo |
Obrigatório |
Editável |
Descrição |
Restrições |
|
ConnectionPort |
Integer |
Sim |
Sim |
A porta de service do ApsaraDB da instância. |
Valores válidos: 1024 a 65535. |
|
ConnectionString |
String |
Não |
Sim |
O prefixo do endpoint público. |
O prefixo deve ter de 8 a 64 caracteres, começar com uma letra minúscula e conter apenas letras minúsculas e números. |
Sintaxe de PublicConnection
"PublicConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}
Propriedades de PublicConnection
|
Propriedade |
Tipo |
Obrigatório |
Editável |
Descrição |
Restrições |
|
ConnectionPort |
Integer |
Sim |
Sim |
A porta de service do ApsaraDB da instância. |
Valores válidos: 1024 a 65535. |
|
ConnectionString |
String |
Não |
Sim |
O prefixo do endpoint público. |
O prefixo deve ter de 8 a 64 caracteres, começar com uma letra minúscula e conter apenas letras minúsculas e números. |
Sintaxe de DirectConnection
"DirectConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}
Propriedades de DirectConnection
|
Propriedade |
Tipo |
Obrigatório |
Editável |
Descrição |
Restrições |
|
ConnectionPort |
Integer |
Sim |
Sim |
A porta de service do ApsaraDB da instância. |
Valores válidos: 1024 a 65535. |
|
ConnectionString |
String |
Não |
Sim |
O prefixo do endpoint público. |
O prefixo deve ter de 8 a 64 caracteres, começar com uma letra minúscula e conter apenas letras minúsculas e números. |
Sintaxe de ClassicInnerConnection
"ClassicInnerConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}
Propriedades de ClassicInnerConnection
|
Propriedade |
Tipo |
Obrigatório |
Editável |
Descrição |
Restrições |
|
ConnectionPort |
Integer |
Sim |
Sim |
A porta de service do ApsaraDB da instância. |
Valores válidos: 1024 a 65535. |
|
ConnectionString |
String |
Não |
Sim |
O prefixo do endpoint público. |
O prefixo deve ter de 8 a 64 caracteres, começar com uma letra minúscula e conter apenas letras minúsculas e números. |
Sintaxe de TairConfig
"TairConfig": {
"Storage": "Integer",
"StorageType": "String",
"ShardCount": "Integer"
}
Propriedades de TairConfig
|
Propriedade |
Tipo |
Obrigatório |
Editável |
Descrição |
Restrições |
|
ShardCount |
Integer |
Não |
Não |
O número de nós de dados na instância. |
Valores válidos:
|
|
Storage |
Integer |
Não |
Não |
A capacidade de armazenamento do disco em cloud. |
A capacidade de armazenamento varia de acordo com as especificações da instância. Para mais informações, consulte ESSD/SSD-based instances. |
|
StorageType |
String |
Não |
Não |
A classe de armazenamento. |
Valores válidos:
|
Valores de retorno
Fn::GetAtt
InstanceId: o ID da instância.
OrderId: o ID do pedido da instância.
ConnectionDomain: o endereço de conexão privada da instância.
Port: a porta de service do Redis.
InstanceName: o nome da instância.
InstanceClass: o tipo de instância.
VpcId: o ID da VPC.
Capacity: a capacidade de armazenamento da instância.
InstanceType: a versão do mecanismo de banco de dados da instância.
ChargeType: o método de faturamento da instância.
PackageType: o tipo de plano.
Connections: o número máximo de conexões suportadas pela instância.
ArchitectureType: o tipo de arquitetura.
NodeType: o tipo de nó.
HasRenewChangeOrder: indica se a conta Alibaba Cloud tem pedidos pendentes de renovação ou de expansão.
ResourceGroupId: o ID do grupo de recursos.
QPS: o número de consultas por segundo (QPS). Este é o valor teórico para o tipo de instância atual.
ZoneId: o ID da zona à qual a instância pertence.
Bandwidth: a largura de banda da instância. Unidade: Mbps.
EngineVersion: a versão do mecanismo.
NetworkType: o tipo de rede.
VSwitchId: o ID do vSwitch.
PrivateIp: o endereço IP privado da instância.
PublicConnectionString: a string de conexão pública da instância.
VpcPrivateConnectionPort: a porta de conexão privada da VPC.
ClassicInnerConnectionString: a string de conexão interna clássica da instância.
VpcPrivateConnectionString: a string de conexão privada da VPC da instância.
PublicConnectionPort: a porta de conexão pública da instância.
DirectConnectionString: a string de conexão direta da instância.
DirectConnectionPort: a porta de conexão direta da instância.
ClassicInnerConnectionPort: a porta de conexão interna clássica da instância.
Exemplos
Cenário 1: crie uma instância do 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"
]
}
}
}
}Cenário 2: crie uma instância do Redis e adicionar uma lista de permissões de 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"
]
}
}
}
}Cenário 3: usar o DTS para sincronizar o cache entre MySQL e 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://rdsnext.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://rdsnext.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 mais exemplos, consulte modelos públicos contendo este recurso.