首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个后端的Azure API管理

具有多个后端的Azure API管理
EN

Stack Overflow用户
提问于 2020-10-16 00:54:11
回答 1查看 454关注 0票数 0

我已设置并正在运行Azure API管理。应用程序接口调用是对在Azure虚拟机上运行FastAPI的Docker容器进行的。这个后端容器负责根据它收到的查询来运行一些AI模型。对于单个用户来说,这一切都很好。

问题是:这些AI模型是在容器内部的配置文件中定义的,并且是特定于用户的。

我想使用Azure API Management根据用户订阅来路由请求。换句话说,给定一个订阅,我想知道调用哪个后端(每个后端都是一个容器,为Azure虚拟机上的特定用户/公司运行特定的AI模型)。

实现这一目标的最好方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-16 20:33:15

我发现您可以使用入站策略来指定使用哪个后端,这取决于用户所属的组。对我答案的引用来自from here

转到您的API管理,选择组并创建与您的用户相关的组。然后将用户添加到他们各自的组中。

转到您的API,选择入站规则,并使用如下内容指定您的后端:

代码语言:javascript
复制
<policies>
<inbound>
    <choose>
        <when condition="@(context.User.Groups.Select(g => g.Name).Contains("org1"))">
            <set-backend-service base-url="https://abc-apim.azure-api.net/org1app" />
        </when>
        <when condition="@(context.User.Groups.Select(g => g.Name).Contains("org2"))">
            <set-backend-service base-url="https://abc-apim.azure-api.net/org2app" />
        </when>
        <otherwise>
            <return-response>
                <set-status code="401" reason="Unauthorized" />
                <set-header name="WWW-Authenticate" exists-action="override">
                    <value>Bearer error="Invalid user group"</value>
                </set-header>
            </return-response>
        </otherwise>
    </choose>
    <base />
</inbound>
<backend>
    <base />
</backend>
<outbound>
    <base />
</outbound>
<on-error>
    <base />
</on-error>
</policies>

我理解这种方法并不那么优雅,因为你必须在你的策略中硬编码后端路由。但它是有效的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64376326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档