【问题标题】:Generate a Blob Container by C# Azure Function通过 C# Azure 函数生成 Blob 容器
【发布时间】:2021-10-08 06:31:35
【问题描述】:

我想创建一个使用 HTTP 触发器的函数,当它被 HTTP 信号触发时,它将在 Blob 存储中创建一个容器。

【问题讨论】:

    标签: c# triggers azure-functions blob


    【解决方案1】:

    在visual studio中创建一个Http Trigger并使用代码创建容器

    这里是使用 Http Trigger 创建容器的代码

    using System;
    using System.IO;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Extensions.Http;
    using Microsoft.AspNetCore.Http;
    using Microsoft.Extensions.Logging;
    using Newtonsoft.Json;
    using Microsoft.Azure.Storage;
    using Microsoft.Azure.Storage.Blob;
    using Microsoft.Extensions.Configuration;
    namespace AzFunctions
    {
    public  static  class UploadBlobHttpTriggerFunc
        {
            [FunctionName("UploadBlobHttpTriggerFunc")]
            public  static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log, ExecutionContext context)
            {
            log.LogInformation($"C# Http trigger function executed at: {DateTime.Now}");
           CreateContainerIfNotExists(log, context);
    
            CloudStorageAccount storageAccount = GetCloudStorageAccount(context);
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference("dummy-messages");
    
            for (int i = 1 ; i <= 5; i++)
            {
            string randomStr = Guid.NewGuid().ToString();
            CloudBlockBlob blob = container.GetBlockBlobReference(randomStr);
    
            var serializeJesonObject = JsonConvert.SerializeObject(new { ID = randomStr, Content = $"<html><body><h2> This is a Sample email content {i}! </h2></body></html>" });
            blob.Properties.ContentType = "application/json";
    
            using (var ms = new MemoryStream())
            {
            LoadStreamWithJson(ms, serializeJesonObject);
            await blob.UploadFromStreamAsync(ms);
            }
            log.LogInformation($"Bolb {randomStr} is uploaded to container {container.Name}");
            await blob.SetPropertiesAsync();
            }
    
            return  new OkObjectResult("UploadBlobHttpTrigger function executed successfully!!");
            }
    
            private  static  void CreateContainerIfNotExists(ILogger logger, ExecutionContext executionContext)
            {
            CloudStorageAccount storageAccount = GetCloudStorageAccount(executionContext);
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            string[] containers = new  string[] { "dummy-messages" };
            foreach (var item in containers)
            {
            CloudBlobContainer blobContainer = blobClient.GetContainerReference(item);
            blobContainer.CreateIfNotExistsAsync();
            }
            }
    
            private  static CloudStorageAccount GetCloudStorageAccount(ExecutionContext executionContext)
            {
            var config = new ConfigurationBuilder()
            .SetBasePath(executionContext.FunctionAppDirectory)
            .AddJsonFile("local.settings.json", true, true)
            .AddEnvironmentVariables().Build();
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(config["CloudStorageAccount"]);
            return storageAccount;
            }
            private  static  void LoadStreamWithJson(Stream ms, object obj)
            {
            StreamWriter writer = new StreamWriter(ms);
            writer.Write(obj);
            writer.Flush();
            ms.Position = 0;
            }
            }
            }
    

    查看HTTP Trigger 了解更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-28
      • 2021-03-19
      • 2019-03-25
      • 2016-07-25
      • 2019-10-25
      • 2019-10-10
      • 2020-08-07
      相关资源
      最近更新 更多