问题描述
我正在尝试从 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]"
}
}
我尝试了几种参数的变化,但找不到问题所在,而且错误并没有真正的帮助 我尝试过(除其他外):
- 删除参数前面的“已签名”(服务而不是已签名的服务)
- 服务、资源类型和权限的各种组合
- 不同的时间(更短、更长...)
解决方法
当我们定义变量时,我们不需要为变量指定数据类型。详情请参阅here。
因此请将您的模板更新为以下模板
"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]"
}
}
,
在@jim-xu 回答的帮助下发现了问题,这是最糟糕的解决方案:愚蠢的错误
我把“accountSasProperties”从参数改成了变量,过程中忘记去掉“defaultValue”,直接把值放到“accountSasProperties”下面 就我而言,变量的正确语法:
"accountSasProperties": {
"signedServices": "fb","signedResourceTypes": "co"
}
我顺便也删除了对象类型,正如@jim-xu 在他的回答中所指出的