Создание запланированного веб-задания Azure с помощью PowerShell

Я пытаюсь создать Azure WebJob для отправки BrokeredMessage В разделе Azure ServiceBus фактический акт создания и отправки сообщения тривиален, однако я не смог найти способ автоматизировать создание запланированного веб-задания.

автоматизированный рабочий процесс должен работать следующим образом:

  1. создайте новый веб-сайт Azure [сделано]
  2. создайте новый запуск Azure WebJob, загружающий файл PS1 [сделано]
  3. создайте новую коллекцию заданий планировщика Azure [Проверенной Концепции]
  4. создайте новое задание планировщика Azure, которое запускает WebJob

портал управления Azure предоставляет удобный пользовательский интерфейс для этой функции, который под обложками создает веб-задание Azure на выбранном веб-сайте, коллекцию заданий планировщика Azure и задание планировщика Azure:

Screenshot: Step 2 of New Scheduled Web Job task in Azure Management Portal

там, кажется, не быть аналогичный механизм создания запланированного веб-задания Azure с модулем Azure Service Management PowerShell. Конечно, можно создать новый WebJobs, Коллекции Планировщика Azure и рабочих мест - однако я понятия не имею, какой URL или очередь хранения планировщик Azure отправляет для планирования веб-заданий Azure.

1 ответов


существует тесная связь между планировщиком Azure и веб-заданиями Azure. В частности, у Azure WebJobs нет внутренней поддержки планирования, WebJobs использует планировщик Azure для вызова *.scm.azurewebsites.net сайт. Relationship between Azure WebSites, WebJobs and Scheduler

таким образом, можно использовать командлеты PowerShell для этих служб для настройки Azure WebJobs для запуска по расписанию с помощью Планировщика Azure.

$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"; `
  };

это немного долго, так что на простом английском языке выше скрипт делает следующее:

  1. создает новый веб-сайт Azure.
  2. создает и отправляет новое задание.
  3. создает новую коллекцию заданий планировщика Azure.
  4. генерирует значение заголовка HTTP Basic Authentication.
  5. создает новое HTTP-задание планировщика Azure, которое выполняет аутентифицированный запрос к *.scm.azurewebsites.net API.

надеюсь, это спасет несколько других разработчиков от царапин в голове, пытаясь понять это исключено.