
都度検索するのが大変なので、メモとして。
1. 子リソースの書き方
例えば Microsoft.Web/sites/sourcecontrols 。
1-1. 入れ子にする。
親リソースの中に resource で子リソースを宣言する。
resource appService 'Microsoft.Web/sites@2021-02-01' = { name: webSiteName location: location kind: 'app' properties: { : } resource web 'sourcecontrols@2021-02-01' = { // ここから子リソース name: 'web' properties: { : } } }
1-2. 子から親を参照する。
子リソースは親リソースと同じレベルで宣言する。
加えて parent で親リソースを参照する。
resource appService 'Microsoft.Web/sites@2021-02-01' = { name: webSiteName location: location kind: 'app' properties: { : } } resource web 'Microsoft.web/sites/sourcecontrols@2021-02-01' = { parent: appService // ここで親リソースを参照する name: 'web' properties: { : } }
2. ロール割り当て
デプロイ時にマネージド ID を有効にして、同時にそれを他のリソースのロールをhttps://www.google.com/url?sa=i&url=https%3A%2F%2Fdevblogs.microsoft.com%2Fdevops%2Fazurefunbytes-intro-to-bicep%2F&psig=AOvVaw0zWLc6KaUdbfEbb_8IGnfO&ust=1648963806189000&source=images&cd=vfe&ved=0CAgQjRxqFwoTCLjLpcrU9PYCFQAAAAAdAAAAABAD割り当てる。
Web App とストレージ アカウントのデプロイタイミングで、Web App のマネージド ID に ストレージ アカウント共同作成者 を割り当てる例。
param roleNameGuid string = newGuid() resource storageAccount 'Microsoft.Storage/storageAccounts@2021-02-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' } resource appService 'Microsoft.Web/sites@2021-02-01' = { name: webSiteName location: location identity: { type: 'SystemAssigned' } kind: 'app' properties: { : } } // https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/bicep/scenarios-rbac#role-assignments resource assignRole 'Microsoft.Authorization/roleAssignments@2020-08-01-preview' = { name: roleNameGuid scope: storageAccount properties: { principalId: appService.identity.principalId roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '17d1049b-9a84-46fb-8f53-869881c3d3ab') // "ストレージ アカウント共同作成者" のロール定義 ID // https://docs.microsoft.com/ja-jp/azure/role-based-access-control/role-assignments-template#new-service-principal principalType: 'ServicePrincipal' } }