我正在尝试设置一个函数,以便在每次将更改推送到 blob 容器时对其进行快照。Azure Functions 中有一些非常简单的功能可以执行此操作,但它仅适用于通用存储帐户。我正在尝试使用仅限 blob 的存储帐户来执行此操作。我对 Azure 很陌生,所以我可能在处理这一切时都错了,但我找不到太多有用的信息。有没有办法做到这一点?
2 回答
正如@joy-wang 提到的,Azure Functions Runtime需要一个通用存储帐户。
需要通用存储帐户来配置AzureWebJobsStorage和AzureWebJobsDashboard设置(Azure 门户中的local.settings.json或Appsettings Blade):
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "my general purpose storage account connection string",
"AzureWebJobsDashboard": "my general purpose storage account connection string",
"MyOtherStorageAccountConnectionstring": "my blob only storage connection string"
}
}
如果要创建BlobTrigger Function,可以指定另一个连接字符串并在每次创建/更新 blob 时创建快照:
[FunctionName("Function1")]
public static async Task Run([BlobTrigger("test-container/{name}",
Connection = "MyOtherStorageAccountConnectionstring")]CloudBlockBlob myBlob,
string name, TraceWriter log)
{
log.Info($"C# Blob trigger function Processed blob\n Name:{name}");
await myBlob.CreateSnapshotAsync();
}
在 Visual Studio 中:
我试图为名为 的仅限 blob 的存储创建快照
,但失败了。我想你应该在屏幕截图中得到同样的错误。joyblobstorage
正如错误信息所说Microsoft.Azure.WebJobs.Host: Storage account 'joyblobstorage' is of unsupported type 'Blob-Only/ZRS'. Supported types are 'General Purpose'.
在门户中:
我尝试创建一个Function App并使用现有的 Storage,但它找不到我的blob-only storage account。门户中的 Azure 函数设置不应允许我们选择仅 blob 的存储帐户。请参考截图。
结论:
无法为仅Blob 的存储创建快照。在官方文档中,您可以看到Storage account requirements。
在应用服务中创建函数应用时,必须创建或链接到支持 Blob、队列和表存储的通用Azure 存储帐户。
此外,在App settings reference中,您可以看到
AzureWebJobsStorage
Azure Functions 运行时将此存储帐户连接字符串用于除 HTTP 触发函数之外的所有函数。存储帐户必须是支持 Blob、队列和表的通用帐户。
AzureWebJobsDashboard
可选的存储帐户连接字符串,用于存储日志并将其显示在门户的“监视器”选项卡中。存储帐户必须是支持 Blob、队列和表的通用帐户。
这是反馈,Azure 应用服务团队已经解释了存储帐户的要求,您可以参考它。