Azure 逻辑应用程序:如何 运行 Powershell 脚本或 Azure CLI?
Azure Logic Apps: how to run Powershell script or Azure CLI?
我正在构建我的 Azure Logic Apps 工作流,它应该检查一些条件并且 运行 遵循 Powershell:
Stop-AzureWebsiteJob -Name MyWebsite -JobName MyWebJob
Start-AzureWebsiteJob -Name MyWebsite -JobName MyWebJob -JobType Continuous
问题是:在 Azure 逻辑应用程序中调用此类脚本的最简单方法是什么? Powershell 似乎没有内置 block/connector,所以我想知道有哪些可能性。或者可能更容易 运行 具有类似操作的 az CLI 命令
目前,azure logic 似乎不支持 运行 powershell 和 cli 脚本,这里是 a voice in azure feedback,你可以投票。
解决方法:
如果要启动和停止webjob,可以在逻辑应用中调用Kudu WebJobs API。
您可以按照以下步骤操作。
1.Run 在本地使用 powershell 命令生成您的网络应用程序的授权令牌。
$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.In 逻辑应用程序,具体方法,URI,Headers(header 应该是
Authorization: Basic JGpveXdlYmFwcDI6NnJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzRktSdXlUcU5acUUzdFhNb05j
,注意 使用 space 来分隔 Basic
和令牌),例如,我在我的网络应用程序中启动了一个触发的网络作业。
触发结果:
所以你只需要按照上面的步骤,你的问题,参考APIS:
最后我找到了一个利用 Azure 自动化 的解决方案。从 Azure 门户我们可以创建新的资源,输入 Automation
:
创建资源后,我们可以在 运行books 选项卡下添加新的 Runbook:
Runbook 可以 运行Powershell Workflow and get authorized using AzureRunAsConnection
option (details 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 逻辑应用程序 运行 它。
使用 Powershell 作为函数语言(或任何其他支持的语言)的 http 触发器创建 Azure 函数。然后,您可以通过调用 Http 终结点在逻辑应用程序中轻松调用函数。
实际上现在 Azure 提供了此选项,而无需创建运行手册和自动化帐户。它仍处于预览模式,但似乎可以正常工作!
我正在构建我的 Azure Logic Apps 工作流,它应该检查一些条件并且 运行 遵循 Powershell:
Stop-AzureWebsiteJob -Name MyWebsite -JobName MyWebJob
Start-AzureWebsiteJob -Name MyWebsite -JobName MyWebJob -JobType Continuous
问题是:在 Azure 逻辑应用程序中调用此类脚本的最简单方法是什么? Powershell 似乎没有内置 block/connector,所以我想知道有哪些可能性。或者可能更容易 运行 具有类似操作的 az CLI 命令
目前,azure logic 似乎不支持 运行 powershell 和 cli 脚本,这里是 a voice in azure feedback,你可以投票。
解决方法:
如果要启动和停止webjob,可以在逻辑应用中调用Kudu WebJobs API。
您可以按照以下步骤操作。
1.Run 在本地使用 powershell 命令生成您的网络应用程序的授权令牌。
$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.In 逻辑应用程序,具体方法,URI,Headers(header 应该是
Authorization: Basic JGpveXdlYmFwcDI6NnJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzRktSdXlUcU5acUUzdFhNb05j
,注意 使用 space 来分隔 Basic
和令牌),例如,我在我的网络应用程序中启动了一个触发的网络作业。
触发结果:
所以你只需要按照上面的步骤,你的问题,参考APIS:
最后我找到了一个利用 Azure 自动化 的解决方案。从 Azure 门户我们可以创建新的资源,输入 Automation
:
创建资源后,我们可以在 运行books 选项卡下添加新的 Runbook:
Runbook 可以 运行Powershell Workflow and get authorized using AzureRunAsConnection
option (details 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 逻辑应用程序 运行 它。
使用 Powershell 作为函数语言(或任何其他支持的语言)的 http 触发器创建 Azure 函数。然后,您可以通过调用 Http 终结点在逻辑应用程序中轻松调用函数。
实际上现在 Azure 提供了此选项,而无需创建运行手册和自动化帐户。它仍处于预览模式,但似乎可以正常工作!