Azure Scheduler 和 Azure WebJobs 之间有着密切的关系。具体来说,Azure WebJobs 没有任何对调度的内部支持,WebJobs 依赖于 Azure 调度程序来调用*.scm.azurewebsites.net
网站。
因此,可以对这些服务使用 PowerShell cmdlet 来设置 Azure WebJobs,以便使用 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"; `
};
这有点冗长,所以用简单的英语来说,上面的脚本执行以下操作:
- 创建一个新的 Azure 网站。
- 创建并上传一个新的 WebJob。
- 创建一个新的 Azure 调度程序作业集合。
- 生成 HTTP 基本身份验证标头值。
- 创建一个新的 Azure 调度程序 HTTP 作业,该作业向 *.scm.azurewebsites.net API 发出经过身份验证的请求。
希望这可以使其他一些开发人员免于试图弄清楚这一点。