为了账号安全,请及时绑定邮箱和手机立即绑定

禁止 Azure Function v1 访问云中的存储队列

禁止 Azure Function v1 访问云中的存储队列

C#
收到一只叮咚 2022-07-23 17:26:49
我有一个 Azure Function v1、SDK 1.0.24 试图访问我的存储队列,它在本地运行良好,我可以看到正确存储的消息。但是,一旦我将它发布到云端,它就会失败并出现 403 禁止,我已经没有线索了。我检查了几次连接字符串,检查了请求和响应中的时间戳,这些都很好。我尝试更新了几个NuGet包,但最后为什么它们坏了应该在本地工作而不是在线?我没有使用 Application Insights。在主机日志中我发现了这个错误:2019-01-16T12:38:32.460 [详细] 主机“44bf8a95b6652eed85464155b2b48df2”未能获取主机锁租约:Microsoft.WindowsAzure.Storage:远程服务器返回错误:(403) 禁止。我怀疑 Azure 中有一个与安全相关的设置阻止访问(但我对安全功能没有任何控制权,管理员也不知道可能是什么阻塞问题)。这个问题发生在 QueueTrigger 上,所以我做了一个小函数,可以替代访问来重现这个问题:public static class TestStorageQueue    {        [FunctionName("TestStorageQueue")]        public static async Task<HttpResponseMessage> Run(            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req,             TraceWriter log)        {            log.Info("START");            try            {                var response = new HttpResponseMessage(HttpStatusCode.OK);                log.Info(ConfigurationManager.ConnectionStrings["soastorage"]?.ConnectionString);                CloudStorageAccount storeAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["soastorage"]?.ConnectionString);                CloudQueueClient queueClient = storeAccount.CreateCloudQueueClient();                CloudQueue queue = queueClient.GetQueueReference("myqueue");                log.Info("trying to get message from queue");                var cloudMessage = queue.GetMessage(); // 403 happens here                log.Info("received message item");                var message = cloudMessage?.AsBytes;                var length = message?.Length ?? 0;更新 很有趣,搜索了2天的答案,我一发布就找到了原因。问题在于 Azure 存储防火墙,即使将所有 MS 服务列入白名单,它也会一直阻止它们。所以临时解决方案是关闭它,这不是真正的解决方案,所以问题仍然悬而未决
查看完整描述

1 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

尝试使用Function app outbound IPs配置存储防火墙,得出结论:

  1. 在 Azure 门户的功能面板上,平台功能> 资源浏览器。

  2. 查找outboundIpAddresses并将它们全部添加到防火墙 IP 列表中。

  3. 如果我们的功能在专用的应用服务计划(如基本、标准等)上,possibleOutboundIPAddresses如果我们想将计划扩展到其他定价层,请添加。

  4. 如果我们的功能在消费计划中,我们可能必须将功能应用的数据中心列入白名单。


查看完整回答
反对 回复 2022-07-23
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信