@@ -42,15 +42,13 @@ param afdEndpointName string = 'afd-${resourceSuffix}'
4242param acaName string = 'aca-${resourceSuffix }'
4343param useACA bool = false
4444
45-
4645// ------------------
4746// "CONSTANTS"
4847// ------------------
4948
5049var IMG_HELLO_WORLD = 'simonkurtzmsft/helloworld:latest'
5150var IMG_MOCK_WEB_API = 'simonkurtzmsft/mockwebapi:1.0.0-alpha.1'
5251
53-
5452// ------------------
5553// RESOURCES
5654// ------------------
@@ -131,9 +129,26 @@ module vnetModule '../../shared/bicep/modules/vnet/v1/vnet.bicep' = {
131129 }
132130}
133131
134- // TODO: We have a timing issue here in that we may get a null if this happens too quickly after the vnet module executes.
135- var apimSubnetResourceId = resourceId (resourceGroup ().name , 'Microsoft.Network/virtualNetworks/subnets' , vnetName , apimSubnetName )
136- var acaSubnetResourceId = resourceId (resourceGroup ().name , 'Microsoft.Network/virtualNetworks/subnets' , vnetName , acaSubnetName )
132+ // Create explicit dependencies so subnet IDs are always available after the VNet module completes.
133+ resource vnetExisting 'Microsoft.Network/virtualNetworks@2024-05-01' existing = {
134+ name : vnetName
135+ dependsOn : [
136+ vnetModule
137+ ]
138+ }
139+
140+ resource apimSubnetResource 'Microsoft.Network/virtualNetworks/subnets@2024-05-01' existing = {
141+ parent : vnetExisting
142+ name : apimSubnetName
143+ }
144+
145+ resource acaSubnetResource 'Microsoft.Network/virtualNetworks/subnets@2024-05-01' existing = {
146+ parent : vnetExisting
147+ name : acaSubnetName
148+ }
149+
150+ var apimSubnetResourceId = apimSubnetResource .id
151+ var acaSubnetResourceId = acaSubnetResource .id
137152
138153// 4. Azure Container App Environment (ACAE)
139154module acaEnvModule '../../shared/bicep/modules/aca/v1/environment.bicep' = if (useACA ) {
@@ -152,15 +167,15 @@ module acaModule1 '../../shared/bicep/modules/aca/v1/containerapp.bicep' = if (u
152167 params : {
153168 name : 'ca-${resourceSuffix }-mockwebapi-1'
154169 containerImage : IMG_MOCK_WEB_API
155- environmentId : acaEnvModule .outputs .environmentId
170+ environmentId : acaEnvModule ! .outputs .environmentId
156171 }
157172}
158173module acaModule2 '../../shared/bicep/modules/aca/v1/containerapp.bicep' = if (useACA ) {
159174 name : 'acaModule-2'
160175 params : {
161176 name : 'ca-${resourceSuffix }-mockwebapi-2'
162177 containerImage : IMG_MOCK_WEB_API
163- environmentId : acaEnvModule .outputs .environmentId
178+ environmentId : acaEnvModule ! .outputs .environmentId
164179 }
165180}
166181
@@ -175,9 +190,6 @@ module apimModule '../../shared/bicep/modules/apim/v1/apim.bicep' = {
175190 publicAccess : apimPublicAccess
176191 globalPolicyXml : revealBackendApiInfo ? loadTextContent ('../../shared/apim-policies/all-apis-reveal-backend.xml' ) : loadTextContent ('../../shared/apim-policies/all-apis.xml' )
177192 }
178- dependsOn : [
179- vnetModule
180- ]
181193}
182194
183195// 7. APIM Policy Fragments
@@ -200,7 +212,7 @@ module backendModule1 '../../shared/bicep/modules/apim/v1/backend.bicep' = if (u
200212 params : {
201213 apimName : apimName
202214 backendName : 'aca-backend-1'
203- url : 'https://${acaModule1 .outputs .containerAppFqdn }'
215+ url : 'https://${acaModule1 ! .outputs .containerAppFqdn }'
204216 }
205217 dependsOn : [
206218 apimModule
@@ -212,7 +224,7 @@ module backendModule2 '../../shared/bicep/modules/apim/v1/backend.bicep' = if (u
212224 params : {
213225 apimName : apimName
214226 backendName : 'aca-backend-2'
215- url : 'https://${acaModule2 .outputs .containerAppFqdn }'
227+ url : 'https://${acaModule2 ! .outputs .containerAppFqdn }'
216228 }
217229 dependsOn : [
218230 apimModule
@@ -227,12 +239,12 @@ module backendPoolModule '../../shared/bicep/modules/apim/v1/backend-pool.bicep'
227239 backendPoolDescription : 'Backend pool for ACA Hello World backends'
228240 backends : [
229241 {
230- name : backendModule1 .outputs .backendName
242+ name : backendModule1 ! .outputs .backendName
231243 priority : 1
232244 weight : 75
233245 }
234246 {
235- name : backendModule2 .outputs .backendName
247+ name : backendModule2 ! .outputs .backendName
236248 priority : 1
237249 weight : 25
238250 }
@@ -252,11 +264,13 @@ module apisModule '../../shared/bicep/modules/apim/v1/api.bicep' = [for api in a
252264 appInsightsId : appInsightsId
253265 api : api
254266 }
255- dependsOn : [
267+ dependsOn : useACA ? [
256268 apimModule
257269 backendModule1
258270 backendModule2
259271 backendPoolModule
272+ ] : [
273+ apimModule
260274 ]
261275}]
262276
@@ -277,8 +291,8 @@ module apimDnsPrivateLinkModule '../../shared/bicep/modules/dns/v1/dns-private-l
277291module acaDnsPrivateZoneModule '../../shared/bicep/modules/dns/v1/aca-dns-private-zone.bicep' = if (useACA && !empty (acaSubnetResourceId )) {
278292 name : 'acaDnsPrivateZoneModule'
279293 params : {
280- acaEnvironmentRandomSubdomain : acaEnvModule .outputs .environmentRandomSubdomain
281- acaEnvironmentStaticIp : acaEnvModule .outputs .environmentStaticIp
294+ acaEnvironmentRandomSubdomain : acaEnvModule ! .outputs .environmentRandomSubdomain
295+ acaEnvironmentStaticIp : acaEnvModule ! .outputs .environmentStaticIp
282296 vnetId : vnetModule .outputs .vnetId
283297 }
284298}
@@ -323,5 +337,3 @@ output apiOutputs array = [for i in range(0, length(apis)): {
323337 subscriptionPrimaryKey : apisModule [i ].?outputs .?subscriptionPrimaryKey ?? ''
324338 subscriptionSecondaryKey : apisModule [i ].?outputs .?subscriptionSecondaryKey ?? ''
325339}]
326-
327- // [ADD RELEVANT OUTPUTS HERE]
0 commit comments