Azure Bicep 使用范围属性内的三元运算符引用来自不同订阅的现有资源

问题描述 投票:0回答:1

在我的二头肌文件中,我尝试引用现有的 applicationInsights。问题是引用的应用程序见解会根据输入参数而变化。

有3个可能的模块可以引用,每个模块都位于不同的订阅和资源组中。

param prefix string = ''
@allowed([
  'dev'
  'test'
  'prod'
])
@description('Deployment environment type.')
param deploymentEnvironment string

var isProd = deploymentEnvironment == 'prod'
var isTest = deploymentEnvironment == 'dev'
var usingExistingAin = prefix == 'mrax' && (isProd || isTest)
var prodOrTestlabNameTest = isProd ? 'appInsightsName1' : 'appInsightsName2'
var subscriptionIdTest = usingExistingAin ? (isProd && usingExistingAin ? 'subscriptionID1' : 'subscriptionID2') : subscription().id


resource applicationInsightsResource 'Microsoft.Insights/components@2020-02-02' existing = {
    name: usingExistingAin ? prodOrTestlabNameTest : appInsightsName 
    scope: resourceGroup(subscriptionIdTest, rsgNameTest)
}

(条件 isTest 是正确的,即使看起来不正确)

现在我收到此错误:

资源命名空间“订阅”无效。 (代码:InvalidResourceNamespace)

我可以采取哪些不同的措施来完成这项工作?

注意: 我不想使用 2 资源方法(下面的代码)来执行此操作,因为现在这会导致此错误

AuthorizationFailed","message":"对象 ID 为“objectId”的客户端“clientId”无权在范围“/subscriptions/subID/resourcegroups/resourceGroupName/providers/”上执行操作“Microsoft.Insights/components/read” Microsoft.Insights/components/appInsightsName' 或范围无效。如果最近授予了访问权限,请刷新您的凭据。”

param storageAccountName string
param location string = resourceGroup().location

@allowed([
  'new'
  'existing'
])
param newOrExisting string = 'new'

resource saNew 'Microsoft.Storage/storageAccounts@2023-04-01' = if (newOrExisting == 'new') {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

resource saExisting 'Microsoft.Storage/storageAccounts@2023-04-01' existing = if (newOrExisting == 'existing') {
  name: storageAccountName
}

output storageAccountId string = ((newOrExisting == 'new') ? saNew.id : saExisting.id)
azure devops azure-bicep
1个回答
0
投票

我将将此标记为我问题的答案,尽管我觉得这是二头肌验证的一个更深层次的问题。 我在部署中没有注意到的是,不同的环境(由前缀确定)使用不同的订阅。 这意味着我不需要使用 subscription 来设置我的范围。 下面的代码有效


scope: resourceGroup(resourceGroupName)

© www.soinside.com 2019 - 2024. All rights reserved.