データベース リソースまたはコンテナー リソースを構成する
各テンプレート リソースでは、同じリソースの種類とバージョンが、Azure Resource Manager テンプレートと Bicep テンプレートの両方で使用されます。 1 つの言語でビルドする方法を学習した場合は、もう一方の言語で簡単に学習できます。
注意
Bicep テンプレートには、"空" のテンプレート構文は必要ありません。 空のファイルで定義の書き込みを開始できます。
アカウント リソース
Bicep の Microsoft.DocumentDB/databaseAccounts リソースには、Azure Resource Manager テンプレートの場合と同じ最小限のプロパティを含める必要があります。
csmsarm というプレフィックスを持つ一意の名前を持ち、米国西部にデプロイされているアカウントの例を次に示します。
resource Account 'Microsoft.DocumentDB/databaseAccounts@2021-05-15' = {
name: 'csmsbicep${uniqueString(resourceGroup().id)}'
location: resourceGroup().location
properties: {
databaseAccountOfferType: 'Standard'
locations: [
{
locationName: 'westus'
}
]
}
}
ヒント
このリソースが以前のデプロイから既に存在する場合、Azure Resource Manager ではそのリソースがスキップされ、次に進みます。 これは、テンプレートを段階的にビルドする場合に非常に便利です。
データベース リソース
Microsoft.DocumentDB/databaseAccounts/sqlDatabases リソースのこの例では、データベース リソースを構成します。これは、前のユニットで確認した JSON テンプレートとはわずかに異なります。
Bicep には、詳細な dependsOn プロパティとは対照的に、リレーションシップを定義する親プロパティを定義するためのリソースも必要です。
resource Database 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2021-05-15' = {
parent: Account
name: 'cosmicworks'
properties: {
options: {
}
resource: {
id: 'cosmicworks'
}
}
}
コンテナー リソース
この Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers リソースは、このレベルでスループット プロパティを定義する点を除き、JSON と同等のリソースです。
resource Container 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers@2021-05-15' = {
parent: Database
name: 'customers'
properties: {
resource: {
id: 'customers'
partitionKey: {
paths: [
'/regionId'
]
}
}
}
}
最終的なテンプレート
すべてのリソースが配置されたので、テンプレート ファイルには次のコードが含まれるはずです。
resource Account 'Microsoft.DocumentDB/databaseAccounts@2021-05-15' = {
name: 'csmsbicep${uniqueString(resourceGroup().id)}'
location: resourceGroup().location
properties: {
databaseAccountOfferType: 'Standard'
locations: [
{
locationName: 'westus'
}
]
}
}
resource Database 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2021-05-15' = {
parent: Account
name: 'cosmicworks'
properties: {
options: {
}
resource: {
id: 'cosmicworks'
}
}
}
resource Container 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers@2021-05-15' = {
parent: Database
name: 'customers'
properties: {
resource: {
id: 'customers'
partitionKey: {
paths: [
'/regionId'
]
}
}
}
}