azure-functions - Azure 函数将 blob 从一个容器复制到另一个具有不同 blob 名称的容器
问题描述
所以我在这里有两个问题,我试图在 Azure Functions 中使用 C# 来解决:
每当新的 blob 或目录到达源容器时,我想将 blob 从一个容器复制到同一存储帐户中的另一个容器。目标中的新 blob 应该具有不同的名称。
我从使用 Azure 函数 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);
}
}
}
}
Q1) 我在 var destinationContainer = myBl...行收到错误,因为未定义目标键。我想知道在 Destination 键中定义的位置和内容以及是否有人可以向我展示一个示例(我相信它应该是我在 localsetting.json 文件中的目标容器名称,但我正在努力正确定义它)。
Q2) 被复制的目标 blob 应该有一个不同的名称,它将类似于操作为 base64 的原始名称。我怎样才能做到这一点?
我是新来做这个 Azure 功能的事情,所以我会很慢,但希望能在这里得到一些快速的帮助。
谢谢
解决方案
Q1) 我在 var destinationContainer = myBl... 行收到错误,因为未定义目标键。我想知道在 Destination 键中定义的位置和内容,以及是否有人可以向我展示一个示例(我相信它应该是我在 localsetting.json 文件中的目标容器名称,但我正在努力正确定义它)。
您只需要容器的名称即可锁定您需要的容器。我认为它不需要涉及你提到的概念。
这是 API 参考:
Q2) 被复制的目标 blob 应该有一个不同的名称,它将类似于操作为 base64 的原始名称。我怎样才能做到这一点?
您可以查看此博客:(有详细步骤。)
http://gauravmantri.com/2012/11/28/storage-client-library-2-0-migrating-blob-storage-code/
您可以在创建接收器 blob 的 CloudBlockBlob 对象时设置 blob 名称。只需要注意 menthod 更改为 'StartCopyAsync'
public virtual Task<string> StartCopyAsync(CloudBlockBlob source);
这是 API 参考:
推荐阅读
- javascript - 如何按顺序处理 websocket 消息
- git - Github:从 PR 中删除添加的文件
- azure - 部署前 Azure clean $web
- reactjs - 使用自定义钩子封装 useEffect 和 AJAX 请求
- format - 如何在乳胶中漂浮长桌?
- android - 启动 geth 节点时应用程序在启动时崩溃
- architecture - 系统设计 观看直播的用户数
- android - 从一个文件导入到另一个文件的问题 - Flutter
- sql - postgreSQL:使用 WHERE .. LIKE 在列上分隔函数
- macos - 即使执行了协同设计过程,应用程序在 macOS High Sierra 10.13.6 中意外退出?