Create a Scheduled Azure WebJob with PowerShell Create a Scheduled Azure WebJob with PowerShell powershell powershell

Create a Scheduled Azure WebJob with PowerShell


There is a close relationship between Azure Scheduler and Azure WebJobs. Specifically Azure WebJobs does not have any internal support for scheduling, WebJobs relies on the Azure Scheduler to call into the *.scm.azurewebsites.net website.Relationship between Azure WebSites, WebJobs and Scheduler

As such it is possible to use PowerShell cmdlets for these services to setup Azure WebJobs to be triggered on schedule using Azure Scheduler.

$location = "North Europe";$site = New-AzureWebsite -Location $location `  -Name "amido-test-website";$job = New-AzureWebsiteJob -Name $site.Name `  -JobName "amido-test-job" `  -JobType Triggered `  -JobFile ~\Desktop\test.zip;$jobCollection = New-AzureSchedulerJobCollection `  -Location $location `  -JobCollectionName "amido-test-job-collection";$authPair = "$($site.PublishingUsername):$($site.PublishingPassword)";$pairBytes = [System.Text.Encoding]::UTF8.GetBytes($authPair);$encodedPair = [System.Convert]::ToBase64String($pairBytes);New-AzureSchedulerHttpJob `  -JobCollectionName $jobCollection[0].JobCollectionName `  -JobName "test" `  -Method POST `  -URI "$($job.Url)\run" `  -Location $location `  -StartTime "2014-01-01" `  -Interval 1 `  -Frequency Minute `  -EndTime "2015-01-01" `  -Headers @{ `    "Content-Type" = "text/plain"; `    "Authorization" = "Basic $encodedPair"; `  };

It's a little long winded so in plain english the above script does the following:

  1. Creates a new Azure Website.
  2. Creates and Uploads a new WebJob.
  3. Creates a new Azure Scheduler Job Collection.
  4. Generates the HTTP Basic Authentication header value.
  5. Creates a new Azure Scheduler HTTP Job that makes an authenticated request to the *.scm.azurewebsites.net API.

Hope this saves a few other developers from scratching their head trying to figure this one out.