使用 ARM 模板创建 Azure 存储队列
Create Azure Storage Queue using ARM template
有没有办法通过 ARM 模板创建 Azure 存储队列?
我可以找到一种创建容器的方法,但找不到任何与通过 ARM 创建存储队列相关的内容。
不,目前无法执行此操作。最近才添加容器。
您始终可以使用 Azure Function hack:只需将函数作为嵌套部署调用并编写函数代码即可完成所有工作。
或者您可以使用 deployment scripts,它启用 运行 脚本作为 ARM 模板部署的一部分。 (目前正在预览中,您需要订阅预览。)
不,您不能通过 ARM 模板创建 Azure 存储队列,但我怀疑这是必要的,因为当您使用 e. G。 .NET SDK 要与队列交互,可以调用 CreateIfNotExistsAsync()
方法来创建它。示例:
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a container.
CloudQueue queue = queueClient.GetQueueReference("myqueue");
// Create the queue async if it doesn't already exist
await queue.CreateIfNotExistsAsync();
ARM逐步增加对创建存储账户子资源的支持:
- storage queues in version 2019-06-01
- containers in version 2018-02-01
- file shares in version 2019-04-01
描述带有队列的存储帐户的 ARM 模板:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"environment": {
"type": "string",
"allowedValues": [
"dev",
"test",
"prod"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"storageAccountSkuName": {
"type": "string",
"defaultValue": "Standard_LRS"
},
"storageAccountSkuTier": {
"type": "string",
"defaultValue": "Standard"
}
},
"variables": {
"uniquePart": "[take(uniqueString(resourceGroup().id), 4)]",
"storageAccountName": "[concat('mystorageaccount', variables('uniquePart'), parameters('environment'))]",
"queueName": "myqueue"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"apiVersion": "2019-06-01",
"sku": {
"name": "[parameters('storageAccountSkuName')]",
"tier": "[parameters('storageAccountSkuTier')]"
},
"kind": "StorageV2",
"properties": {},
"resources": [
{
"name": "[concat('default/', variables('queueName'))]",
"type": "queueServices/queues",
"apiVersion": "2019-06-01",
"dependsOn": [
"[variables('storageAccountName')]"
],
"properties": {
"metadata": {}
}
}
]
}
]
}
在添加支持之前,可以通过其他方式(最好到最坏)创建资源:
- 部署 ARM 模板期间,使用 tricks to execute arbitrary code
- 在整体部署期间,使用 Azure CLI 由部署工具调用
- 在应用程序启动代码中,使用 Azure SDK
队列的第二个选项使用 az storage queue create
命令。
You can add in the Azure CLI task in Azure DevOps, hook up the subscription and the give it an inline script like so:
call az storage queue create -n "awesome-queue-1" --connection-string "$(storageAccountConnectionString)"
If you're using a Windows build agent then you need to include the call
to ensure that multiple lines are executed. If you're on a Linux agent then call
can be omitted.
That connection string can be exported from your ARM template as an output parameter and then sucked into the DevOps variables using ARM Outputs.
-- Simon Timms: Creating Storage Queues in Azure DevOps @ Western Devs
似乎可以提供对它的支持,但从 2020 年 7 月 29 日起可能还没有正式支持。文档位于:https://docs.microsoft.com/en-us/azure/templates/microsoft.storage/storageaccounts/queueservices/queues
以下是对我有用的方法:
"variables": {
"storageAccountName": "[toLower(concat('sa', 'demo', parameters('environmentName')))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"apiVersion": "2019-06-01",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
},
{
"name": "[concat(variables('storageAccountName'), '/default/myqueue01')]",
"type": "Microsoft.Storage/storageAccounts/queueServices/queues",
"apiVersion": "2019-06-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
],
"properties": {
"metadata": {}
}
}
],
让我知道它是否适合你。
有没有办法通过 ARM 模板创建 Azure 存储队列? 我可以找到一种创建容器的方法,但找不到任何与通过 ARM 创建存储队列相关的内容。
不,目前无法执行此操作。最近才添加容器。
您始终可以使用 Azure Function hack:只需将函数作为嵌套部署调用并编写函数代码即可完成所有工作。
或者您可以使用 deployment scripts,它启用 运行 脚本作为 ARM 模板部署的一部分。 (目前正在预览中,您需要订阅预览。)
不,您不能通过 ARM 模板创建 Azure 存储队列,但我怀疑这是必要的,因为当您使用 e. G。 .NET SDK 要与队列交互,可以调用 CreateIfNotExistsAsync()
方法来创建它。示例:
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a container.
CloudQueue queue = queueClient.GetQueueReference("myqueue");
// Create the queue async if it doesn't already exist
await queue.CreateIfNotExistsAsync();
ARM逐步增加对创建存储账户子资源的支持:
- storage queues in version 2019-06-01
- containers in version 2018-02-01
- file shares in version 2019-04-01
描述带有队列的存储帐户的 ARM 模板:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"environment": {
"type": "string",
"allowedValues": [
"dev",
"test",
"prod"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"storageAccountSkuName": {
"type": "string",
"defaultValue": "Standard_LRS"
},
"storageAccountSkuTier": {
"type": "string",
"defaultValue": "Standard"
}
},
"variables": {
"uniquePart": "[take(uniqueString(resourceGroup().id), 4)]",
"storageAccountName": "[concat('mystorageaccount', variables('uniquePart'), parameters('environment'))]",
"queueName": "myqueue"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"apiVersion": "2019-06-01",
"sku": {
"name": "[parameters('storageAccountSkuName')]",
"tier": "[parameters('storageAccountSkuTier')]"
},
"kind": "StorageV2",
"properties": {},
"resources": [
{
"name": "[concat('default/', variables('queueName'))]",
"type": "queueServices/queues",
"apiVersion": "2019-06-01",
"dependsOn": [
"[variables('storageAccountName')]"
],
"properties": {
"metadata": {}
}
}
]
}
]
}
在添加支持之前,可以通过其他方式(最好到最坏)创建资源:
- 部署 ARM 模板期间,使用 tricks to execute arbitrary code
- 在整体部署期间,使用 Azure CLI 由部署工具调用
- 在应用程序启动代码中,使用 Azure SDK
队列的第二个选项使用 az storage queue create
命令。
You can add in the Azure CLI task in Azure DevOps, hook up the subscription and the give it an inline script like so:
call az storage queue create -n "awesome-queue-1" --connection-string "$(storageAccountConnectionString)"
If you're using a Windows build agent then you need to include the
call
to ensure that multiple lines are executed. If you're on a Linux agent thencall
can be omitted.That connection string can be exported from your ARM template as an output parameter and then sucked into the DevOps variables using ARM Outputs.
-- Simon Timms: Creating Storage Queues in Azure DevOps @ Western Devs
似乎可以提供对它的支持,但从 2020 年 7 月 29 日起可能还没有正式支持。文档位于:https://docs.microsoft.com/en-us/azure/templates/microsoft.storage/storageaccounts/queueservices/queues
以下是对我有用的方法:
"variables": {
"storageAccountName": "[toLower(concat('sa', 'demo', parameters('environmentName')))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"apiVersion": "2019-06-01",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
},
{
"name": "[concat(variables('storageAccountName'), '/default/myqueue01')]",
"type": "Microsoft.Storage/storageAccounts/queueServices/queues",
"apiVersion": "2019-06-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
],
"properties": {
"metadata": {}
}
}
],
让我知道它是否适合你。