Есть ли способ управления приложениями-функциями Azure с помощью Azure SDK? - PullRequest
0 голосов
/ 27 июня 2019

Я хотел бы написать веб-приложение, позволяющее пользователям писать сценарии C # и выполнять их с помощью функций Azure.

Я проверил документацию Azure SDK и не нашел пакетов nuget для управления приложениями-функциями.

Есть ли способ, которым я могу:

  • получить список доступных функций Azure
  • развернуть функцию Azure
  • обновить функцию Azure
  • удалить функцию Azure

, используя Azure SDK?Если нет, то как еще можно это сделать?


Обновление от 8 июля 2019

Я нашел функции List и Delete в Azure SDK (Microsoft.Azure.Management.WebSites):

Список: Документация MSDN

Удалить Документация MSDN

Я проверил их и ониРабота.Проблема заключается в методе Create _CreateFunctionWithHttpMessagesAsync ( Msdn Documentation )

Не ясно, какие параметры должны быть переданы для его работы.В настоящее время я называю это так:

        var response = await webClient.WebApps.CreateFunctionWithHttpMessagesAsync(ResourceGroupName, FunctionAppName, functionName, new FunctionEnvelope());

Примерно через 10-20 секунд возвращается сообщение об ошибке: «Microsoft.Azure.Management.WebSites.Models.DefaultErrorResponseException: операция вернула недопустимый код состояния« InternalServerError »»

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

1 Ответ

1 голос
/ 28 июня 2019

AFAIK нет доступных SDK. Но есть REST API's, которые позволяют вам выполнять все вышеуказанные операции.

Список функций

Функция удаления

Для обновления и развертывания вы можете использовать zip deployment для функций Azure.

Сгенерируйте FunctionApp.zip с помощью команды msbuild, указывающей на csproj ->

/p:DeployOnBuild=true /p:DeployTarget=Package;CreatePackageOnPublish=true

Приведенное выше сгенерирует zip-файл, который можно использовать в более поздней части.

Теперь 2-й шаг - получить Publish credentials, используя этот api , если вы получите ответ в следующем формате:

public class GetPublishCredentials
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Type { get; set; }
        public string Location { get; set; }
        public Properties Properties { get; set; }
    }
    public class Properties
    {
        public string Name { get; set; }
        public string PublishingUserName { get; set; }
        public string PublishingPassword { get; set; }
        public object PublishingPasswordHash { get; set; }
        public object PublishingPasswordHashSalt { get; set; }
        public object Metadata { get; set; }
        public bool IsDeleted { get; set; }
        public string ScmUri { get; set; }
    }

После получения учетных данных следуйте приведенному ниже коду, чтобы deploy или update ваши функции Azure

var base64Auth = Convert.ToBase64String(Encoding.Default.GetBytes
($"{functionCredentials.Properties.PublishingUserName}:{functionCredentials.Properties.PublishingPassword}"));
var stream = new MemoryStream(File.ReadAllBytes("zip file of azure function"));
using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("Authorization", "Basic " + base64Auth);
    var apiUrl = "https://" + parameters.FunctionAppName + ".scm.azurewebsites.net/api/zip/site/wwwroot";
    var httpContent = new StreamContent(stream);
    client.PutAsync(apiUrl, httpContent).Result;

}

Теперь ваше functionapp должно быть развернуто.

...