Azure functions Azure函数将blob从一个容器复制到另一个具有不同blob名称的容器

Azure functions Azure函数将blob从一个容器复制到另一个具有不同blob名称的容器,azure-functions,azure-storage-blobs,azure-function-app,Azure Functions,Azure Storage Blobs,Azure Function App,因此,我这里有两个问题,我正试图在Azure函数中使用C#来实现这两个问题: 我假设每当一个新的blob或目录到达源容器时,就将blob从一个容器复制到同一存储帐户中的另一个容器。目标中的新blob应具有不同的名称 我从使用Azure function SDK的Visual Studio中的代码开始,一直到现在: namespace CopyBlobs { public static class CopyBlob { [FunctionName("Fun

因此,我这里有两个问题,我正试图在Azure函数中使用C#来实现这两个问题:

我假设每当一个新的blob或目录到达源容器时,就将blob从一个容器复制到同一存储帐户中的另一个容器。目标中的新blob应具有不同的名称

我从使用Azure function SDK的Visual Studio中的代码开始,一直到现在:

namespace CopyBlobs
{
    public static class CopyBlob
    {
        [FunctionName("Function1")]
        public static void Run([BlobTrigger("SourceContainerName/{name}", Connection = "AzureWebJobsStorage")]CloudBlockBlob myBlob, IDictionary<string, string> metadata, string name, ILogger log)
         
        
        
        {
            log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n ContentMD5: {myBlob.Properties.ContentMD5} \n Size: {myBlob.Properties.Length}");
            log.LogInformation($"metadata count {metadata.Count}");
            {
                var destinationContainer = myBlob.Container.ServiceClient.GetContainerReference(metadata["Destination"]);
                destinationContainer.CreateIfNotExistsAsync();                
                CloudBlockBlob outputBlob = destinationContainer.GetBlockBlobReference(name);           
                outputBlob.StartCopyAsync(myBlob);
            }
        }
    }
}
namespace CopyBlobs
{
公共静态类CopyBlob
{
[功能名称(“功能1”)]
公共静态无效运行([BlobTrigger(“SourceContainerName/{name}”,Connection=“AzureWebJobstorage”)]CloudBlockBlob myBlob,IDictionary元数据,字符串名称,ILogger日志)
{
log.LogInformation($“C#Blob触发器函数已处理Blob\n名称:{Name}\n ContentMD5:{myBlob.Properties.ContentMD5}\n大小:{myBlob.Properties.Length}”);
log.LogInformation($“元数据计数{metadata.count}”);
{
var destinationContainer=myBlob.Container.ServiceClient.GetContainerReference(元数据[“目的地]);
destinationContainer.CreateIfNotExistsAsync();
CloudBlockBlob outputBlob=destinationContainer.GetBlockBlobReference(名称);
outputBlob.StartCoyAsync(myBlob);
}
}
}
}
Q1)我在var destinationContainer=myBl行上得到错误。。。as目标键未定义。我想知道在目标键中定义的位置和内容,以及是否有人可以给我看一个示例(我相信它应该是localsetting.json文件中的目标容器名称,但我正在努力正确定义它)

Q2)被复制的目标blob应该有一个不同的名称,它将类似于操纵到base64的原始名称。我怎样才能做到这一点

我是新做这个Azure功能的东西,所以我会慢慢来,但希望能在这里得到一些快速的帮助

谢谢

Q1)我在var destinationContainer=myBl行上得到错误。。。作为 未定义目标键。我想知道去哪里,做什么 在目标键中定义,如果有人可以向我展示一个示例(I 相信它应该是我的目的地容器名称 localsetting.json文件,但我很难正确定义它)

您只需要容器的名称即可锁定所需的容器。我认为不需要涉及你提到的概念

这是API参考:

_

Q2)复制的目标blob应具有不同的名称, 它将类似于操纵到base64的原始名称。怎么 我能做到吗

你可以查看这个博客:(这里有详细的步骤。)

可以在创建接收器blob的CloudBlockBlob对象时设置blob名称。只需注意方法已更改为“StartCopySync”

公共虚拟任务StartCoyAsync(CloudBlockBlob源代码)

这是API参考: