Cosmos DB Bicep Patterns
Account
bicep
resource cosmosAccount 'Microsoft.DocumentDB/databaseAccounts@2023-04-15' = \{
name: '${resourcePrefix}-cosmos-${uniqueHash\}'
location: location
kind: 'GlobalDocumentDB'
properties: \{
databaseAccountOfferType: 'Standard'
locations: [
\{
locationName: location
failoverPriority: 0
isZoneRedundant: false
\}
]
consistencyPolicy: \{
defaultConsistencyLevel: 'Session'
\}
capabilities: [
\{
name: 'EnableServerless'
\}
]
\}
\}Database
bicep
resource cosmosDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2023-04-15' = \{
parent: cosmosAccount
name: 'appdb'
properties: \{
resource: \{
id: 'appdb'
\}
\}
\}Container
bicep
resource cosmosContainer 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers@2023-04-15' = \{
parent: cosmosDatabase
name: 'items'
properties: \{
resource: \{
id: 'items'
partitionKey: \{
paths: ['/partitionKey']
kind: 'Hash'
\}
indexingPolicy: \{
indexingMode: 'consistent'
includedPaths: [
\{ path: '/*' \}
]
\}
\}
\}
\}Autoscale Container
bicep
resource cosmosContainer 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers@2023-04-15' = \{
parent: cosmosDatabase
name: 'items'
properties: \{
resource: \{
id: 'items'
partitionKey: \{
paths: ['/partitionKey']
kind: 'Hash'
\}
\}
options: \{
autoscaleSettings: \{
maxThroughput: 4000
\}
\}
\}
\}Global Distribution
bicep
properties: \{
locations: [
\{
locationName: 'East US'
failoverPriority: 0
\}
\{
locationName: 'West US'
failoverPriority: 1
\}
]
enableMultipleWriteLocations: true
\}