如何通过 CI/CD 管道创建 Azure 函数应用程序消息队列?

How do I create an Azure function app message queue via the CI/CD pipeline?

我可以使用 Azure 门户创建函数应用程序和函数,并添加绑定以输出到消息队列。例如,通过使用函数下的集成选项,我可以添加一个新的输出,在本例中是一个消息队列:

添加新消息队列后,function.json 文件会更新为门户中的新绑定。

之前:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    }
  ]
}

之后:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "queue",
      "name": "myQueueItem",
      "queueName": "myoutputqueue",
      "connection": "AzureWebJobsStorage",
      "direction": "out"
    }
  ]
}

现在我可以在我的 Azure 函数中引用消息队列。

在门户中很容易做到。但我想通过构建管道创建队列存储(或任何其他类型),如果它尚不存在的话。我认为这在发布定义中最有意义,但我无法确定如何检测帐户和队列是否已经存在或如果不存在则创建它们。我想我可以通过 Azure Powershell 脚本发布定义任务使用 Azure Powershell 命令,并使用此处描述的命令:

Perform Azure Queue storage operations with Azure PowerShell

但是当我尝试在 Azure Powershell CLI 中手动使用 "Get-AzureStorageAccount" 来查看存储帐户是否存在时,我收到一条错误消息,指示 "Get-AzureStorageAccount" 不是有效的命令行开关。有没有办法通过 CI/CD 管道管理 Azure 函数存储和绑定?

这对我来说并不明显,但如果队列不存在,函数应用程序将创建队列,因此无需在管道中创建队列。终于看到提到它的 link:

Azure Queue storage bindings for Azure Functions