问题描述
我一直在使用QueueTrigger
测试我的Azure函数。我使用以下代码对队列进行了测试。
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=storage.....etc");
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference("mysecondqueue");
queue.CreateIfNotExists();
queue.AddMessage(new CloudQueueMessage($"Test {DateTime.Now}"));
这很好,但是我需要做的是将此代码放在Nuget包中。使我困扰的是,我必须将我的StorageAccount的ConnectionString
硬编码放入该Nuget包中。此软件包将由第三方应用程序使用。
我可以将Azure函数与HttpTrigger
一起使用,但是这种做法违背了使用队列的目的。
使用QueueTrigger
从Nuget程序包中放入队列而不暴露我的存储帐户的ConnectionString
的最佳方法是什么?
或者在这种情况下,我唯一的选择是使用HttpTrigger
吗?
解决方法
您可以检查以下两种方法,
- 如果您使用队列进行负载均衡,并且不想公开存储连接字符串,则可以添加另一个Azure函数,该函数仅通过http触发器将Nuget连接到Queue并包装存储连接字符串 Nuget->函数(http触发器)->队列>函数(队列触发器)-> ....
或
- 您可以使用Azure密钥保管库并将存储连接字符串存储在密钥保管库中,并通过服务原理或任何标准方法从nuget中访问连接字符串