我正在构建Azure Logic应用程序工作区,该工作区应检查某些条件并按照Powershell运行:
Stop-AzureWebsiteJob -Name MyWebsite -JobName MyWebJob
Start-AzureWebsiteJob -Name MyWebsite -JobName MyWebJob -JobType Continuous
问题是:在Azure Logic Apps中调用此类脚本的最简单方法是什么?看来Powershell没有内置的块/连接器,所以我想知道什么是可能的。或者也许通过类似的操作来运行z CLI命令可能更容易
答案 0 :(得分:1)
当前,azure逻辑似乎不支持运行powershell和cli脚本,这里是a voice in azure feedback,您可以投票。
解决方法:
如果要启动和停止网络作业,可以在逻辑应用程序中调用Kudu WebJobs API。
您可以按照以下步骤操作。
1。在本地运行powershell命令以生成Web应用程序的授权令牌。
$creds = Invoke-AzureRmResourceAction -ResourceGroupName joywebapp -ResourceType Microsoft.Web/sites/config -ResourceName joywebapp2/publishingcredentials -Action list -ApiVersion 2015-08-01 -Force
$username = $creds.Properties.PublishingUserName
$password = $creds.Properties.PublishingPassword
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$base64AuthInfo
是我们所需要的,应该像JGpveXdlYmFwcDI6NnJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzRktSdXlUcU5acUUzdFhNb05j
。
除非您reset the publish profile
,否则令牌将永远不会更改,因此您只需执行一次此步骤。
2。在逻辑应用程序中,特定于方法,URI,标头(标头应类似于
Authorization: Basic JGpveXdlYmFwcDI6NnJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzRktSdXlUcU5acUUzdFhNb05j
,注释使用空格分隔Basic
和令牌),例如,我在Web应用程序中启动了触发的Webjob。
触发结果:
因此,您只需按照上述步骤操作,有关问题,请参阅APIS:
答案 1 :(得分:0)
最后,我得到了一个利用 Azure Automation 的解决方案。从Azure门户,我们可以在Automation
中输入新的资源:
创建资源后,我们可以在Runbooks标签下添加新的 Runbook :
Runbook可以运行Powershell Workflow并使用AzureRunAsConnection
选项获得授权(详细信息here)。我的示例Powershell应该重新启动WebJob特定的应用程序服务,如下所示:
Workflow RestartMyWebJob
{
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
$AzureContext = Select-AzureRmSubscription -SubscriptionId $Conn.SubscriptionID
$Apiversion = "2015-08-01"
$ResourceGroupName = 'My-Resource-Group-Name'
$ResourceName = 'My-Resource-Group-Name/My-AppService--WebJob-Name'
Invoke-AzureRmResourceAction -ResourceGroupName $ResourceGroupName -ResourceType Microsoft.Web/sites/ContinuousWebJobs -ResourceName $ResourceName -Action stop -ApiVersion $Apiversion -Force
Invoke-AzureRmResourceAction -ResourceGroupName $ResourceGroupName -ResourceType Microsoft.Web/sites/ContinuousWebJobs -ResourceName $ResourceName -Action start -ApiVersion $Apiversion -Force
}
有了此工作流程设置,我们可以通过在逻辑中添加新的块从 Azure Logic Apps 中运行它。
答案 2 :(得分:0)
使用http触发器以Powershell作为函数语言(或任何其他受支持的语言)创建Azure函数。然后,您可以通过调用Http端点在Logic应用程序中轻松调用Function。