如何在Azure函数Blob触发器中创建Blob快照并设置为Cool存储层?
实现Blob触发器自动创建快照并设置为Cool存储层
完全可以在Blob触发器中实现这个需求,核心是捕获创建快照后返回的快照对象,直接修改它的存储层属性即可。另外建议把同步阻塞的调用改成异步模式,避免线程问题。
以下是修正并补充完整的代码:
[FunctionName("CreateSnapshotAndCool")] public static async Task Run( [BlobTrigger("images/{name}", Connection = "AzureWebJobsStorage")] CloudBlockBlob myBlob, string name, ILogger log) { log.LogInformation($"C# Blob trigger function processed blob\n Name: {name}"); log.LogInformation($"Taking snapshot for blob: {name}"); // 创建快照并获取对应的快照Blob实例 var snapshotBlob = await myBlob.SnapshotAsync(); // 将刚创建的快照设置为Cool存储层 await snapshotBlob.SetStandardBlobTierAsync(StandardBlobTier.Cool); log.LogInformation($"Successfully created snapshot and set to Cool tier for blob: {name}"); }
关键说明:
SnapshotAsync()方法会直接返回新生成的快照对应的CloudBlockBlob对象,无需额外查询SetStandardBlobTierAsync(StandardBlobTier.Cool)仅修改该快照的存储层,原Blob和存储账户的Hot层设置不受影响- 改用
async/await替代.Wait(),避免线程阻塞和潜在的死锁风险
内容的提问来源于stack exchange,提问作者andrelange91
相关产品推荐
相关产品推荐

