【问题标题】:Trigger for Azure FunctionsAzure Functions 的触发器
【发布时间】:2022-01-19 08:35:35
【问题描述】:
我有一个与 Azure 相关的技术问题。
当我将文件上传到 Azure 文件共享时,我想自动触发从 Azure 文件共享到 Azure Blob 存储的数据复制活动。
我尝试使用 Azure 函数来实现上述功能,但 Azure 函数上没有文件共享触发器。
有没有人知道通过将文件上传到 Azure 文件共享来触发从 Azure 文件共享到 Blob 存储的复制活动的功能?
【问题讨论】:
标签:
azure
function
triggers
blob
fileshare
【解决方案1】:
谢谢Gaurav Mantri 和MikeM。发布您的建议作为帮助其他社区成员的答案。
通过将文件上传到 Azure 文件共享来触发从 Azure 文件共享到 Blob 存储的复制活动
为 blob 创建一个至少具有 read 权限的 SAS URL,然后将其用作文件复制操作的源 URL。试试下面的代码:
[FunctionName("MyBlobTrigger")]
public async void Run([BlobTrigger("uploads/{name}", Connection = "UploadStorageAccount")]CloudBlockBlob myBlob, string name, ILogger log, CancellationToken cancellationToken)
{
ShareClient share = new ShareClient(storageConnection, fileShareName);
ShareDirectoryClient directory = share.GetRootDirectoryClient();
ShareFileClient fileShare = directory.GetFileClient(name);
try
{
SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy
{
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1),
Permissions = SharedAccessBlobPermissions.Read
};
var sasToken = myBlob.GetSharedAccessSignature(sasConstraints);
var blobSasUrl = $"{myBlob.Uri.AbsoluteUri}{sasToken}";
fileShare.Create(myBlob.Properties.Length);
await fileShare.StartCopyAsync(new Uri(blobSasUrl));
可以参考Azure Function Blob Trigger copy file to File Share