API 代理 YAML 配置参考文档

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

此页面介绍了 Apigee 功能模板的 YAML 格式:templatefeatureproxy 文档类型及其所有字段。如需了解相关概念,请参阅使用 YAML 配置代理。如需查看演练,请参阅根据 YAML 模板创建 API 代理

惯例

  • 字段名称使用 camelCase 格式。例如,schemaVersionbasePathdisplayNamefaultRulesdefaultFaultRulehttpTargetConnection
  • 架构严格。导入文件时,未知字段会导致错误。
  • 必填字段。解析文件时,系统只会验证 gatewayschemaVersion。下表中标记为的其他字段实际上也是必需的,才能生成可正常运行的 API 代理。

常见的顶级字段

每个 templatefeatureproxy 文档都以以下字段开头。

名称 说明 默认值 是否必需?
gateway 目标网关。必须为 apigee 不适用
schemaVersion 相应文档的架构版本。必须为 1.0.0 不适用
name 文档的名称。对于模板或代理,这是写入到软件包中的 API 代理名称。 不适用
type 文档类型:templatefeatureproxy 不适用
description 人类可读的说明。 不适用
priority 一个整数,用于控制在编译期间应用功能的顺序。系统会优先应用编号较小的规则。 100

文档类型:模板

模板是您导入的入口点。它会组合功能,并定义代理的端点和路由。模板不包含政策或资源;这些内容来自其引用的功能。

名称 说明 默认值 是否必需?
features 要组合到代理中的功能文件名称列表。每个名称都必须解析为与模板位于同一目录中的文件。 []
parameters 提供特征默认值的形参值列表。 []
endpoints 定义基本路径和路由的端点列表。 []
targets 定义后端连接的目标列表。 []

文档类型:功能

功能是可重复使用的配置单元,您可以将其纳入模板中。 功能包含政策和资源,并且可以为编译后的代理贡献流、端点和目标。除了常见的顶级字段之外,功能还包含以下字段。

名称 说明 默认值 是否必需?
displayName 人类可读的显示名称。 不适用
uid 用于为功能政策和资源设置命名空间的唯一标识符。如果未设置,则使用 name 不适用
documentation 扩展了该功能的文档。 不适用
categories 自由格式的类别标签列表。 []
parameters 功能定义的形参列表。 []
defaultEndpoint 一个代理端点,其流和默认故障规则会合并到已编译代理的每个端点中。使用此元素将功能的政策附加到请求或响应流。 不适用
defaultTarget 用作默认后端连接的代理目标 不适用
endpoints 要添加到代理的代理端点列表。如果端点与现有端点同名,则会替换现有端点。 []
targets 要添加到代理的代理目标列表。如果新目标与现有目标同名,则会替换现有目标。 []
policies 相应功能提供的政策列表。在编译期间,政策名称会自动添加功能的 uid(或 name)作为前缀。 []
resources 功能提供的资源列表,例如 JavaScript 或属性文件。 []

证件类型:委托书

代理是 CLI 在编译具有相应功能的模板时生成的完全解析的文档。您通常不会直接编写此类内容;此处之所以介绍它,是因为它是 API 代理软件包的形状。

代理与功能具有相同的字段,但它使用 endpointstargets(而非 defaultEndpointdefaultTarget),并且始终表示完整的可部署代理。其 typeproxy

嵌套对象

参数

形参用于向功能提供值。参数的值解析为其 default

名称 说明 默认值 是否必需?
name 参数名称。在功能内容中引用为 {name} 不适用
displayName 简单易懂的名称。 不适用
description 参数说明。 不适用
default 默认值。替换了功能字符串中的 {name} 不适用
examples 示例值列表。 []
maps 值替换的映射。如果解析后的值是映射中的键,则会将其替换为映射的值。 不适用
paths JSONPath 表达式列表。此版本不支持 - 使用它会导致错误。 不适用

endpoint

用于模板的 endpoints 列表中。

名称 说明 默认值 是否必需?
name 端点名称。 不适用
basePath 客户端用于调用代理的基本路径,例如 /v1/gemini 不适用
routes 将请求映射到目标的路由列表。 []

proxyEndpoint

用于功能的 defaultEndpointendpoints 中,以及用于已编译的代理中。使用流程处理扩展了端点

名称 说明 默认值 是否必需?
flows 流程的列表。名为 PreFlowPostFlow 的流会映射到相应的 Apigee 流;任何其他名称都会放置在通用流容器中。 []
postClientFlow 在将响应发送到客户端后运行的单个 不适用
faultRules 用作故障规则的流程列表。 []
defaultFaultRule 在没有其他故障规则匹配时运行的故障规则 不适用

路线

名称 说明 默认值 是否必需?
name 路线名称。 不适用
target 要路由到的目标端点的名称。 不适用
condition 此路由必须满足的条件。 不适用

工作沉浸度

名称 说明 默认值 是否必需?
name 流程名称。对于标准请求/响应流程,请使用 PreFlowPostFlow 不适用
mode RequestResponse。确定步骤是在请求中运行还是在响应中运行。 Request
condition 流程运行必须满足的条件。 不适用
steps 步骤(政策调用)的有序列表。 []

步骤

步骤在流中运行政策。

名称 说明 默认值 是否必需?
name 要运行的政策的名称。在功能内,使用政策的本地名称;编译器会将其重写为命名空间名称。 不适用
condition 必须为 true 才能运行相应步骤的条件。 不适用

faultRule

使用一个额外的字段扩展了 flow

名称 说明 默认值 是否必需?
alwaysEnforce 如果值为 true,则始终强制执行默认故障规则。 false

目标

用于模板的 targets 列表中。

名称 说明 默认值 是否必需?
name 目标名称。由路由的 target 引用。 不适用
url 后端网址。 不适用
auth Google Cloud 后端的身份验证方案,例如 GoogleAccessTokenGoogleIDToken 不适用
scopes 要请求的 OAuth 范围列表。当设置了 auth 时适用。 []
aud 令牌的受众群体。当设置了 auth 时适用。 不适用

proxyTarget

用于功能的 defaultTargettargets 中,以及编译后的代理中。通过流程处理和原始连接替换来扩展目标

名称 说明 默认值 是否必需?
flows 在目标请求或响应上运行的流程的列表。 []
faultRules 用作故障规则的流程列表。 []
defaultFaultRule 故障规则 不适用
httpTargetConnection HTTPTargetConnection 元素的原始表示形式,用于高级配置。如果设置,则优先于 urlauthscopesaud 不适用
localTargetConnection LocalTargetConnection 元素的原始表示形式。 如果设置了此属性,则它优先于 HTTP 连接。 不适用

政策

政策是在功能中定义的。其配置使用政策内容惯例中所述的属性/文本惯例写入 content 下。

名称 说明 默认值 是否必需?
name 政策名称。 不适用
type Apigee 政策类型,例如 VerifyAPIKeySpikeArrestJavascript。必须与 content 中的单个顶级键匹配。 不适用
content 一个单键字典,其一个键等于 type。嵌套值使用以下约定描述政策的 XML。 {}

政策内容惯例

Apigee 政策采用 XML 格式。在 YAML 中,您可以使用以下规则表示 content 中的 XML:

  • content 字典正好包含一个键,该键必须与政策的 type 相匹配。
  • 元素属性位于 metadata 键下。
  • 元素文本位于 _text 键下。例如,<Foo bar="baz">qux</Foo> 会变为 Foo: {metadata: {bar: "baz"}, _text: "qux"}。如果某个元素只有文本而没有属性,您可以直接将文本写为值。
  • 子元素嵌套在其标记名称下。重复标记会变成列表。

例如,以下功能政策:

policies:
- name: VA-VerifyAPIKey
  type: VerifyAPIKey
  content:
    VerifyAPIKey:
      metadata:
        name: VA-VerifyAPIKey
        enabled: "true"
        continueOnError: "false"
      DisplayName: VA-VerifyAPIKey
      APIKey:
        metadata:
          ref: request.header.x-api-key

编译为以下政策 XML:

<VerifyAPIKey continueOnError="false" enabled="true" name="verify-api-key-VA-VerifyAPIKey">
  <APIKey ref="request.header.x-api-key"></APIKey>
  <DisplayName>VA-VerifyAPIKey</DisplayName>
</VerifyAPIKey>

资源

资源是指功能贡献给软件包的文件,例如 JavaScript 文件或属性文件。

名称 说明 默认值 是否必需?
name 文件名,例如 hello-world.js。资源名称在编译期间以功能的 uid(或 name)为前缀。 不适用
type 资源类型,用于确定 bundle 中的子目录,例如 jsc (JavaScript) 或 properties 不适用
content 原始文件内容。 不适用

此版本不支持的字段

  • paths 针对参数 (JSONPath)。使用它会导致编译失败。
  • tests。系统会接受该字段,但会忽略它,并且不会将其包含在生成的软件包中。

限制

生成的 API 代理软件包在未压缩时不得超过 10 MiB,或者不得超过 256 个文件

后续步骤