【问题标题】:Fetching Azure Batch account access keys in ARM template在 ARM 模板中获取 Azure Batch 帐户访问密钥
【发布时间】:2018-03-31 08:00:38
【问题描述】:

在我的 ARM 模板中,我想获取 batch_accountName 参数指定的批处理帐户的主键。 应该为批处理帐户获取密钥的表达式是:

"[listKeys(resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')), '2017-09-01')]"

它返回如下对象:

{
  "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 应该返回一个数组。但实际上,它会返回一个如上所示的对象。

我昨天才了解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')]"
  ]
}

【问题讨论】:

  • 你从哪里得到这个错误?
  • 你能发布你的手臂模板吗?至少是您尝试将访问密钥注入其中的资源
  • @4c74356b41 使用 powershell 部署模板时出现此错误
  • @Thomas 我已经编辑了原始问题,添加了我尝试注入此表达式的资源。
  • 在"dependsOn"数组中,可以试试添加这个资源[resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')]

标签: azure azure-resource-manager arm-template azure-batch


【解决方案1】:

为确保引用的资源已成功配置,您应将其声明为依赖项,在“dependsOn”数组中添加此行:

[resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')]

同样要将资源用作依赖项,它必须在模板中声明。

【讨论】:

  • 好的,这没有任何意义,因为资源已经创建,这个答案是误导和错误的
  • 抱歉,我真的不知道它为什么会起作用。随时编辑或发布新答案。
猜你喜欢
  • 1970-01-01
  • 2017-01-02
  • 2019-04-06
  • 2016-01-18
  • 1970-01-01
  • 2021-04-06
  • 2018-02-09
  • 2020-05-20
  • 2019-03-27
相关资源
最近更新 更多