Partilhar via


Gerenciar recursos do Azure Cosmos DB para Tabela usando o Bicep

APLICA-SE A: Tabela

Neste artigo, você aprenderá a usar o Bicep para ajudar a implantar e gerenciar seu Azure Cosmos DB para contas e tabelas de tabela.

Este artigo tem exemplos de API apenas para contas de tabela. Você também pode encontrar exemplos de Bicep para artigos Cassandra, Gremlin, MongoDB, SQL .

Importante

  • Os nomes das contas são limitados a 44 caracteres, todos em minúsculas.
  • Para alterar os valores de taxa de transferência, reimplante o modelo com RU/s atualizados.
  • Quando você adiciona ou remove locais a uma conta do Azure Cosmos DB, não pode modificar simultaneamente outras propriedades. Estas operações devem ser efetuadas separadamente.

Para criar qualquer um dos recursos do Azure Cosmos DB abaixo, copie o exemplo a seguir em um novo arquivo bicep. Opcionalmente, você pode criar um arquivo de parâmetros para usar ao implantar várias instâncias do mesmo recurso com nomes e valores diferentes. Há muitas maneiras de implantar modelos do Azure Resource Manager, incluindo Azure CLI, Azure PowerShell e Cloud Shell.

Gorjeta

Para habilitar a taxa de transferência compartilhada ao usar a API para Tabela, habilite a taxa de transferência no nível da conta no portal do Azure. A taxa de transferência compartilhada no nível da conta não pode ser definida usando o Bicep.

Conta do Azure Cosmos DB para Tabela com taxa de transferência de escala automática

Crie uma conta do Azure Cosmos DB para API for Table com uma tabela com taxa de transferência de escala automática.

@description('Cosmos DB account name')
param accountName string = 'table-${uniqueString(resourceGroup().id)}'

@description('Location for the Cosmos DB account.')
param location string = resourceGroup().location

@description('The primary region for the Cosmos DB account.')
param primaryRegion string

@description('The secondary region for the Cosmos DB account.')
param secondaryRegion string

@description('The default consistency level of the Cosmos DB account.')
@allowed([
  'Eventual'
  'ConsistentPrefix'
  'Session'
  'BoundedStaleness'
  'Strong'
])
param defaultConsistencyLevel string = 'Session'

@description('Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2147483647. Multi Region: 100000 to 2147483647.')
@minValue(10)
@maxValue(2147483647)
param maxStalenessPrefix int = 100000

@description('Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400.')
@minValue(5)
@maxValue(86400)
param maxIntervalInSeconds int = 300

@description('Enable system managed failover for regions')
param systemManagedFailover bool = true

@description('The name for the table')
param tableName string

@description('Maximum autoscale throughput for the table')
@minValue(1000)
@maxValue(1000000)
param autoscaleMaxThroughput int = 4000

var consistencyPolicy = {
  Eventual: {
    defaultConsistencyLevel: 'Eventual'
  }
  ConsistentPrefix: {
    defaultConsistencyLevel: 'ConsistentPrefix'
  }
  Session: {
    defaultConsistencyLevel: 'Session'
  }
  BoundedStaleness: {
    defaultConsistencyLevel: 'BoundedStaleness'
    maxStalenessPrefix: maxStalenessPrefix
    maxIntervalInSeconds: maxIntervalInSeconds
  }
  Strong: {
    defaultConsistencyLevel: 'Strong'
  }
}
var locations = [
  {
    locationName: primaryRegion
    failoverPriority: 0
    isZoneRedundant: false
  }
  {
    locationName: secondaryRegion
    failoverPriority: 1
    isZoneRedundant: false
  }
]

resource account 'Microsoft.DocumentDB/databaseAccounts@2022-05-15' = {
  name: toLower(accountName)
  location: location
  kind: 'GlobalDocumentDB'
  properties: {
    capabilities: [
      {
        name: 'EnableTable'
      }
    ]
    consistencyPolicy: consistencyPolicy[defaultConsistencyLevel]
    locations: locations
    databaseAccountOfferType: 'Standard'
    enableAutomaticFailover: systemManagedFailover
  }
}

resource table 'Microsoft.DocumentDB/databaseAccounts/tables@2022-05-15' = {
  parent: account
  name: tableName
  properties: {
    resource: {
      id: tableName
    }
    options: {
      autoscaleSettings: {
        maxThroughput: autoscaleMaxThroughput
      }
    }
  }
}

Conta do Azure Cosmos DB para Tabela com taxa de transferência provisionada padrão

Crie uma conta do Azure Cosmos DB para API for Table com uma tabela com taxa de transferência padrão.

@description('Cosmos DB account name')
param accountName string = 'table-${uniqueString(resourceGroup().id)}'

@description('Location for the Cosmos DB account.')
param location string = resourceGroup().location

@description('The primary region for the Cosmos DB account.')
param primaryRegion string

@description('The secondary region for the Cosmos DB account.')
param secondaryRegion string

@description('The default consistency level of the Cosmos DB account.')
@allowed([
  'Eventual'
  'ConsistentPrefix'
  'Session'
  'BoundedStaleness'
  'Strong'
])
param defaultConsistencyLevel string = 'Session'

@description('Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2147483647. Multi Region: 100000 to 2147483647.')
@minValue(10)
@maxValue(2147483647)
param maxStalenessPrefix int = 100000

@description('Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400.')
@minValue(5)
@maxValue(86400)
param maxIntervalInSeconds int = 300

@description('Enable system managed failover for regions')
param systemManagedFailover bool = true

@description('The name for the table')
param tableName string

@minValue(400)
@maxValue(1000000)
@description('The throughput for the table')
param throughput int = 400

var consistencyPolicy = {
  Eventual: {
    defaultConsistencyLevel: 'Eventual'
  }
  ConsistentPrefix: {
    defaultConsistencyLevel: 'ConsistentPrefix'
  }
  Session: {
    defaultConsistencyLevel: 'Session'
  }
  BoundedStaleness: {
    defaultConsistencyLevel: 'BoundedStaleness'
    maxStalenessPrefix: maxStalenessPrefix
    maxIntervalInSeconds: maxIntervalInSeconds
  }
  Strong: {
    defaultConsistencyLevel: 'Strong'
  }
}
var locations = [
  {
    locationName: primaryRegion
    failoverPriority: 0
    isZoneRedundant: false
  }
  {
    locationName: secondaryRegion
    failoverPriority: 1
    isZoneRedundant: false
  }
]

resource account 'Microsoft.DocumentDB/databaseAccounts@2022-05-15' = {
  name: toLower(accountName)
  location: location
  kind: 'GlobalDocumentDB'
  properties: {
    capabilities: [
      {
        name: 'EnableTable'
      }
    ]
    consistencyPolicy: consistencyPolicy[defaultConsistencyLevel]
    locations: locations
    databaseAccountOfferType: 'Standard'
    enableAutomaticFailover: systemManagedFailover
  }
}

resource table 'Microsoft.DocumentDB/databaseAccounts/tables@2022-05-15' = {
  parent: account
  name: tableName
  properties: {
    resource: {
      id: tableName
    }
    options: {
      throughput: throughput
    }
  }
}

Próximos passos

Aqui estão alguns recursos adicionais: