Microsoft. DocumentDB mongoClusters

Definisi sumber daya Bicep

Jenis sumber daya mongoClusters dapat disebarkan dengan operasi yang menargetkan:

  • Grup sumber daya - Lihat perintah penyebaran grup sumber daya

Untuk daftar properti yang diubah di setiap versi API, lihat mengubah log.

Contoh Penggunaan

Modul Terverifikasi Azure

Modul Terverifikasi Azure berikut dapat digunakan untuk menyebarkan jenis sumber daya ini.

Modul Deskripsi
Cosmos DB for MongoDB (vCore) Modul Sumber Daya AVM untuk Cosmos DB untuk MongoDB (vCore)

Format sumber daya

Untuk membuat sumber daya Microsoft.DocumentDB/mongoClusters, tambahkan Bicep berikut ke templat Anda.

resource symbolicname 'Microsoft.DocumentDB/mongoClusters@2026-06-01' = {
  identity: {
    type: 'string'
    userAssignedIdentities: {
      {customized property}: {}
    }
  }
  location: 'string'
  name: 'string'
  properties: {
    administrator: {
      password: 'string'
      userName: 'string'
    }
    authConfig: {
      allowedModes: [
        'string'
      ]
    }
    backup: {}
    compute: {
      tier: 'string'
    }
    createMode: 'string'
    dataApi: {
      mode: 'string'
    }
    encryption: {
      customerManagedKeyEncryption: {
        keyEncryptionKeyIdentity: {
          identityType: 'string'
          userAssignedIdentityResourceId: 'string'
        }
        keyEncryptionKeyUrl: 'string'
      }
    }
    highAvailability: {
      targetMode: 'string'
    }
    networkBypassMode: 'string'
    previewFeatures: [
      'string'
    ]
    publicNetworkAccess: 'string'
    replicaParameters: {
      sourceLocation: 'string'
      sourceResourceId: 'string'
    }
    restoreParameters: {
      pointInTimeUTC: 'string'
      sourceResourceId: 'string'
    }
    serverVersion: 'string'
    sharding: {
      shardCount: int
    }
    storage: {
      sizeGb: int
      type: 'string'
    }
  }
  tags: {
    {customized property}: 'string'
  }
}

Nilai Properti

Microsoft.DocumentDB/mongoClusters

Nama Deskripsi Nilai
identitas Identitas layanan terkelola yang ditetapkan ke sumber daya ini. managedServiceIdentity
lokasi Lokasi geografis tempat sumber daya berada string (diperlukan)
Nama Nama sumber daya tali

Kendala:
Panjang min = 3
Panjang maksimum = 40
Pola = ^[a-z0-9]+(-[a-z0-9]+)* (diperlukan)
Properti Properti khusus sumber daya untuk sumber daya ini. mongoClusterProperties
Tags Tag sumber daya Kamus nama dan nilai tag. Lihat Tag dalam templat

Properti Administrator

Nama Deskripsi Nilai
kata sandi Kata sandi administrator. tali

Kendala:
Nilai sensitif. Teruskan sebagai parameter aman.
userName Nama pengguna administrator. string

AuthConfigProperties

Nama Deskripsi Nilai
mode yang diizinkan Mode autentikasi yang diizinkan untuk akses data pada kluster. Array string yang berisi salah satu dari:
'MicrosoftEntraID'
'NativeAuth'

Properti Cadangan

Nama Deskripsi Nilai

Properti Komputasi

Nama Deskripsi Nilai
Tier Tingkat komputasi untuk ditetapkan ke kluster, di mana setiap tingkatan memetakan ke ukuran virtual-core dan memori. Contoh nilai: 'M30', 'M40'. string

CustomerManagedKeyEncryptionProperties

Nama Deskripsi Nilai
keyEncryptionKeyIdentity Identitas yang digunakan untuk mengakses kunci enkripsi kunci. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl URI kunci brankas kunci yang digunakan untuk enkripsi. string

DataApiProperties

Nama Deskripsi Nilai
modus Mode untuk menunjukkan apakah API Data Mongo diaktifkan untuk kluster. 'Dinonaktifkan'
'Diaktifkan'

EncryptionProperties

Nama Deskripsi Nilai
customerManagedKeyEncryption Pengaturan enkripsi kunci yang dikelola pelanggan. CustomerManagedKeyEncryptionProperties

Ketersediaan TinggiProperti

Nama Deskripsi Nilai
Mode target Mode ketersediaan tinggi target yang diminta untuk kluster. 'Dinonaktifkan'
'Zona yang Sama'
'ZonaRedundantLebih Disukai'

KeyEncryptionKeyIdentity

Nama Deskripsi Nilai
identitasType Jenis identitas. Hanya 'UserAssignedIdentity' yang didukung. 'Identitas yang Ditetapkan Pengguna'
userAssignedIdentityResourceId Pengguna menetapkan id sumber daya identitas. string

Identitas Layanan Terkelola

Nama Deskripsi Nilai
jenis Jenis identitas layanan terkelola (di mana jenis SystemAssigned dan UserAssigned diizinkan). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (wajib)
identitasYangDitetapkanPengguna Kumpulan identitas yang ditetapkan pengguna yang terkait dengan sumber daya. Kunci kamus userAssignedIdentities akan menjadi id sumber daya ARM dalam formulir: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Nilai kamus dapat berupa objek kosong ({}) dalam permintaan. UserAssignedIdentities

MongoClusterProperties

Nama Deskripsi Nilai
administrator Properti administrator lokal untuk kluster mongo. AdministratorProperti
authConfig Konfigurasi autentikasi untuk kluster. AuthConfigProperties
cadangan Properti cadangan kluster mongo. BackupProperties
komputasi Properti komputasi kluster mongo. ComputeProperties
createMode Mode untuk membuat kluster mongo. Bawaan
'GeoReplica'
'PointInTimeRestore'
'Replika'
dataApi Properti API Data dari kluster mongo. DataApiProperties
enkripsi Konfigurasi enkripsi untuk kluster. Tergantung pada identitas yang sedang dikonfigurasi. EncryptionProperties
Ketersediaan tinggi Properti ketersediaan tinggi dari kluster mongo. Ketersediaan TinggiProperti
jaringanMode Bypass Mode bypass jaringan untuk kluster. Pengaturan ke 'AzureCosmosDB' memungkinkan layanan Azure Cosmos DB untuk melewati batasan jaringan. 'AzureCosmosDB'
'None'
pratinjauFitur Daftar koneksi titik akhir privat. Array string yang berisi salah satu dari:
'Replika Geografis'
publikAkses Jaringan Apakah akses titik akhir publik diizinkan untuk kluster mongo ini atau tidak. 'Dinonaktifkan'
'Diaktifkan'
Parameter replika Parameter untuk membuat kluster mongo replika. MongoClusterReplicaParameters
memulihkanParameter Parameter untuk membuat kluster mongo pemulihan titik waktu. MongoClusterRestoreParameters
serverVersi Versi server Mongo DB. Default ke versi terbaru yang tersedia jika tidak ditentukan. string
sharding (pembagian data) Properti sharding kluster mongo. Properti Sharding
penyimpanan Properti penyimpanan kluster mongo. StorageProperties

MongoClusterReplicaParameters

Nama Deskripsi Nilai
lokasi sumber Lokasi kluster sumber string (diperlukan)
sourceResourceId Id kluster sumber replikasi. string (diperlukan)

MongoClusterRestoreParameters

Nama Deskripsi Nilai
pointInTimeUTC Titik waktu UTC untuk memulihkan kluster mongo string
sourceResourceId ID sumber daya untuk menemukan kluster sumber yang akan dipulihkan string

Properti Sharding

Nama Deskripsi Nilai
Hitungan pecahan Jumlah pecahan yang akan disediakan pada kluster. Int

Properti Penyimpanan

Nama Deskripsi Nilai
ukuranGb Ukuran disk data yang ditetapkan untuk setiap server. Int
jenis Jenis penyimpanan untuk menyediakan server kluster. 'SSD Premium'
'PremiumSSDv2'

TrackedResourceTags

Nama Deskripsi Nilai

UserAssignedIdentities

Nama Deskripsi Nilai

IdentitasDitugaskanPengguna

Nama Deskripsi Nilai

Definisi sumber daya templat ARM

Jenis sumber daya mongoClusters dapat disebarkan dengan operasi yang menargetkan:

Contoh Penggunaan

Format sumber daya

Untuk membuat sumber daya Microsoft.DocumentDB/mongoClusters, tambahkan JSON berikut ke templat Anda.

{
  "type": "Microsoft.DocumentDB/mongoClusters",
  "apiVersion": "2026-06-01",
  "name": "string",
  "identity": {
    "type": "string",
    "userAssignedIdentities": {
      "{customized property}": {
      }
    }
  },
  "location": "string",
  "properties": {
    "administrator": {
      "password": "string",
      "userName": "string"
    },
    "authConfig": {
      "allowedModes": [ "string" ]
    },
    "backup": {
    },
    "compute": {
      "tier": "string"
    },
    "createMode": "string",
    "dataApi": {
      "mode": "string"
    },
    "encryption": {
      "customerManagedKeyEncryption": {
        "keyEncryptionKeyIdentity": {
          "identityType": "string",
          "userAssignedIdentityResourceId": "string"
        },
        "keyEncryptionKeyUrl": "string"
      }
    },
    "highAvailability": {
      "targetMode": "string"
    },
    "networkBypassMode": "string",
    "previewFeatures": [ "string" ],
    "publicNetworkAccess": "string",
    "replicaParameters": {
      "sourceLocation": "string",
      "sourceResourceId": "string"
    },
    "restoreParameters": {
      "pointInTimeUTC": "string",
      "sourceResourceId": "string"
    },
    "serverVersion": "string",
    "sharding": {
      "shardCount": "int"
    },
    "storage": {
      "sizeGb": "int",
      "type": "string"
    }
  },
  "tags": {
    "{customized property}": "string"
  }
}

Nilai Properti

Microsoft.DocumentDB/mongoClusters

Nama Deskripsi Nilai
apiVersi Versi api '2026-06-01'
identitas Identitas layanan terkelola yang ditetapkan ke sumber daya ini. managedServiceIdentity
lokasi Lokasi geografis tempat sumber daya berada string (diperlukan)
Nama Nama sumber daya tali

Kendala:
Panjang min = 3
Panjang maksimum = 40
Pola = ^[a-z0-9]+(-[a-z0-9]+)* (diperlukan)
Properti Properti khusus sumber daya untuk sumber daya ini. mongoClusterProperties
Tags Tag sumber daya Kamus nama dan nilai tag. Lihat Tag dalam templat
jenis Jenis sumber daya 'Microsoft.DocumentDB/mongoClusters'

Properti Administrator

Nama Deskripsi Nilai
kata sandi Kata sandi administrator. tali

Kendala:
Nilai sensitif. Teruskan sebagai parameter aman.
userName Nama pengguna administrator. string

AuthConfigProperties

Nama Deskripsi Nilai
mode yang diizinkan Mode autentikasi yang diizinkan untuk akses data pada kluster. Array string yang berisi salah satu dari:
'MicrosoftEntraID'
'NativeAuth'

Properti Cadangan

Nama Deskripsi Nilai

Properti Komputasi

Nama Deskripsi Nilai
Tier Tingkat komputasi untuk ditetapkan ke kluster, di mana setiap tingkatan memetakan ke ukuran virtual-core dan memori. Contoh nilai: 'M30', 'M40'. string

CustomerManagedKeyEncryptionProperties

Nama Deskripsi Nilai
keyEncryptionKeyIdentity Identitas yang digunakan untuk mengakses kunci enkripsi kunci. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl URI kunci brankas kunci yang digunakan untuk enkripsi. string

DataApiProperties

Nama Deskripsi Nilai
modus Mode untuk menunjukkan apakah API Data Mongo diaktifkan untuk kluster. 'Dinonaktifkan'
'Diaktifkan'

EncryptionProperties

Nama Deskripsi Nilai
customerManagedKeyEncryption Pengaturan enkripsi kunci yang dikelola pelanggan. CustomerManagedKeyEncryptionProperties

Ketersediaan TinggiProperti

Nama Deskripsi Nilai
Mode target Mode ketersediaan tinggi target yang diminta untuk kluster. 'Dinonaktifkan'
'Zona yang Sama'
'ZonaRedundantLebih Disukai'

KeyEncryptionKeyIdentity

Nama Deskripsi Nilai
identitasType Jenis identitas. Hanya 'UserAssignedIdentity' yang didukung. 'Identitas yang Ditetapkan Pengguna'
userAssignedIdentityResourceId Pengguna menetapkan id sumber daya identitas. string

Identitas Layanan Terkelola

Nama Deskripsi Nilai
jenis Jenis identitas layanan terkelola (di mana jenis SystemAssigned dan UserAssigned diizinkan). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (wajib)
identitasYangDitetapkanPengguna Kumpulan identitas yang ditetapkan pengguna yang terkait dengan sumber daya. Kunci kamus userAssignedIdentities akan menjadi id sumber daya ARM dalam formulir: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Nilai kamus dapat berupa objek kosong ({}) dalam permintaan. UserAssignedIdentities

MongoClusterProperties

Nama Deskripsi Nilai
administrator Properti administrator lokal untuk kluster mongo. AdministratorProperti
authConfig Konfigurasi autentikasi untuk kluster. AuthConfigProperties
cadangan Properti cadangan kluster mongo. BackupProperties
komputasi Properti komputasi kluster mongo. ComputeProperties
createMode Mode untuk membuat kluster mongo. Bawaan
'GeoReplica'
'PointInTimeRestore'
'Replika'
dataApi Properti API Data dari kluster mongo. DataApiProperties
enkripsi Konfigurasi enkripsi untuk kluster. Tergantung pada identitas yang sedang dikonfigurasi. EncryptionProperties
Ketersediaan tinggi Properti ketersediaan tinggi dari kluster mongo. Ketersediaan TinggiProperti
jaringanMode Bypass Mode bypass jaringan untuk kluster. Pengaturan ke 'AzureCosmosDB' memungkinkan layanan Azure Cosmos DB untuk melewati batasan jaringan. 'AzureCosmosDB'
'None'
pratinjauFitur Daftar koneksi titik akhir privat. Array string yang berisi salah satu dari:
'Replika Geografis'
publikAkses Jaringan Apakah akses titik akhir publik diizinkan untuk kluster mongo ini atau tidak. 'Dinonaktifkan'
'Diaktifkan'
Parameter replika Parameter untuk membuat kluster mongo replika. MongoClusterReplicaParameters
memulihkanParameter Parameter untuk membuat kluster mongo pemulihan titik waktu. MongoClusterRestoreParameters
serverVersi Versi server Mongo DB. Default ke versi terbaru yang tersedia jika tidak ditentukan. string
sharding (pembagian data) Properti sharding kluster mongo. Properti Sharding
penyimpanan Properti penyimpanan kluster mongo. StorageProperties

MongoClusterReplicaParameters

Nama Deskripsi Nilai
lokasi sumber Lokasi kluster sumber string (diperlukan)
sourceResourceId Id kluster sumber replikasi. string (diperlukan)

MongoClusterRestoreParameters

Nama Deskripsi Nilai
pointInTimeUTC Titik waktu UTC untuk memulihkan kluster mongo string
sourceResourceId ID sumber daya untuk menemukan kluster sumber yang akan dipulihkan string

Properti Sharding

Nama Deskripsi Nilai
Hitungan pecahan Jumlah pecahan yang akan disediakan pada kluster. Int

Properti Penyimpanan

Nama Deskripsi Nilai
ukuranGb Ukuran disk data yang ditetapkan untuk setiap server. Int
jenis Jenis penyimpanan untuk menyediakan server kluster. 'SSD Premium'
'PremiumSSDv2'

TrackedResourceTags

Nama Deskripsi Nilai

UserAssignedIdentities

Nama Deskripsi Nilai

IdentitasDitugaskanPengguna

Nama Deskripsi Nilai

Definisi sumber daya Terraform (penyedia AzAPI)

Jenis sumber daya mongoClusters dapat disebarkan dengan operasi yang menargetkan:

  • Grup sumber daya Untuk daftar properti yang diubah di setiap versi API, lihat log perubahan.

Contoh Penggunaan

Sampel Terraform

Contoh dasar penyebaran Azure Cosmos DB untuk MongoDB (vCore).

terraform {
  required_providers {
    azapi = {
      source = "Azure/azapi"
    }
    time = {
      source = "hashicorp/time"
    }
  }
}

provider "azapi" {
  skip_provider_registration = false
}

variable "resource_name" {
  type    = string
  default = "acctest0001"
}

variable "location" {
  type    = string
  default = "westus3"
}

variable "replica_location" {
  type    = string
  default = "centralus"
}

variable "mongo_admin_username" {
  type    = string
  default = "mongoAdmin"
}

variable "mongo_admin_password" {
  type        = string
  description = "The administrator password for the MongoDB cluster"
  sensitive   = true
}

variable "mongo_restore_admin_password" {
  type        = string
  description = "The administrator password for the restored MongoDB cluster"
  sensitive   = true
}

resource "azapi_resource" "resourceGroup" {
  type     = "Microsoft.Resources/resourceGroups@2020-06-01"
  name     = var.resource_name
  location = var.location
}

resource "azapi_resource" "userAssignedIdentity" {
  type                      = "Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31"
  parent_id                 = azapi_resource.resourceGroup.id
  name                      = var.resource_name
  location                  = var.location
  schema_validation_enabled = false
  response_export_values    = ["*"]
}

data "azapi_client_config" "current" {}

resource "azapi_resource" "vault" {
  type      = "Microsoft.KeyVault/vaults@2023-02-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = "${var.resource_name}-kv"
  location  = var.location
  body = {
    properties = {
      createMode                   = "default"
      enablePurgeProtection        = true
      enableSoftDelete             = true
      enableRbacAuthorization      = true
      enabledForDeployment         = true
      enabledForDiskEncryption     = true
      enabledForTemplateDeployment = true
      publicNetworkAccess          = "Enabled"
      accessPolicies               = []
      sku = {
        family = "A"
        name   = "standard"
      }
      tenantId = data.azapi_client_config.current.tenant_id
    }
  }
}

data "azapi_resource_list" "kvCertificatesOfficerRoleDefinition" {
  type      = "Microsoft.Authorization/roleDefinitions@2022-04-01"
  parent_id = azapi_resource.vault.id
  response_export_values = {
    definition_id = "value[?properties.roleName == 'Key Vault Crypto Officer'].id | [0]"
  }
}

resource "azapi_resource" "kvRoleAssignmentTf" {
  type      = "Microsoft.Authorization/roleAssignments@2022-04-01"
  parent_id = azapi_resource.vault.id
  name      = uuid()
  body = {
    properties = {
      principalId      = data.azapi_client_config.current.object_id
      roleDefinitionId = data.azapi_resource_list.kvCertificatesOfficerRoleDefinition.output.definition_id
    }
  }
  lifecycle {
    ignore_changes = [name]
  }
}

data "azapi_resource_list" "kvCertificatesUserRoleDefinition" {
  type      = "Microsoft.Authorization/roleDefinitions@2022-04-01"
  parent_id = azapi_resource.vault.id
  response_export_values = {
    definition_id = "value[?properties.roleName == 'Key Vault Crypto Service Encryption User'].id | [0]"
  }
}

resource "azapi_resource" "kvRoleAssignmentIdentity" {
  type      = "Microsoft.Authorization/roleAssignments@2022-04-01"
  parent_id = azapi_resource.vault.id
  name      = uuid()
  body = {
    properties = {
      principalId      = azapi_resource.userAssignedIdentity.output.properties.principalId
      roleDefinitionId = data.azapi_resource_list.kvCertificatesUserRoleDefinition.output.definition_id
    }
  }
  lifecycle {
    ignore_changes = [name]
  }
}

data "azapi_resource_id" "key" {
  type      = "Microsoft.KeyVault/vaults/keys@2023-02-01"
  parent_id = azapi_resource.vault.id
  name      = var.resource_name
}

resource "azapi_resource_action" "key" {
  type        = "Microsoft.KeyVault/vaults/keys@2023-02-01"
  resource_id = data.azapi_resource_id.key.id
  method      = "PUT"
  body = {
    properties = {
      keySize = 2048
      kty     = "RSA"
      keyOps  = ["encrypt", "decrypt", "sign", "verify", "wrapKey", "unwrapKey"]
    }
  }
  response_export_values = ["*"]
  depends_on = [
    azapi_resource.kvRoleAssignmentTf,
    azapi_resource.kvRoleAssignmentIdentity,
  ]
}

# replica key vault

resource "azapi_resource" "vault_replica" {
  type      = "Microsoft.KeyVault/vaults@2023-02-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = "${var.resource_name}-kv-replica"
  location  = var.replica_location
  body = {
    properties = {
      createMode                   = "default"
      enablePurgeProtection        = true
      enableSoftDelete             = true
      enableRbacAuthorization      = true
      enabledForDeployment         = true
      enabledForDiskEncryption     = true
      enabledForTemplateDeployment = true
      publicNetworkAccess          = "Enabled"
      accessPolicies               = []
      sku = {
        family = "A"
        name   = "standard"
      }
      tenantId = data.azapi_client_config.current.tenant_id
    }
  }
}

data "azapi_resource_list" "kvCertificatesOfficerRoleDefinition_replica" {
  type      = "Microsoft.Authorization/roleDefinitions@2022-04-01"
  parent_id = azapi_resource.vault_replica.id
  response_export_values = {
    definition_id = "value[?properties.roleName == 'Key Vault Crypto Officer'].id | [0]"
  }
}

resource "azapi_resource" "kvRoleAssignmentTf_replica" {
  type      = "Microsoft.Authorization/roleAssignments@2022-04-01"
  parent_id = azapi_resource.vault_replica.id
  name      = uuid()
  body = {
    properties = {
      principalId      = data.azapi_client_config.current.object_id
      roleDefinitionId = data.azapi_resource_list.kvCertificatesOfficerRoleDefinition.output.definition_id
    }
  }
  lifecycle {
    ignore_changes = [name]
  }
}

data "azapi_resource_list" "kvCertificatesUserRoleDefinition_replica" {
  type      = "Microsoft.Authorization/roleDefinitions@2022-04-01"
  parent_id = azapi_resource.vault_replica.id
  response_export_values = {
    definition_id = "value[?properties.roleName == 'Key Vault Crypto Service Encryption User'].id | [0]"
  }
}

resource "azapi_resource" "kvRoleAssignmentIdentity_replica" {
  type      = "Microsoft.Authorization/roleAssignments@2022-04-01"
  parent_id = azapi_resource.vault_replica.id
  name      = uuid()
  body = {
    properties = {
      principalId      = azapi_resource.userAssignedIdentity.output.properties.principalId
      roleDefinitionId = data.azapi_resource_list.kvCertificatesUserRoleDefinition.output.definition_id
    }
  }
  lifecycle {
    ignore_changes = [name]
  }
}

data "azapi_resource_id" "key_replica" {
  type      = "Microsoft.KeyVault/vaults/keys@2023-02-01"
  parent_id = azapi_resource.vault_replica.id
  name      = var.resource_name
}

resource "azapi_resource_action" "key_replica" {
  type        = "Microsoft.KeyVault/vaults/keys@2023-02-01"
  resource_id = data.azapi_resource_id.key_replica.id
  method      = "PUT"
  body = {
    properties = {
      keySize = 2048
      kty     = "RSA"
      keyOps  = ["encrypt", "decrypt", "sign", "verify", "wrapKey", "unwrapKey"]
    }
  }
  response_export_values = ["*"]
  depends_on = [
    azapi_resource.kvRoleAssignmentTf_replica,
    azapi_resource.kvRoleAssignmentIdentity_replica,
  ]
}

resource "azapi_resource" "mongoCluster" {
  type      = "Microsoft.DocumentDB/mongoClusters@2025-09-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = var.resource_name
  location  = var.location
  identity {
    type         = "UserAssigned"
    identity_ids = [azapi_resource.userAssignedIdentity.id]
  }
  body = {
    properties = {
      administrator = {
        userName = var.mongo_admin_username
      }
      authConfig = {
        allowedModes = ["MicrosoftEntraID", "NativeAuth"]
      }
      compute = {
        tier = "M30"
      }
      encryption = {
        customerManagedKeyEncryption = {
          keyEncryptionKeyIdentity = {
            identityType                   = "UserAssignedIdentity"
            userAssignedIdentityResourceId = azapi_resource.userAssignedIdentity.id
          }
          keyEncryptionKeyUrl = azapi_resource_action.key.output.properties.keyUri
        }
      }
      highAvailability = {
        targetMode = "Disabled"
      }
      previewFeatures = [
        "ShardRebalancer"
      ]
      publicNetworkAccess = "Enabled"
      serverVersion       = "5.0"
      sharding = {
        shardCount = 1
      }
      storage = {
        sizeGb = 32
      }
    }
  }
  sensitive_body = {
    properties = {
      administrator = {
        password = var.mongo_admin_password
      }
    }
  }
  tags = {
    Environment = "Test"
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}

# Wait for the MongoDB cluster to have backup capability available
resource "time_sleep" "wait_for_backup_ready" {
  depends_on = [azapi_resource.mongoCluster]

  # Wait 5 minutes for backup to be available - MongoDB clusters typically need time to enable backup
  create_duration = "300s"
}

# Data source to get the updated cluster info with backup details
data "azapi_resource" "mongoCluster_backup_check" {
  type        = "Microsoft.DocumentDB/mongoClusters@2025-09-01"
  resource_id = azapi_resource.mongoCluster.id

  response_export_values = ["properties.backup.earliestRestoreTime"]
  depends_on             = [time_sleep.wait_for_backup_ready]
}

resource "azapi_resource" "mongoCluster_PointInTimeRestore" {
  type      = "Microsoft.DocumentDB/mongoClusters@2025-09-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = "${var.resource_name}-restore"
  location  = var.location
  identity {
    type         = "UserAssigned"
    identity_ids = [azapi_resource.userAssignedIdentity.id]
  }
  body = {
    properties = {
      createMode = "PointInTimeRestore"
      administrator = {
        userName = var.mongo_admin_username
      }
      encryption = {
        customerManagedKeyEncryption = {
          keyEncryptionKeyIdentity = {
            identityType                   = "UserAssignedIdentity"
            userAssignedIdentityResourceId = azapi_resource.userAssignedIdentity.id
          }
          keyEncryptionKeyUrl = azapi_resource_action.key.output.properties.keyUri
        }
      }
      restoreParameters = {
        pointInTimeUTC   = data.azapi_resource.mongoCluster_backup_check.output.properties.backup.earliestRestoreTime
        sourceResourceId = azapi_resource.mongoCluster.id
      }
    }
  }
  sensitive_body = {
    properties = {
      administrator = {
        password = var.mongo_restore_admin_password
      }
    }
  }
  schema_validation_enabled = false
  ignore_casing             = false
  ignore_missing_property   = false

  depends_on = [
    data.azapi_resource.mongoCluster_backup_check
  ]
}

resource "azapi_resource" "mongoCluster_GeoReplica" {
  type      = "Microsoft.DocumentDB/mongoClusters@2025-09-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = "${var.resource_name}-repl"
  location  = var.replica_location
  identity {
    type         = "UserAssigned"
    identity_ids = [azapi_resource.userAssignedIdentity.id]
  }
  body = {
    properties = {
      createMode = "GeoReplica"
      encryption = {
        customerManagedKeyEncryption = {
          keyEncryptionKeyIdentity = {
            identityType                   = "UserAssignedIdentity"
            userAssignedIdentityResourceId = azapi_resource.userAssignedIdentity.id
          }
          keyEncryptionKeyUrl = azapi_resource_action.key_replica.output.properties.keyUri
        }
      }
      replicaParameters = {
        sourceLocation   = var.location # Source location matches the primary cluster
        sourceResourceId = azapi_resource.mongoCluster.id
      }
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}

Modul Terverifikasi Azure

Modul Terverifikasi Azure berikut dapat digunakan untuk menyebarkan jenis sumber daya ini.

Modul Deskripsi
Cosmos DB for MongoDB (vCore) Modul Sumber Daya AVM untuk Cosmos DB untuk MongoDB (vCore)

Format sumber daya

Untuk membuat sumber daya Microsoft.DocumentDB/mongoClusters, tambahkan Terraform berikut ke templat Anda.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.DocumentDB/mongoClusters@2026-06-01"
  name = "string"
  parent_id = "string"
  identity {
    type = "string"
    identity_ids = [
      "string"
    ]
  }
  location = "string"
  tags = {
    {customized property} = "string"
  }
  body = {
    properties = {
      administrator = {
        password = "string"
        userName = "string"
      }
      authConfig = {
        allowedModes = [
          "string"
        ]
      }
      backup = {
      }
      compute = {
        tier = "string"
      }
      createMode = "string"
      dataApi = {
        mode = "string"
      }
      encryption = {
        customerManagedKeyEncryption = {
          keyEncryptionKeyIdentity = {
            identityType = "string"
            userAssignedIdentityResourceId = "string"
          }
          keyEncryptionKeyUrl = "string"
        }
      }
      highAvailability = {
        targetMode = "string"
      }
      networkBypassMode = "string"
      previewFeatures = [
        "string"
      ]
      publicNetworkAccess = "string"
      replicaParameters = {
        sourceLocation = "string"
        sourceResourceId = "string"
      }
      restoreParameters = {
        pointInTimeUTC = "string"
        sourceResourceId = "string"
      }
      serverVersion = "string"
      sharding = {
        shardCount = int
      }
      storage = {
        sizeGb = int
        type = "string"
      }
    }
  }
}

Nilai Properti

Microsoft.DocumentDB/mongoClusters

Nama Deskripsi Nilai
identitas Identitas layanan terkelola yang ditetapkan ke sumber daya ini. managedServiceIdentity
lokasi Lokasi geografis tempat sumber daya berada string (diperlukan)
Nama Nama sumber daya tali

Kendala:
Panjang min = 3
Panjang maksimum = 40
Pola = ^[a-z0-9]+(-[a-z0-9]+)* (diperlukan)
Properti Properti khusus sumber daya untuk sumber daya ini. mongoClusterProperties
Tags Tag sumber daya Kamus nama dan nilai tag.
jenis Jenis sumber daya "Microsoft. DocumentDB/mongoClusters@2026-06-01"

Properti Administrator

Nama Deskripsi Nilai
kata sandi Kata sandi administrator. tali

Kendala:
Nilai sensitif. Teruskan sebagai parameter aman.
userName Nama pengguna administrator. string

AuthConfigProperties

Nama Deskripsi Nilai
mode yang diizinkan Mode autentikasi yang diizinkan untuk akses data pada kluster. Array string yang berisi salah satu dari:
'MicrosoftEntraID'
'NativeAuth'

Properti Cadangan

Nama Deskripsi Nilai

Properti Komputasi

Nama Deskripsi Nilai
Tier Tingkat komputasi untuk ditetapkan ke kluster, di mana setiap tingkatan memetakan ke ukuran virtual-core dan memori. Contoh nilai: 'M30', 'M40'. string

CustomerManagedKeyEncryptionProperties

Nama Deskripsi Nilai
keyEncryptionKeyIdentity Identitas yang digunakan untuk mengakses kunci enkripsi kunci. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl URI kunci brankas kunci yang digunakan untuk enkripsi. string

DataApiProperties

Nama Deskripsi Nilai
modus Mode untuk menunjukkan apakah API Data Mongo diaktifkan untuk kluster. 'Dinonaktifkan'
'Diaktifkan'

EncryptionProperties

Nama Deskripsi Nilai
customerManagedKeyEncryption Pengaturan enkripsi kunci yang dikelola pelanggan. CustomerManagedKeyEncryptionProperties

Ketersediaan TinggiProperti

Nama Deskripsi Nilai
Mode target Mode ketersediaan tinggi target yang diminta untuk kluster. 'Dinonaktifkan'
'Zona yang Sama'
'ZonaRedundantLebih Disukai'

KeyEncryptionKeyIdentity

Nama Deskripsi Nilai
identitasType Jenis identitas. Hanya 'UserAssignedIdentity' yang didukung. 'Identitas yang Ditetapkan Pengguna'
userAssignedIdentityResourceId Pengguna menetapkan id sumber daya identitas. string

Identitas Layanan Terkelola

Nama Deskripsi Nilai
jenis Jenis identitas layanan terkelola (di mana jenis SystemAssigned dan UserAssigned diizinkan). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (wajib)
identitasYangDitetapkanPengguna Kumpulan identitas yang ditetapkan pengguna yang terkait dengan sumber daya. Kunci kamus userAssignedIdentities akan menjadi id sumber daya ARM dalam formulir: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Nilai kamus dapat berupa objek kosong ({}) dalam permintaan. UserAssignedIdentities

MongoClusterProperties

Nama Deskripsi Nilai
administrator Properti administrator lokal untuk kluster mongo. AdministratorProperti
authConfig Konfigurasi autentikasi untuk kluster. AuthConfigProperties
cadangan Properti cadangan kluster mongo. BackupProperties
komputasi Properti komputasi kluster mongo. ComputeProperties
createMode Mode untuk membuat kluster mongo. Bawaan
'GeoReplica'
'PointInTimeRestore'
'Replika'
dataApi Properti API Data dari kluster mongo. DataApiProperties
enkripsi Konfigurasi enkripsi untuk kluster. Tergantung pada identitas yang sedang dikonfigurasi. EncryptionProperties
Ketersediaan tinggi Properti ketersediaan tinggi dari kluster mongo. Ketersediaan TinggiProperti
jaringanMode Bypass Mode bypass jaringan untuk kluster. Pengaturan ke 'AzureCosmosDB' memungkinkan layanan Azure Cosmos DB untuk melewati batasan jaringan. 'AzureCosmosDB'
'None'
pratinjauFitur Daftar koneksi titik akhir privat. Array string yang berisi salah satu dari:
'Replika Geografis'
publikAkses Jaringan Apakah akses titik akhir publik diizinkan untuk kluster mongo ini atau tidak. 'Dinonaktifkan'
'Diaktifkan'
Parameter replika Parameter untuk membuat kluster mongo replika. MongoClusterReplicaParameters
memulihkanParameter Parameter untuk membuat kluster mongo pemulihan titik waktu. MongoClusterRestoreParameters
serverVersi Versi server Mongo DB. Default ke versi terbaru yang tersedia jika tidak ditentukan. string
sharding (pembagian data) Properti sharding kluster mongo. Properti Sharding
penyimpanan Properti penyimpanan kluster mongo. StorageProperties

MongoClusterReplicaParameters

Nama Deskripsi Nilai
lokasi sumber Lokasi kluster sumber string (diperlukan)
sourceResourceId Id kluster sumber replikasi. string (diperlukan)

MongoClusterRestoreParameters

Nama Deskripsi Nilai
pointInTimeUTC Titik waktu UTC untuk memulihkan kluster mongo string
sourceResourceId ID sumber daya untuk menemukan kluster sumber yang akan dipulihkan string

Properti Sharding

Nama Deskripsi Nilai
Hitungan pecahan Jumlah pecahan yang akan disediakan pada kluster. Int

Properti Penyimpanan

Nama Deskripsi Nilai
ukuranGb Ukuran disk data yang ditetapkan untuk setiap server. Int
jenis Jenis penyimpanan untuk menyediakan server kluster. 'SSD Premium'
'PremiumSSDv2'

TrackedResourceTags

Nama Deskripsi Nilai

UserAssignedIdentities

Nama Deskripsi Nilai

IdentitasDitugaskanPengguna

Nama Deskripsi Nilai