【问题标题】:Does Service Bus Trigger for Azure Function need Manage access rights to Service Bus Queue/Topic?Azure 功能的服务总线触发器是否需要管理对服务总线队列/主题的访问权限?
【发布时间】:2021-05-20 10:23:42
【问题描述】:

我发现 2 份来自 Microsoft 的文档(至少在我看来)给出了关于我应该使用 Listen 还是 Manage 访问权限的相互矛盾的信息。

扩展效率:对于服务总线触发器,使用管理资源的权限以实现最有效的扩展。使用 Listen 权限时,缩放不会那么准确,因为队列长度不能用于通知缩放决策。要了解有关在服务总线访问策略中设置权限的更多信息,请参阅共享访问授权策略。对于事件中心触发器,请参阅参考文章中的扩展指南。

来自Event-driven scaling in Azure Functions documentation

连接字符串的访问权限。可用值是管理和侦听。默认为manage,表示连接有Manage权限。如果您使用没有“管理”权限的连接字符串,请将 accessRights 设置为“listen”。否则,Functions 运行时可能无法尝试执行需要管理权限的操作。在 Azure Functions 版本 2.x 及更高版本中,此属性不可用,因为最新版本的服务总线 SDK 不支持管理操作。

来自Azure Service Bus trigger for Azure Functionsdocumentation

我从中读到的是,第一个说最好使用Manage 访问权限,但第二个说它甚至不受支持。第二个文档不是很清楚,但现在看来Listen是唯一的选择。

我是否理解有误,或者这里的文档有误导性?是否值得授予管理访问权限,或者它不会影响第二个文档似乎意味着的任何内容?

【问题讨论】:

    标签: azure triggers azure-functions azureservicebus


    【解决方案1】:

    Listen 应该是 Function 唯一需要的东西 - 特别是假设您不再部署 v1 Function。

    【讨论】:

    • 这是否意味着第一个文档认为 Manage 会提供更好的扩展性是完全错误的?
    • 请看下面我的回答,看来Listen毕竟还不够。
    【解决方案2】:

    Listen权限应该足够了,Manage权限只会导致秤控制器的Scale out/in行为的灵敏度差异,官方文档中提到“更有效”;这并不意味着Listen right 在缩放方面根本不起作用。

    在内部,规模控制器有很多规则来确定是否应该为功能应用分配更多工作人员;除了来自Manage 权限的规则,如果您使用Listen 权限,动态函数应用程序的其余缩放规则仍然适用(例如,当消息的队列长度增加时等)。

    如果您正在考虑使用正确的权限,您的函数应用的整体横向扩展行为应该不会受到显着影响,Manage 权限只会带来更多的横向扩展规则。

    【讨论】:

    • 另外值得一提的是,Manage 权限似乎从版本 2 开始在 Azure Functions 中不可用。
    • 请看下面我的回答,看来Listen毕竟还不够。
    【解决方案3】:

    似乎Listen 应该足够了,但在Service Bus Trigger 的情况下却不行。我首先从 Azure 支持人员那里得到了一条消息,Listen 就足够了,而且大部分都有效。但是每周一次在重新调整/重新启动应用程序服务期间,我收到一条死信的消息,从未达到我的功能。 Azure 中的基础架构出现故障,我收到 Microsoft 的回复,我需要打开 Manage 权限,因为这些权限缺失是导致此问题的原因(功能基础架构出于某种原因尝试执行管理操作并无法处理消息 10连续多次)。

    因此,尽管Manage 应该是可选的,但似乎存在一些问题使其在现实中成为强制性的。我确实相信这是 Azure 基础架构中的一个错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      • 2016-02-10
      • 2017-02-25
      • 2020-10-08
      相关资源
      最近更新 更多