阶段变量Stage variables是您可以定义为与 REST API 部署阶段关联的配置属性的名称-值对。它们与环境变量的功能类似,可用于 API 设置和映射模板。
使用 API Gateway 中的部署阶段,您可以管理各 API 的多个发布阶段,例如内部测试、测试和生产。通过阶段变量,您可以将 API 部署阶段配置为与不同的后端终端节点交互。例如,您的 API 可以将 GET 请求作为 HTTP 代理传递给后端 Web 主机 (例如 http://example.com
)。在这种情况下,后端 Web 主机将在阶段变量中配置,这样一来,当开发人员调用生产终端节点时,API Gateway 将调用 example.com。当您调用测试终端节点时,API Gateway 将使用在测试阶段的阶段变量中配置的值,并调用不同的 Web 主机(例如 beta.example.com
)。同样,阶段变量可用于为 API 中的每个阶段指定不同的 AWS Lambda 函数名称。
您还可以使用阶段变量,通过映射模板将配置参数传递给 Lambda 函数。例如,您可能需要针对 API 中的多个阶段重复使用同一个 Lambda 函数,但是该函数应根据调用的阶段,从不同的 Amazon DynamoDB 表中读取数据。在为 Lambda 函数生成请求的映射模板中,您可以使用阶段变量来将表的名称传递给 Lambda。
阶段变量不应用于 API 规范的安全定义部分。例如,您无法将不同的 Amazon Cognito 用户池用于不同阶段。
示例
要使用阶段变量自定义 HTTP 集成终端节点,您必须首先配置具有指定名称的阶段变量(例如 url
),然后为其分配一个值(例如 example.com
)。下一步,在您的方法配置中设置 HTTP 代理集成,然后让 API Gateway 使用阶段变量值 http://${stageVariables.url}
,而不是输入终端节点的 URL。此值将指示 API Gateway 在运行时替换您的阶段变量 ${}
,具体取决于 API 正在哪个阶段运行。您可以通过与在凭证字段中指定 Lambda 函数名称、AWS 服务代理路径或 AWS 角色 ARN 类似的方式引用阶段变量。