在 ARM 模板中获取 Azure Batch 帐户访问密钥
Fetching Azure Batch account access keys in ARM template
在我的 ARM 模板中,我想获取由 batch_accountName
参数指定的批处理帐户的主键。
应该为批处理帐户获取密钥的表达式是:
"[listKeys(resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')), '2017-09-01')]"
它 return 的对象如下所示:
{
"accountName": "my-acc-name",
"primary": "***",
"secondary": "***"
}
现在,我一直在尝试使用以下表达式获取 azure 批处理帐户主键但未成功(与上述表达式的唯一区别是我添加了 .primary
以获取 属性 对象):
"[listKeys(resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')), '2017-09-01').primary]"
我得到的错误是:Index (zero based) must be greater than or equal to zero and less than the size of the argument list..
,这意味着,如果我理解正确的话,listKeys
应该 return 一个数组。但实际上,它 return 是一个如上所示的对象。
我昨天才知道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" 数组中添加此行:
[resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')]
还要将资源用作依赖项,必须在模板中声明它。
在我的 ARM 模板中,我想获取由 batch_accountName
参数指定的批处理帐户的主键。
应该为批处理帐户获取密钥的表达式是:
"[listKeys(resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')), '2017-09-01')]"
它 return 的对象如下所示:
{
"accountName": "my-acc-name",
"primary": "***",
"secondary": "***"
}
现在,我一直在尝试使用以下表达式获取 azure 批处理帐户主键但未成功(与上述表达式的唯一区别是我添加了 .primary
以获取 属性 对象):
"[listKeys(resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')), '2017-09-01').primary]"
我得到的错误是:Index (zero based) must be greater than or equal to zero and less than the size of the argument list..
,这意味着,如果我理解正确的话,listKeys
应该 return 一个数组。但实际上,它 return 是一个如上所示的对象。
我昨天才知道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" 数组中添加此行:
[resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')]
还要将资源用作依赖项,必须在模板中声明它。