gpt4 book ai didi

azure - 在另一个模块 Azure Bicep 中引用在一个模块中创建的资源?

转载 作者:行者123 更新时间:2023-12-02 06:23:35 25 4
gpt4 key购买 nike

假设我在 Azure Bicep 中有两个文件/模块,都在“main.bicep”中调用。其中一个称为“storage.bicep”,其中包含以下用于创建 storageAccount 的代码:

resource storageAccountTemp 'Microsoft.Storage/storageAccounts@2021-08-01' = {
name: 'tmpst4dnbnlp'
location: location
sku: {
name: storageAccountSku
}
kind: 'StorageV2'
properties: {
allowBlobPublicAccess: false
accessTier: 'Hot'
}
}

另一个文件包含一些 LogicApp 定义,名为“orchestration.bicep”。现在,在此文件中,有一部分我想引用模块“storage.bicep”中的“storageAccountTemp”资源,以提供 LogicApp 系统托管身份访问贡献者角色:

resource logicAppStorageAccountRoleAssignment 'Microsoft.Authorization/roleAssignments@2020-10-01-preview' = {
scope: 'xxx'
name: guid('ra-logicapp-${roleDefinitionId}')
properties: {
principalType: 'ServicePrincipal'
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
principalId: logicAppTest.identity.principalId
}
}

我需要指定范围(现在为“xxx”)。我不能说 resourcesGroup() 因为存储位于不同的资源组中。相反,我想引用 storageAccountTemp 对象。当对象位于不同的模块中时,这似乎不可能做到(我尝试输出名称和 id 并使用它们,但这没有被 Bicep 接受。

有什么方法可以实际引用“orchestration.bicep”文件中“storage.bicep”中的原始 storageAccountTemp 对象吗?

最佳答案

您需要使用现有资源声明。所以你会得到类似的东西:

resource storageAccountTemp 'Microsoft.Storage/storageAccounts@2021-08-01' existing = {
scope: resourceGroup('blah')
name: 'tmpst4dnbnlp
}

然后您可以将其用于 roleAssignment 的 scope 属性。如何获取 roleAssignment 模块的 blah(资源组名称)和 storageAccount 名称取决于...如果这两个模块在协调器中是对等的,那么通常这些参数是已知的并且可以传递给两个模块模块。如果失败,您可以使用存储模块的输出并将其作为参数传递给 roleAssignment。

有帮助吗?

关于azure - 在另一个模块 Azure Bicep 中引用在一个模块中创建的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73721936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com