正在ARM模板中获取Azure批处理帐户访问密钥
在我的ARM模板中,我想获取由正在ARM模板中获取Azure批处理帐户访问密钥,azure,azure-resource-manager,arm-template,azure-batch,Azure,Azure Resource Manager,Arm Template,Azure Batch,在我的ARM模板中,我想获取由batch\u accountName参数指定的批处理帐户的主键。 应为批处理帐户提取密钥的表达式为: "[listKeys(resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')), '2017-09-01')]" 它返回如下所示的对象: { "accountName": "my-acc-name", "primary": "***", "secondar
batch\u accountName
参数指定的批处理帐户的主键。
应为批处理帐户提取密钥的表达式为:
"[listKeys(resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')), '2017-09-01')]"
它返回如下所示的对象:
{
"accountName": "my-acc-name",
"primary": "***",
"secondary": "***"
}
现在,我尝试使用以下表达式获取azure batch account主键失败(与上述表达式的唯一区别是我添加了.primary
,以便获取对象的属性):
我得到的错误是:索引(基于零)必须大于或等于零,并且小于参数列表的大小。
,这意味着,如果我理解正确,列表键
应该返回一个数组。但实际上,它返回一个如上所示的对象
我昨天才了解了ARM模板,所以我可能做错了什么,这在目前对我来说并不明显,而且我还没有在互联网的荒原中偶然发现这样的错误,人们通常会询问如何获取存储密钥,这对我来说很好,我无法获取批量帐户密钥
编辑:
这里是我尝试注入这个表达式的资源。该资源是数据工厂中的批量链接服务
{
"name": "[concat(parameters('factoryName'), '/AzureBatchLinkedService')]",
"type": "Microsoft.DataFactory/factories/linkedServices",
"apiVersion": "2017-09-01-preview",
"properties": {
"type": "AzureBatch",
"typeProperties": {
"accountName": "[parameters('batch_accountName')]",
"accessKey": {
"type": "SecureString",
"value": "[listKeys(resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')), '2017-09-01').primary]"
},
"batchUri": "[concat('https://', parameters('batch_accountName'), '.' , parameters('batch_region'), '.batch.azure.com')]",
"poolName": "[parameters('batch_poolName')]",
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
}
}
},
"dependsOn": [
"[concat(variables('factoryId'), '/linkedServices/AzureStorageLinkedService')]"
]
}
为确保已成功配置引用的资源,应将其声明为依赖项,在“dependsOn”数组中添加此行:
另外,要将资源用作依赖项,必须在模板中声明它。此错误出现在哪里?可以发布arm模板吗?至少是您尝试将访问密钥注入的资源it@4c74356b41我在使用部署模板时遇到此错误powershell@Thomas我已经编辑了原始问题,添加了我尝试将此表达式插入的资源。在
“dependsOn”
数组中,您可以尝试添加此资源[resourceId]吗('Microsoft.Batch/batchAccounts',parameters('Batch_accountName')]
好的,这没有任何意义,因为资源已经创建,这个答案是误导性的和错误的。对不起,我不知道它为什么工作。请随意编辑或发布新答案。
{
"name": "[concat(parameters('factoryName'), '/AzureBatchLinkedService')]",
"type": "Microsoft.DataFactory/factories/linkedServices",
"apiVersion": "2017-09-01-preview",
"properties": {
"type": "AzureBatch",
"typeProperties": {
"accountName": "[parameters('batch_accountName')]",
"accessKey": {
"type": "SecureString",
"value": "[listKeys(resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')), '2017-09-01').primary]"
},
"batchUri": "[concat('https://', parameters('batch_accountName'), '.' , parameters('batch_region'), '.batch.azure.com')]",
"poolName": "[parameters('batch_poolName')]",
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
}
}
},
"dependsOn": [
"[concat(variables('factoryId'), '/linkedServices/AzureStorageLinkedService')]"
]
}
[resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')]