Tipe resource ALIYUN::REDIS::Instance digunakan untuk membuat instans Redis.
Sintaks
{
"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,
"Period": Integer,
"AutoRenewDuration": Integer,
"ProductType": String,
"SubscriptionDeletionForce": Boolean,
"SecondaryZoneId": String,
"ResourceGroupId": String,
"PeriodUnit": String,
"TairConfig": Map,
"ShardCount": Integer,
"NodeType": String,
"DeletionProtection": Boolean,
"ReadOnlyCount": Integer
}
}Properti
Nama Properti | Tipe | Wajib | Dapat Diperbarui | Deskripsi | Batasan |
EngineVersion | String | Tidak | Ya | Versi mesin database. | Nilai yang valid:
|
InstanceClass | String | Tidak | Ya | Tipe instans. | Untuk informasi selengkapnya, lihat Navigasi Tipe Instans dan FAQ. |
InstanceMaintainTime | Map | Tidak | Ya | Jendela pemeliharaan untuk instans. | Tidak ada |
Tags | List | Tidak | Ya | Tag. | Setiap instans mendukung maksimal 20 tag. Untuk informasi selengkapnya, lihat Properti Tags. |
VpcPasswordFree | Boolean | Tidak | Tidak | Aktifkan atau nonaktifkan akses tanpa password ke instans dalam VPC. | Nilai yang valid:
|
VpcId | String | Tidak | Tidak | ID VPC. | Tidak ada |
EvictionPolicy | String | Tidak | Tidak | Kebijakan penggantian data. | Nilai yang valid:
|
ZoneId | String | Tidak | Tidak | ID zona. | Parameter ini wajib saat membuat instans dalam VPC. Saat membuat instans multi-zona, Anda dapat memanggil operasi API DescribeZones - Query supported zones untuk mendapatkan ID multi-zona yang didukung. |
VSwitchId | String | Tidak | Tidak | ID vSwitch dalam VPC. | Tidak ada |
SecurityGroupId | String | Tidak | Ya | ID grup keamanan. | Maksimal 10 ID. Pisahkan ID dengan koma (,). |
Password | String | Tidak | Ya | Password. | Password harus terdiri dari 8 hingga 30 karakter dan mengandung huruf besar, huruf kecil, serta angka. |
SSLEnabled | String | Tidak | Ya | Status SSL. | Nilai yang valid:
|
InstanceName | String | Tidak | Ya | Nama instans. | Nama instans harus terdiri dari 2 hingga 128 karakter. Nama harus dimulai dengan huruf atau karakter Tionghoa, dan dapat mengandung huruf, angka, karakter Tionghoa, garis bawah (_), tanda hubung (-), dan titik (.). |
DeletionForce | Boolean | Tidak | Ya | Hapus instans saat pemulihan. | Nilai yang valid:
|
SubscriptionDeletionForce | Boolean | Tidak | Tidak | Opsi ini hanya berlaku untuk instans langganan. Untuk instans langganan, jika opsi ini bernilai true, instans akan dikonversi menjadi instans pay-as-you-go sebelum dihapus. Jika false, sistem tidak akan memaksa penghapusan. Operasi ini menimbulkan biaya tambahan. Pilih dengan hati-hati. | Tidak ada |
Connections | Map | Tidak | Ya | Alamat koneksi. | Untuk informasi selengkapnya, lihat Properti Connections. |
BackupPolicy | Map | Tidak | Ya | Kebijakan cadangan. | Untuk informasi selengkapnya, lihat Properti BackupPolicy. |
ChargeType | String | Tidak | Ya | Metode penagihan instans. | Nilai yang valid:
|
Period | Integer | Tidak | Ya | Siklus penagihan. | Nilai yang valid: 1 hingga 9, 12, 24, 36, 60. Unit: bulan. |
AutoRenewDuration | Integer | Tidak | Ya | Durasi perpanjangan otomatis. | Nilai yang valid: 1 hingga 12. Unit: bulan. Saat instans akan kedaluwarsa, instans tersebut akan diperpanjang secara otomatis sesuai durasi yang ditentukan oleh parameter ini. Catatan Parameter ini berlaku ketika ChargeType diatur ke PrePaid. |
ProductType | String | Tidak | Tidak | Tipe produk. | Nilai yang valid:
Catatan Atur properti ProductType untuk mempercepat kueri parameter. |
SecondaryZoneId | String | Tidak | Ya | ID zona sekunder. | Anda dapat memanggil operasi DescribeZones - Query Supported Zones. Catatan Parameter ini mendistribusikan node data primer dan sekunder di zona yang berbeda, sehingga memungkinkan pemulihan bencana lintas zona dan menoleransi kegagalan tingkat pusat data. |
ResourceGroupId | String | Tidak | Ya | ID kelompok sumber daya. | Tidak ada |
PeriodUnit | String | Tidak | Ya | Unit durasi. | Nilai yang valid:
|
TairConfig | Map | Tidak | Tidak | Konfigurasi Tair. | Untuk informasi selengkapnya, lihat Properti TairConfig. |
ReadOnlyCount | Integer | Tidak | Tidak | Jumlah node read-only di zona primer. | Catatan Parameter ReadOnlyCount hanya berlaku untuk instans cloud-native dengan pemisahan baca/tulis diaktifkan. Jika instans menggunakan arsitektur kluster, parameter ini menunjukkan jumlah node read-only (di zona primer dan sekunder) untuk satu shard. |
ShardCount | Integer | Tidak | Tidak | Jumlah shard. | Parameter ini hanya berlaku untuk instans arsitektur kluster berbasis disk. Gunakan parameter ini untuk menyesuaikan jumlah shard. |
NodeType | String | Tidak | Tidak | Tipe node. | Nilai yang valid:
Catatan Untuk instans cloud-native, pilih MASTER_SLAVE atau STAND_ALONE. Untuk instans klasik, pilih double atau single. |
DeletionProtection | Boolean | Tidak | Ya | Apakah perlindungan rilis diaktifkan. | Nilai yang valid:
|
Sintaks BackupPolicy
"BackupPolicy": {
"PreferredBackupPeriod": "String",
"PreferredBackupTime": "String",
"EnableBackupLog": "Integer"
}Properti BackupPolicy
Nama Properti | Tipe | Wajib | Dapat Diperbarui | Deskripsi | Batasan |
PreferredBackupPeriod | String | Ya | Ya | Siklus pencadangan. | Nilai yang valid:
|
PreferredBackupTime | String | Ya | Ya | Waktu pencadangan. | Format: |
EnableBackupLog | Integer | Tidak | Ya | Aktifkan atau nonaktifkan cadangan inkremental. | Nilai yang valid:
|
Sintaks InstanceMaintainTime
"InstanceMaintainTime": {
"MaintainStartTime": "String",
"MaintainEndTime": "String"
}Properti InstanceMaintainTime
Nama Properti | Tipe | Wajib | Dapat Diperbarui | Deskripsi | Batasan |
MaintainStartTime | String | Tidak | Tidak | Waktu mulai jendela pemeliharaan. | Format: |
MaintainEndTime | String | Tidak | Tidak | Waktu akhir jendela pemeliharaan. | Format: Catatan Interval antara waktu mulai dan waktu akhir harus 1 jam. Misalnya, jika MaintainStartTime adalah |
Sintaks Tags
"Tags": [
{
"Key": String,
"Value": String
}
] Properti Tags
Nama Properti | Tipe | Wajib | Dapat Diperbarui | Deskripsi | Batasan |
Key | String | Ya | Tidak | Kunci tag. | Kunci tag harus unik dalam akun dan wilayah yang sama. |
Value | String | Tidak | Tidak | Nilai tag. | Tidak ada |
Sintaks Connections
"Connections": {
"VpcPrivateConnection": "Map",
"ClassicInnerConnection": "Map",
"DirectConnection": "Map",
"PublicConnection": "Map"
}Properti Connections
Nama Properti | Tipe | Wajib | Dapat Diperbarui | Deskripsi | Batasan |
VpcPrivateConnection | Map | Tidak | Ya | Alamat jaringan pribadi VPC. | Untuk informasi selengkapnya, lihat Properti VpcPrivateConnection. |
ClassicInnerConnection | Map | Tidak | Ya | Alamat jaringan internal klasik. | Untuk informasi selengkapnya, lihat Properti ClassicInnerConnection. |
DirectConnection | Map | Tidak | Ya | Alamat koneksi langsung. Ini adalah instans kluster. Minta titik akhir koneksi langsung sesuai kebutuhan. | Untuk informasi selengkapnya, lihat Properti DirectConnection. |
PublicConnection | Map | Tidak | Ya | Alamat publik. | Untuk informasi selengkapnya, lihat Properti PublicConnection. |
Sintaks VpcPrivateConnection
"VpcPrivateConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}Properti VpcPrivateConnection
Nama Properti | Type | Wajib | Dapat Diperbarui | Deskripsi | Batasan |
ConnectionPort | Integer | Ya | Ya | Port layanan ApsaraDB untuk instans. | Nilai yang valid: 1024 hingga 65535. |
ConnectionString | String | Ya | Ya | Awalan titik akhir publik. | Awalan harus terdiri dari 8 hingga 64 karakter, dimulai dengan huruf kecil, dan hanya boleh mengandung huruf kecil serta angka. |
Sintaks PublicConnection
"PublicConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}Properti PublicConnection
Nama Properti | Tipe | Wajib | Dapat Diperbarui | Deskripsi | Batasan |
ConnectionPort | Integer | Ya | Ya | Port layanan ApsaraDB untuk instans. | Nilai yang valid: 1024 hingga 65535. |
ConnectionString | String | Ya | Ya | Awalan titik akhir publik. | Awalan harus terdiri dari 8 hingga 64 karakter, dimulai dengan huruf kecil, dan hanya boleh mengandung huruf kecil serta angka. |
Sintaks DirectConnection
"DirectConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}Properti DirectConnection
Nama Properti | Tipe | Wajib | Dapat Diperbarui | Deskripsi | Batasan |
ConnectionPort | Integer | Ya | Ya | Port layanan ApsaraDB untuk instans. | Nilai yang valid: 1024 hingga 65535. |
ConnectionString | String | Ya | Ya | Awalan titik akhir publik. | Awalan harus terdiri dari 8 hingga 64 karakter, dimulai dengan huruf kecil, dan hanya boleh mengandung huruf kecil serta angka. |
Sintaks ClassicInnerConnection
"ClassicInnerConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}Properti ClassicInnerConnection
Nama Properti | Type | Wajib | Dapat Diperbarui | Deskripsi | Batasan |
ConnectionPort | Integer | Ya | Ya | Port layanan ApsaraDB untuk instans. | Nilai yang valid: 1024 hingga 65535. |
ConnectionString | String | Ya | Ya | Awalan titik akhir publik. | Awalan harus terdiri dari 8 hingga 64 karakter, dimulai dengan huruf kecil, dan hanya boleh mengandung huruf kecil serta angka. |
Sintaks TairConfig
"TairConfig": {
"Storage": "Integer",
"StorageType": "String",
"ShardCount": "Integer"
}Properti TairConfig
Nama Properti | Tipe | Wajib | Dapat Diperbarui | Deskripsi | Batasan |
Storage | Integer | Tidak | Tidak | Kapasitas penyimpanan disk cloud. | Kapasitas penyimpanan bervariasi berdasarkan spesifikasi instans. Untuk informasi selengkapnya, lihat Spesifikasi instans berbasis disk. |
StorageType | String | Tidak | Tidak | Kelas penyimpanan. | Nilai yang valid:
|
ShardCount | Integer | Tidak | Tidak | Jumlah node data dalam instans. | Nilai yang valid:
|
Nilai Pengembalian
Fn::GetAtt
InstanceId: ID instans.
OrderId: ID pesanan instans.
ConnectionDomain: Alamat koneksi pribadi instans.
Port: Port layanan Redis.
InstanceName: Nama instans.
InstanceClass: Tipe instans.
VpcId: ID VPC.
Capacity: Kapasitas penyimpanan instans.
InstanceType: Versi mesin database instans.
ChargeType: Metode penagihan instans.
PackageType: Tipe paket.
Connections: Jumlah koneksi maksimum yang didukung oleh instans.
ArchitectureType: Tipe arsitektur.
NodeType: Tipe node.
HasRenewChangeOrder: Menunjukkan apakah Akun Alibaba Cloud memiliki pesanan perpanjangan atau skala keluar yang tertunda.
ResourceGroupId: ID kelompok sumber daya.
QPS: Jumlah permintaan per detik (QPS). Ini adalah nilai teoretis untuk tipe instans saat ini.
ZoneId: ID zona tempat instans berada.
Bandwidth: Bandwidth instans. Satuan: Mbps.
EngineVersion: Versi mesin.
NetworkType: Jenis jaringan.
VSwitchId: ID vSwitch.
PrivateIp: Alamat IP pribadi instans.
PublicConnectionString: String koneksi publik instans.
VpcPrivateConnectionPort: Port koneksi pribadi VPC.
ClassicInnerConnectionString: String koneksi internal klasik instans.
VpcPrivateConnectionString: String koneksi pribadi VPC instans.
PublicConnectionPort: Port koneksi publik instans.
DirectConnectionString: String koneksi langsung instans.
DirectConnectionPort: Port koneksi langsung instans.
ClassicInnerConnectionPort: Port koneksi internal klasik instans.
Contoh
Skenario 1: Buat instans Redis.
ROSTemplateFormatVersion: '2015-09-01'
Description: {}
Parameters:
VpcId:
Type: String
AssociationProperty: ALIYUN::ECS::VPC::VpcId
ZoneId:
Type: String
Description:
zh-cn: 创建实例前,请确认可用区是否支持Redis资源的规格。
en: Before creating an instance, confirm the Availability Zone supports Redis resource specifications.
AssociationProperty: ALIYUN::ECS::Instance:ZoneId
Label:
en: Zone ID
zh-cn: 可用区
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": "创建实例前,请确认可用区是否支持Redis资源的规格。",
"en": "Before creating an instance, confirm the Availability Zone supports Redis resource specifications."
},
"AssociationProperty": "ALIYUN::ECS::Instance:ZoneId",
"Label": {
"en": "Zone ID",
"zh-cn": "可用区"
}
},
"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"
]
}
}
}
}Skenario 2: Buat instans Redis dan tambahkan daftar putih IP.
ROSTemplateFormatVersion: '2015-09-01'
Description: {}
Parameters:
VpcId:
Type: String
AssociationProperty: ALIYUN::ECS::VPC::VpcId
ZoneId:
Type: String
Description:
zh-cn: 创建实例前,请确认可用区是否支持Redis资源的规格。
en: Before creating an instance, confirm the Availability Zone supports Redis resource specifications.
AssociationProperty: ALIYUN::ECS::Instance:ZoneId
Label:
en: Zone ID
zh-cn: 可用区
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": "创建实例前,请确认可用区是否支持Redis资源的规格。",
"en": "Before creating an instance, confirm the Availability Zone supports Redis resource specifications."
},
"AssociationProperty": "ALIYUN::ECS::Instance:ZoneId",
"Label": {
"en": "Zone ID",
"zh-cn": "可用区"
}
},
"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"
]
}
}
}
}Skenario 3: Gunakan DTS untuk menyinkronkan cache antara MySQL dan Redis.
ROSTemplateFormatVersion: '2015-09-01'
Description:
zh-cn: 该模板通过DTS实现MySQL与Redis的缓存同步,包括VPC、ECS、RDS、Redis实例创建及安全配置,同时设置消费组确保数据一致性。
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: 交换机可用区
AssociationProperty: ALIYUN::ECS::Instance::ZoneId
RDSDBUser:
Type: String
Label:
en: RDS DB Username
zh-cn: RDS数据库账号
Description:
en: Username of database.
zh-cn: RDS数据库账号。
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: 由 2 到 16 个小写字母组成,下划线。必须以字母开头,以字母数字字符结尾。
Default: demouser123
MinLength: 2
MaxLength: 16
DbName:
Type: String
Label:
en: RDS DB Name
zh-cn: RDS数据库名称
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: 由 2 到 16 个小写字母组成,下划线。必须以字母开头,以字母数字字符结尾。
Default: demodb
Required: true
MinLength: 2
MaxLength: 16
RDSDBPassword:
Type: String
Label:
en: RDS DB Password
zh-cn: RDS数据库密码
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: RDS数据库密码,由字母、数字、下划线(_)组成,长度为8~32个字符,必须包含3种不同类型的字符。
ConstraintDescription:
en: Must be 8 to 32 characters long. It must contain letters, numbers, and underscores (_).
zh-cn: 由字母、数字、下划线(_)组成,长度为8~32个字符。
AssociationProperty: ALIYUN::RDS::Instance::AccountPassword
MinLength: 8
MaxLength: 32
NoEcho: true
DBInstanceClass:
Type: String
Label:
en: Instance Class
zh-cn: 实例规格
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: 同步任务名称
Description:
en: Set a name that reflects its business purpose for easy identification. Uniqueness is not required.
zh-cn: 建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
Default: mysql2redis_dts
RedisInstanceClass:
Type: String
Label:
en: Tair Specifications
zh-cn: Tair 规格
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'>选择机型前请先确认当前可用区下该机型是否有库存,为节省测试成本,推荐使用2GB的规格,例如: tair.rdb.2g</font>,<a href='https://www.alibabacloud.com/help/zh/redis/product-overview/enhanced-performance' target='_blank'><font color='red'>规格查询</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: 实例密码
Description:
en: Must be 8 to 32 characters long. It can contain uppercase and lowercase letters, numbers, and special symbols: ! @ # $ % ^ & * ( ) _ + - =
zh-cn: 长度8-32个字符,可包含大小字母、数字及特殊符号(包含: !@#$%^&*()_+-=)
ConstraintDescription:
en: Must be 8 to 32 characters long. It can contain uppercase and lowercase letters, numbers, and special symbols: ! @ # $ % ^ & * ( ) _ + - =
zh-cn: 8-32个字符,可包含大小字母、数字及特殊符号(包含: !@#$%^&*()_+-=)
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实例地址。
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实例地址。
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: 基础资源配置(必填)
- 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": "该模板通过DTS实现MySQL与Redis的缓存同步,包括VPC、ECS、RDS、Redis实例创建及安全配置,同时设置消费组确保数据一致性。",
"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": "交换机可用区"
},
"AssociationProperty": "ALIYUN::ECS::Instance::ZoneId"
},
"RDSDBUser": {
"Type": "String",
"Label": {
"en": "RDS DB Username",
"zh-cn": "RDS数据库账号"
},
"Description": {
"en": "Username of database.",
"zh-cn": "RDS数据库账号。"
},
"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": "由 2 到 16 个小写字母组成,下划线。必须以字母开头,以字母数字字符结尾。"
},
"Default": "demouser123",
"MinLength": 2,
"MaxLength": 16
},
"DbName": {
"Type": "String",
"Label": {
"en": "RDS DB Name",
"zh-cn": "RDS数据库名称"
},
"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": "由 2 到 16 个小写字母组成,下划线。必须以字母开头,以字母数字字符结尾。"
},
"Default": "demodb",
"Required": true,
"MinLength": 2,
"MaxLength": 16
},
"RDSDBPassword": {
"Type": "String",
"Label": {
"en": "RDS DB Password",
"zh-cn": "RDS数据库密码"
},
"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": "RDS数据库密码,由字母、数字、下划线(_)组成,长度为8~32个字符,必须包含3种不同类型的字符。"
},
"ConstraintDescription": {
"en": "Must be 8 to 32 characters long. It must contain letters, numbers, and underscores (_).",
"zh-cn": "由字母、数字、下划线(_)组成,长度为8~32个字符。"
},
"AssociationProperty": "ALIYUN::RDS::Instance::AccountPassword",
"MinLength": 8,
"MaxLength": 32,
"NoEcho": true
},
"DBInstanceClass": {
"Type": "String",
"Label": {
"en": "Instance Class",
"zh-cn": "实例规格"
},
"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": "同步任务名称"
},
"Description": {
"en": "Set a name that reflects its business purpose for easy identification. Uniqueness is not required.",
"zh-cn": "建议配置具有业务意义的名称(无唯一性要求),便于后续识别。"
},
"Default": "mysql2redis_dts"
},
"RedisInstanceClass": {
"Type": "String",
"Label": {
"en": "Tair Specifications",
"zh-cn": "Tair 规格"
},
"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'>选择机型前请先确认当前可用区下该机型是否有库存,为节省测试成本,推荐使用2GB的规格,例如: tair.rdb.2g</font>,<a href='https://www.alibabacloud.com/help/zh/redis/product-overview/enhanced-performance' target='_blank'><font color='red'>规格查询</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": "实例密码"
},
"Description": {
"en": "Must be 8 to 32 characters long. It can contain uppercase and lowercase letters, numbers, and special symbols: ! @ # $ % ^ & * ( ) _ + - =",
"zh-cn": "长度8-32个字符,可包含大小字母、数字及特殊符号(包含: !@#$%^&*()_+-=)"
},
"ConstraintDescription": {
"en": "Must be 8 to 32 characters long. It can contain uppercase and lowercase letters, numbers, and special symbols: ! @ # $ % ^ & * ( ) _ + - =",
"zh-cn": "8-32个字符,可包含大小字母、数字及特殊符号(包含: !@#$%^&*()_+-=)"
},
"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实例地址。"
},
"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实例地址。"
},
"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": "基础资源配置(必填)"
}
}
},
{
"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"
]
}
}
}Untuk contoh lainnya, lihat templat publik yang berisi resource ini.