客户需要定时发送信息到Azure Storage Queue,所以尝试使用Azure Runbook实现这个需求。

首先新增一个Azure Automation Account的资源。

使用Azure Runbook 发送消息到Azure Storage Queue-LMLPHP

因为要使用Az.storage模组发送消息到Queue, 但是这个模组并没有包含在默认模组中,所以要手动添加一下。选择 Shared resources 下面的 Modules gallery.

使用Azure Runbook 发送消息到Azure Storage Queue-LMLPHP

因为Az.Storage依赖Az.Accounts模组,所以我们先搜索Az.Accounts, 找到后,双击打开新窗口,点击Import。导入大概需要几分钟,导入成功后,我们重复同样的步骤添加Az.Storage模组。

使用Azure Runbook 发送消息到Azure Storage Queue-LMLPHP

 都添加成功后,我们就可以添加我们的Runbook了

从左边的菜单栏选择Runbooks,然后Create a runbook, 输入名字,选择类型Powershell

使用Azure Runbook 发送消息到Azure Storage Queue-LMLPHP

 具体的powershell脚本如下

$connectionName = "AzureRunAsConnection"

$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName

Write-Output($servicePrincipalConnection.TenantId)
 
Connect
-AzAccount ` -ServicePrincipal ` -Tenant $servicePrincipalConnection.TenantId ` -ApplicationId $servicePrincipalConnection.ApplicationId ` -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint $storageAccount=Get-AzStorageAccount -ResourceGroupName "******" -StorageAccountName "********" #这里输入你自己的resource group名字和storage account的名字。 $ctx=$storageAccount.Context $queue=Get-AzStorageQueue -Name "test-spfx" -Context $ctx $queueMessage = [Microsoft.Azure.Storage.Queue.CloudQueueMessage]::new("This is message from runbook") $queue.CloudQueue.AddMessageAsync($QueueMessage) Write-Output ("Send message to queue.")

这里的AzureRunAsConnection是使用的资源组默认样例的参数,可以根据自己的实际需要修改或添加。具体位置是在Shared Resources下面的Connections

使用Azure Runbook 发送消息到Azure Storage Queue-LMLPHP

最后可以测试runbook,去storage account下面检查,是否成功接收到消息。

01-26 14:20