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

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

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

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

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

Снимок экрана: шаг 2 задачи нового запланированного веб-задания на портале управления Azure

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


person Richard Slater    schedule 14.08.2014    source источник
comment
Вопрос не ясен. Вы спрашиваете, как установить расписание? Можете быть более конкретными?   -  person MikeWo    schedule 15.08.2014
comment
Честный комментарий, я добавил более подробную информацию в начале вопроса. Это помогает?   -  person Richard Slater    schedule 15.08.2014


Ответы (1)


Между Планировщиком Azure и веб-заданиями Azure существует тесная связь. В частности, веб-задания Azure не имеют внутренней поддержки планирования, веб-задания полагаются на планировщик Azure для вызова *.scm.azurewebsites.net веб-сайта. Взаимосвязь между веб-сайтами Azure, веб-заданиями и планировщиком

Таким образом, можно использовать командлеты PowerShell для этих служб, чтобы настроить запуск веб-заданий Azure по расписанию с помощью Планировщика 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, которое выполняет запрос с проверкой подлинности к API * .scm.azurewebsites.net.

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

person Richard Slater    schedule 22.08.2014
comment
Хорошо, я использовал вашу PowerShell (спасибо за фору), но у меня есть вопрос. Теперь я вижу веб-задание и задание планировщика на портале Azure, но в веб-задании указано, что оно выполняется по запросу. Задание выполняется через Планировщик, но хотелось бы, чтобы оно было связано как задание, созданное вручную. - person Schenz; 14.08.2015
comment
@Schenz, хотя с момента вашего вопроса прошло больше года, я добавляю ответ для других, нашедших это. Чтобы он выглядел связанным как задание, созданное вручную, назовите планировщик ‹sitename› - ‹jobname›. Azure выполняет связывание, просто проверяя имя задания. - person makhdumi; 12.10.2015
comment
Привет, @ Ричард-Слейтер, я пытаюсь повторить то, что ты здесь делаешь. Откуда вы берете свое дело? Не могли бы вы поделиться со мной своим процессом развертывания / создания -JobFile ~\Desktop\test.zip;? - person Haymaker87; 04.01.2016