10/5 Japan Azure User Group 14周年でAzure Verified ModulesのLTについて話されていたのを聞いて、Azure Container AppsをAzure Verified Modulesで作成してみました。
当日のAVMのセッションは公開されているようです
Bicepのコード
- main.bicep
 
targetScope = 'subscription'
@maxLength(7)
@description('Optional. The location to deploy resources to.')
param location string
resource coreResourceGroup 'Microsoft.Resources/resourceGroups@2021-04-01' = {
  name: 'xxxx'
  location: location
}
module workspace 'br/public:avm/res/operational-insights/workspace:0.7.0' = {
  scope: coreResourceGroup
  name: 'workspaceDeployment'
  params: {
    name: 'workspaceProperty'
  }
}
module managedEnvironment 'br/public:avm/res/app/managed-environment:0.8.0' = {
  scope: coreResourceGroup
  name: 'managedEnvironmentDeployment'
  params: {
    // Required parameters
    logAnalyticsWorkspaceResourceId: workspace.outputs.resourceId
    name: 'amemin001'
    zoneRedundant: false
  }
}
module containerApp 'br/public:avm/res/app/container-app:0.11.0' = {
  scope: coreResourceGroup
  name: 'containerAppDeployment'
  params: {
    // Required parameters
    containers: [
      {
        image: 'mcr.microsoft.com/azuredocs/containerapps-helloworld:latest'
        name: 'simple-hello-world-container'
        resources: {
          cpu: '0.25'
          memory: '0.5Gi'
        }
      }
    ]
    environmentResourceId: managedEnvironment.outputs.resourceId
    name: 'acamin001'
    location: location
  }
}
- parameter.json
 
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "location": {
        "value": "eastus"
      }
    }
}
container appsを動かすmanaged environment作る際、zoneRedundantパラメータ指定しないと、managed environment作成時にエラーになります。(InfrastructureSubnetIdが指定ないとzoneRedundantは有効にできない)
AVMデフォルトオプションがAzureの推奨設定になっていることなので、zoneRedundantがデフォルト有効ではと思われる。
途中でエラーになっても、作成できたリソースがCfnみたくロールバックすることはできなそう。Cfnでもロールバックしないオプションも対応しましたが。
実行
az
az deployment sub create --location 'australiaeast' --name 'lab01' --template-file main.bicep' --parameters parameters.json --verbose
テンプレートとパラメータを指定することもできます
リファレンス
Lab 01 – Demo: Deploying a Storage Account + Customer Managed Key Solution Using AVM modules published in the Public Bicep Registry
https://github.com/Azure-Samples/avm-bicep-labs/tree/main/labs/lab01
Azure Verified Modules
https://azure.github.io/Azure-Verified-Modules