All Products
Search
Document Center

Resource Orchestration Service:ALIYUN::REDIS::Instance

Last Updated:Feb 07, 2026

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:

  • 2.8

    Catatan

    Telah dihentikan. Pilih versi lain.

  • 4.0

  • 5.0

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:

  • true: Aktifkan.

  • false (default): Nonaktifkan.

VpcId

String

Tidak

Tidak

ID VPC.

Tidak ada

EvictionPolicy

String

Tidak

Tidak

Kebijakan penggantian data.

Nilai yang valid:

  • noeviction: Jangan hapus kunci apa pun. Kembalikan error pada operasi tulis.

  • allkeys-lru: Menghapus kunci yang paling lama tidak digunakan terlebih dahulu.

  • volatile-lru: Hapus kunci yang paling jarang digunakan hanya dari kunci yang memiliki masa berlaku (expire).

  • allkeys-random: Hapus kunci secara acak.

  • volatile-random: Hapus kunci secara acak hanya dari kunci yang memiliki masa berlaku (expire).

  • volatile-ttl: Hapus kunci dengan masa hidup (TTL) terpendek hanya dari kunci yang memiliki masa berlaku (expire).

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:

  • Disable: Nonaktifkan SSL.

  • Fitur diaktifkan.

  • Update: Perbarui sertifikat.

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:

  • true: Hapus instans saat pemulihan.

  • false (default): Jangan hapus instans saat pemulihan.

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:

  • PostPaid (default): Pay-as-you-go.

  • PrePaid: Subscription.

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:

  • Local: Instans edisi open-source Redis (klasik) atau optimasi memori (klasik).

  • Tair_rdb: Optimasi memori (cloud-native).

  • Tair_scm: Memori persisten.

  • Tair_essd: Berbasis disk.

  • OnECS: Instans edisi open-source Redis (cloud-native).

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:

  • Year: Tahun.

  • Month: Bulan.

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:

  • MASTER_SLAVE: High availability (HA) (replika ganda).

  • STAND_ALONE: Replika tunggal.

  • double: Replika ganda.

  • single: Replika tunggal.

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:

  • true: Diaktifkan.

  • false: Dinonaktifkan.

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:

  • Monday: Senin.

  • Tuesday: Selasa.

  • Wednesday: Rabu.

  • Kamis.

  • Friday: Jumat.

  • Saturday: Sabtu.

  • Sunday: Minggu.

PreferredBackupTime

String

Ya

Ya

Waktu pencadangan.

Format: HH:mmZ-HH:mmZ.

EnableBackupLog

Integer

Tidak

Ya

Aktifkan atau nonaktifkan cadangan inkremental.

Nilai yang valid:

  • 1: Aktifkan.

  • 0 (default): Nonaktifkan.

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: HH:mmZ (UTC). Misalnya, untuk memulai pukul 01:00 (UTC+8), atur parameter ini ke 17:00Z.

MaintainEndTime

String

Tidak

Tidak

Waktu akhir jendela pemeliharaan.

Format: HH:mmZ (UTC). Misalnya, untuk berakhir pukul 02:00 (UTC+8), atur parameter ini ke 18:00Z.

Catatan

Interval antara waktu mulai dan waktu akhir harus 1 jam. Misalnya, jika MaintainStartTime adalah 17:00Z, maka MaintainEndTime adalah 18:00Z.

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:

  • essd_pl0

  • essd_pl1

  • essd_pl2

  • essd_pl3

ShardCount

Integer

Tidak

Tidak

Jumlah node data dalam instans.

Nilai yang valid:

  • 1: Nilai default. Ini menunjukkan bahwa instans yang dibuat menggunakan arsitektur standar dan hanya memiliki satu node data.

  • 2 hingga 32: Masukkan nilai dalam rentang ini untuk membuat instans arsitektur kluster dengan jumlah node data yang ditentukan.

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.

Buat cepat

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.

Buat cepat

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.

Buat cepat

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.