Azure - 使用queuetrigger从webjob添加自定义域

时间:2017-08-21 09:02:32

标签: powershell azure azure-webjobs

我想要一个由队列触发的webjob。非常简单的东西。

然后,当作业触发时,我想提取值并针对Web应用程序创建自定义域。

最好的方法是什么? powershell webjobs可以由队列触发吗?

2 个答案:

答案 0 :(得分:1)

我还必须管理相同的场景。我找不到由用 powershell 编写的队列触发的 webjobs 的内容。所以我利用队列触发的Azure函数来设置自定义域并绑定Azure提供的SSL。我可以通过使用 powershell 来实现这一点。在我的情况下,我还必须在处理队列后进行数据库更新,这也实现了。请确保在“requirements.psd1”文件中添加所需的模块。

以下是我在队列触发的 azure 函数中使用的 powershell 脚本。确保还将环境变量添加到函数应用配置应用程序设置中(例如,WebAppName)。

using namespace System.Net
using namespace System.Management.Automation

param([string] $QueueItem, $TriggerMetadata)
Write-Host "PowerShell queue trigger function processed work item: $QueueItem"
Write-Host "Queue item insertion time: $($TriggerMetadata.InsertionTime)"

$cusDomainQueue = $QueueItem.Split("|")
$fqdn = $cusDomainQueue[0]
$userId = $cusDomainQueue[1]

if ($fqdn) {
    $webappname = $env:WebAppName 
    $resourcegroup = $env:ResourceGroupName 
    $azureAccountName = $env:AzureAppClientId
    $azurePassword = ConvertTo-SecureString $env:AzureAppClientSecret -AsPlainText -Force
    $azureTenant = $env:TenantId
    try {
        $azureCredentials = New-Object PSCredential($azureAccountName, $azurePassword)
        Write-Host "Initialized Credential"
        
        Disable-AzContextAutosave

        $azureProfile = Connect-AzAccount -ServicePrincipal `
            -Credential $azureCredentials `
            -Tenant $azureTenant
        Write-Host "Connected AzureAccount"

        $webApp = Get-AzWebApp -Name $webappname
        $hostNames = $webApp.HostNames
        $hostNames = $hostNames + $fqdn

        $setDomainName = Set-AzWebApp -Name $webappname `
        -ResourceGroupName $resourcegroup `
        -HostNames @($hostNames) `
        -DefaultProfile $azureProfile

        if ($setDomainName.EnabledHostNames -Contains $fqdn)
        {
            Write-Host "Set domain name successful"

            $setSSL = New-AzWebAppCertificate -Name $webappname `
                -ResourceGroupName $resourcegroup `
                -WebAppName $webappname `
                -HostName $fqdn `
                -AddBinding -SslState 'SniEnabled' `
                -DefaultProfile $azureProfile 
            Write-Host "Set SSL successful" 
            $body = "Custom domain mapped and SSL certificate binding completed."

            Write-Host "Updating db"
            Invoke-Sqlcmd -Query "<YourQuery>" -ConnectionString $env:ConnectionString
            Write-Host "Db updated"
        }
        else
        {
            Write-Host "Couldn't add domain $fqdn"
        }
    }
    catch {
        Write-Host "Exception occurred while adding domain $fqdn"
    }    
}

答案 1 :(得分:0)

查看这篇文章:

How to use Azure queue storage with the WebJobs SDK

您还可以使用Azure功能从队列中触发作业:

Create a function triggered by Azure Queue storage

Azure功能支持Powershell:

  • 创建功能应用
  • 创建PowerShell功能: Azure Function - Powershell templates

  • 现在您有一个由队列触发的PowerShell功能: Azure Function - QueueTrigger PowerShell