0

我正在尝试从 ARM 模板生成 SAS 令牌,以允许我的模板随后访问 blob 存储(包括链接模板)中的资源。SAS 令牌应该存储在我也在此模板中创建的保险库中。存储帐户独立存在(在另一个 RG 中)

但是,我收到以下错误:

    {
          "code": "InvalidValuesForRequestParameters",
          "message": "Values for request parameters are invalid: signedPermission,signedExpiry,signedResourceTypes,signedServices."
     }

我的模板有这个变量和行来生成 SAS 令牌:

        "variables": {
            "vaultName": "[concat('hpc',uniqueString(resourceGroup().id, parameters('keyVaultName')))]",
            "accountSasProperties": {
                "type": "object",
                "defaultValue": {
                    "signedServices": "fb",
                    "signedPermission": "rwdlacup",
                    "signedExpiry": "2021-11-30T00:00:00Z",
                    "signedResourceTypes": "co"
                }
            }
        },
    (...)
          {
                "apiVersion": "2018-02-14",
                "type": "Microsoft.KeyVault/vaults/secrets",
                "dependsOn": [
                    "[concat('Microsoft.KeyVault/vaults/', variables('vaultName'))]"
                ],
                "name": "[concat(variables('vaultName'), '/', 'StorageSaSToken')]",
                "properties": {
                    "value": "[listAccountSas(resourceId(parameters('StorageAccountRg'),'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2018-07-01', variables('accountSasProperties')).accountSasToken]"
                }
            }

我尝试了参数的几种变体,但找不到问题所在,并且该错误并没有真正帮助我尝试(除其他外):

  • 删除参数前面的“签名”(服务而不是签名服务)
  • 服务、资源类型和权限的各种组合
  • 不同的时间(更短,更长......)
4

2 回答 2

2

当我们定义变量时,我们不需要为变量指定数据类型。更多详情,请参阅此处在此处输入图像描述

所以请将您的模板更新为以下模板

"variables": {
            "vaultName": "[concat('hpc',uniqueString(resourceGroup().id, parameters('keyVaultName')))]",
            "accountSasProperties": {
                    "signedServices": "fb",
                    "signedPermission": "rwdlacup",
                    "signedExpiry": "2021-11-30T00:00:00Z",
                    "signedResourceTypes": "co"
            }
        },
(...)
          {
                "apiVersion": "2018-02-14",
                "type": "Microsoft.KeyVault/vaults/secrets",
                "dependsOn": [
                    "[concat('Microsoft.KeyVault/vaults/', variables('vaultName'))]"
                ],
                "name": "[concat(variables('vaultName'), '/', 'sas')]",
                "properties": {
                    "value": "[listAccountSas(resourceId(parameters('StorageAccountRg'),'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2018-07-01', variables('accountSasProperties')).accountSasToken]"
                }
            }

在此处输入图像描述

于 2021-06-17T07:54:47.010 回答
0

在@jim-xu 答案的帮助下找到了问题,这是最糟糕的解决方案:愚蠢的错误

我将“accountSasProperties”从参数切换到变量,在此过程中,我忘记删除“defaultValue”,并将值直接放在“accountSasProperties”下,在我的例子中,变量的正确语法是:

           "accountSasProperties": {
                 "signedServices": "fb",
                 "signedPermission": "rwdlacup",
                 "signedExpiry": "2021-11-30T00:00:00Z",
                 "signedResourceTypes": "co"
            }

正如@jim-xu 在他的回答中指出的那样,我顺便也删除了对象类型

于 2021-06-17T13:15:45.103 回答