如何在Azure Function中获取多个Blob及读取local.settings.json配置
同容器第二个Blob输入绑定实现方法
你可以直接在Run方法的参数列表中新增Blob输入绑定声明,复用同一个存储连接配置即可。如果需要关联触发Blob的文件名参数,可直接复用触发器中定义的{name}绑定表达式,示例如下:
public static async Task Run( [BlobTrigger("csv/{name}.csv", Connection = "StorageConnectionAppSetting")] Stream myBlob, string name, // 新增同容器下的第二个Blob输入绑定,此处示例为读取固定文件名的配置文件 [Blob("csv/global_config.json", Connection = "StorageConnectionAppSetting")] Stream configBlob, // 若要读取和触发Blob同名的其他后缀文件,可写成如下形式 // [Blob("csv/{name}_meta.json", Connection = "StorageConnectionAppSetting")] Stream metaBlob, ILogger log) { // 直接使用configBlob/metaBlob读取对应文件内容即可 }
如果第二个Blob的文件名需要动态逻辑判断,无法通过预定义绑定表达式实现,也可以直接通过Blob SDK构造客户端读取,参考下文的配置读取方法获取存储连接字符串即可。
本地配置读取方法
local.settings.json中Values节点下的所有配置项,在Azure Function运行时会自动被注入为进程环境变量,你可以直接通过环境变量API读取:
- 首先在
local.settings.json的Values节点中添加你的APIKey配置:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "你的存储连接串", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "StorageConnectionAppSetting": "你的存储连接串", "ApiKey": "你要使用的API密钥" } }
- 在代码中直接读取配置:
var apiKey = Environment.GetEnvironmentVariable("ApiKey", EnvironmentVariableTarget.Process);
部署到Azure云上时,不需要修改代码,直接在函数应用的「配置」-「应用程序设置」中添加同名的ApiKey配置项即可自动生效。
内容的提问来源于stack exchange,提问作者Juan Pablo Guerra
相关产品推荐
相关产品推荐

