一个Apigee Api代理,每个环境具有不同的目标端点

时间:2014-04-08 09:46:50

标签: api rest environment-variables backend apigee

我是Apigee新手。

我们的主机名中包含环境,例如:

something.int.other.thing.co.uk
something.test.other.thing.co.uk
something.stage.other.thing.co.uk
something.prod.other.thing.co.uk

我希望能够将它们映射到apigee api代理本身的4个环境,分别是 int,test,stage,prod

我目前有一个Rest资源,例如:/resource

基本上我希望apigee api代理有一个休息资源,映射到4个不同的目标端点,具体取决于环境。

到目前为止,我已尝试从用户界面进行此操作,但未能这样做。

我一直在浏览文档,到目前为止我找到了这些文件:

  • 根据这个应该是可能的: “API代理可以包含零个或多个TargetEndpoints。” (TargetEndpoint部分)

http://apigee.com/docs/api-services/content/api-proxy-configuration-reference

  • 根据这些,您可以将routerule建立到代理端点,但我无法将其实现到targettendpoint:

Create a New Endpoint on an existing API Proxy with "No Target Endpoint"

One API proxy calling two different target endpoints

我也试过为此做一些事情,对于TargetEndpoint,我在那里测试了环境名称,但它不起作用:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TargetEndpoint name="default">
    <Description/>
    <Flows/>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
    <HTTPTargetConnection>
        <URL>something.int.other.thing.co.uk</URL>
    </HTTPTargetConnection>
    <RouteRule name="int">
        <Condition>environment.name == "int"</Condition>
        <TargetEndpoint>something.int.other.thing.co.uk</TargetEndpoint>
    </RouteRule>
    <RouteRule name="test">
        <Condition>environment.name == "test"</Condition>
        <TargetEndpoint>something.test.other.thing.co.uk/</TargetEndpoint>
    </RouteRule>
    <RouteRule name="stage">
        <Condition>environment.name == "stage"</Condition>
        <TargetEndpoint>something.stage.other.thing.co.uk/</TargetEndpoint>
    </RouteRule>
    <RouteRule name="prod">
        <Condition>environment.name == "prod"</Condition>
        <TargetEndpoint>something.prod.other.thing.co.uk</TargetEndpoint>
    </RouteRule>
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
</TargetEndpoint>

这可能吗?

请告诉我如何做到这一点?

我们正在迁移到Apigee,我们有一个艰难的截止日期,所以任何帮助将不胜感激!

谢谢!

2 个答案:

答案 0 :(得分:2)

Apigee支持Target Servers的概念 - 它从代理中抽象出后端主机,并提供负载平衡。可以将相同的目标服务器配置为指向每个环境的不同主机(此概念已内置于Apigee中)。

看一下,这应该会有所帮助。

SRIKANTH

答案 1 :(得分:1)

LoadBalancer和TargetServer设置在TargetEndpoint定义中,特别是在HTTPTargetConnection元素中。

查看此处的示例:

http://apigee.com/docs/api-services/content/load-balancing-across-backend-servers

如果您确实要将TargetEndpoint定义卷曲到API代理,请查看以下示例脚本以查看正在运行的API调用:

https://github.com/apigee/api-platform-samples/blob/master/tools/proxy_gen.sh

此脚本向您展示如何通过API调用创建API代理并更新ProxyEndpoint和TargetEndpoints。