使用 ARM 模板创建 SAS 令牌:错误 InvalidValuesForRequestParameters
Creating SAS token with ARM template: error InvalidValuesForRequestParameters
我正在尝试从 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]"
}
}
我尝试了几种参数变体,但找不到问题所在,错误并没有真正帮助
我试过(除其他外):
- 去掉参数前面的'signed'(services代替signedServices)
- 服务、资源类型和权限的各种组合
- 各种时间(更短、更长...)
我们在定义变量的时候,不需要指定变量的数据类型。详情请参考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",
"signedPermission": "rwdlacup",
"signedExpiry": "2021-11-30T00:00:00Z",
"signedResourceTypes": "co"
}
正如@jim-xu 在他的回答中指出的那样,我顺便也删除了对象类型
我正在尝试从 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]"
}
}
我尝试了几种参数变体,但找不到问题所在,错误并没有真正帮助 我试过(除其他外):
- 去掉参数前面的'signed'(services代替signedServices)
- 服务、资源类型和权限的各种组合
- 各种时间(更短、更长...)
我们在定义变量的时候,不需要指定变量的数据类型。详情请参考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",
"signedPermission": "rwdlacup",
"signedExpiry": "2021-11-30T00:00:00Z",
"signedResourceTypes": "co"
}
正如@jim-xu 在他的回答中指出的那样,我顺便也删除了对象类型