为 azure cosmos bicep 的 defaultTTL 设置空值
setting null value for defaultTTL for azure cosmos bicep
您好,我已尝试关闭 Azure cosmos 的 TTL。我知道它可以通过在代码中不包含 defaultTtl 来关闭。但是我有条件部署,我有一个循环检查租户名称以创建 cosmos 容器,如果它等于 'int999' 则将 defaultTtl 设置为 604800 否则关闭 TTL。
我试图将其设置为 null 但管道 运行 失败,它有一条非常普遍的错误消息
“至少一个资源部署操作失败。请列出部署操作以获取详细信息”
这是我的二头肌代码
resource containers 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers@2021-06-15' = [for i in range(0, length(tenants)): {
name: '${databases[i].name}/messages'
properties: {
resource: {
id: 'messages'
partitionKey: {
paths: [
'/organisationId'
]
}
defaultTtl: tenants[i] == 'int999' ? 604800 : null
}
}
}]
我觉得很奇怪,因为在 azure 文档中,defaultTTL 应该接受空值 https://docs.microsoft.com/en-us/azure/cosmos-db/time-to-live。但是,在此处将其设置为 null 时,我似乎遇到了语法错误。谁能帮忙。谢谢
注意:请注意,将 defaultTTL 设置为 -1 对我的情况来说不是可接受的解决方案。我们想完全关闭 TTL。
我也试过 null
或 json('null')
但没用。
这里需要根据条件有条件地加上defaultTtl
属性。
此二头肌文件定义了一些默认属性,并在需要时添加 defaultTtl
:
param cosmosdbAccountName string
param databaseName string
param tenant string = 'int999'
// reference to the cosmos db database
resource database 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2021-06-15' existing = {
name: '${cosmosdbAccountName}/${databaseName}'
}
// Create default properties for the container
var defaultResource = {
id: 'messages'
partitionKey: {
paths: [
'/organisationId'
]
}
}
// Create the container
resource container 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers@2021-06-15' = {
name: '${database.name}/messages'
properties: {
// Add the default ttl if needed
resource: union(defaultResource, tenant == 'int999' ? {
defaultTtl: 604800
} : {})
}
}
您好,我已尝试关闭 Azure cosmos 的 TTL。我知道它可以通过在代码中不包含 defaultTtl 来关闭。但是我有条件部署,我有一个循环检查租户名称以创建 cosmos 容器,如果它等于 'int999' 则将 defaultTtl 设置为 604800 否则关闭 TTL。 我试图将其设置为 null 但管道 运行 失败,它有一条非常普遍的错误消息 “至少一个资源部署操作失败。请列出部署操作以获取详细信息”
这是我的二头肌代码
resource containers 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers@2021-06-15' = [for i in range(0, length(tenants)): {
name: '${databases[i].name}/messages'
properties: {
resource: {
id: 'messages'
partitionKey: {
paths: [
'/organisationId'
]
}
defaultTtl: tenants[i] == 'int999' ? 604800 : null
}
}
}]
我觉得很奇怪,因为在 azure 文档中,defaultTTL 应该接受空值 https://docs.microsoft.com/en-us/azure/cosmos-db/time-to-live。但是,在此处将其设置为 null 时,我似乎遇到了语法错误。谁能帮忙。谢谢
注意:请注意,将 defaultTTL 设置为 -1 对我的情况来说不是可接受的解决方案。我们想完全关闭 TTL。
我也试过 null
或 json('null')
但没用。
这里需要根据条件有条件地加上defaultTtl
属性。
此二头肌文件定义了一些默认属性,并在需要时添加 defaultTtl
:
param cosmosdbAccountName string
param databaseName string
param tenant string = 'int999'
// reference to the cosmos db database
resource database 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2021-06-15' existing = {
name: '${cosmosdbAccountName}/${databaseName}'
}
// Create default properties for the container
var defaultResource = {
id: 'messages'
partitionKey: {
paths: [
'/organisationId'
]
}
}
// Create the container
resource container 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers@2021-06-15' = {
name: '${database.name}/messages'
properties: {
// Add the default ttl if needed
resource: union(defaultResource, tenant == 'int999' ? {
defaultTtl: 604800
} : {})
}
}