我是 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.
我目前为他们准备了一个休息资源,例如:
/resource
基本上我希望 apigee api 代理具有一个 rest 资源,以映射到 4 个不同的目标端点,具体取决于环境。
到目前为止,我已经尝试从 UI 进行操作,但未能成功。
我一直在浏览文档,到目前为止我已经找到了这些:
http://apigee.com/docs/api-services/content/api-proxy-configuration-reference
我也尝试按照这个思路做一些事情,对于 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 支持 Target Servers 的概念——它从代理中抽象出后端主机并提供负载平衡。相同的目标服务器可以配置为指向每个环境的不同主机(这个概念已经内置到 Apigee 中)。
看看,这应该有帮助。
斯里坎特
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。