gpt4 book ai didi

azure - 如何在 ARM 模板中组合复制和奇异属性

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

如何在 Azure ARM 模板中创建一个数组,其中包含单个对象和使用复制机制动态创建的对象。

在我的 ARM 模板中,我想创建一个由“静态”元素和根据数组中的值动态创建的元素组合而成的列表。

例如我有以下资源:

{
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2019-09-01",
"name": "[parameters('keyVaultName')]",
...
"properties": {
...
// Option 1: I can do a singular accessPolicty
"accessPolicies": [
{
// here I reference a static object
"objectId": "[parameters('configuredResourceId')]",
...
}
],
// Option 2: Or iterate a list
"copy": [
{
// List of all properties per project. This will dynamically set the event processor (including secrets) and event hub.
"name": "accessPolicies",
"count": "[length(parameters('serviceNames'))]",
"input": {
"objectId": "[reference(resourceId('Microsoft.Web/sites', parameters('serviceNames')[copyIndex('accessPolicies')]), '2019-08-01', 'Full').identity.principalId]",
"tenantId": "[subscription().tenantId]",
"permissions": {
"keys": "[parameters('keysAppPermissions')]",
"secrets": "[parameters('secretsAppPermissions')]"
}
}
]
}
}

当我只包含选项 1 或选项 2 时,它可以工作。然而,包括两者(并非完全意外),这会给出我无法两次定义相同属性的错误:

 'Can not add property accessPolicies to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object.'.


在某些情况下,我可能可以通过使用变量中的副本然后将元素添加到数组来解决此问题。但当我想根据资源状态使用不同类型的函数(例如 fethcing Id)时,这不起作用。

最佳答案

使用“复制”方法添加 Key-Vault 策略以及添加静态 Key-Vault 策略时,我遇到了同样的问题。

我通过添加您在 ARM 中描述的静态策略来解决这个问题。接下来,我定义了另一个/子资源,称为:Microsoft.KeyVault/vaults/accessPolicies

我要做的最后一步是添加 dependentOn 属性并引用所属的 Key-Vault。

以 JSON 形式向您展示靠近您的代码的内容:

{
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2019-09-01",
"name": "[parameters('keyVaultName')]",
...
"properties": {
...
// Step 1: add static policies:
"accessPolicies": [
{
// here I reference a static object
"objectId": "[parameters('configuredResourceId')]",
...
}
],

}
},
...
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"name": "[concat(parameters('keyVaultName'), '/add')]",
"apiVersion": "2019-09-01",
// Step 2: add depending key-vault (parent resource)
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
],
"properties": {
// Step 3: add the copy method to iterate policies
"copy": [
{
// List of all properties per project. This will dynamically set the event processor (including secrets) and event hub.
"name": "accessPolicies",
"count": "[length(parameters('serviceNames'))]",
"input": {
"objectId": "[reference(resourceId('Microsoft.Web/sites', parameters('serviceNames')[copyIndex('accessPolicies')]), '2019-08-01', 'Full').identity.principalId]",
"tenantId": "[subscription().tenantId]",
"permissions": {
"keys": "[parameters('keysAppPermissions')]",
"secrets": "[parameters('secretsAppPermissions')]"
}
}
}
]
}
},
...

请尝试上述 ARM 流程。

关于azure - 如何在 ARM 模板中组合复制和奇异属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67322799/

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