在Amazon API Gateway中,“stage”是什么意思?

53
在亚马逊 API 网关的背景下,“stage” 是什么?它的目的是什么,如何创建一个?与生产/暂存/开发约定中的“staging” 有什么关系吗?
5个回答

43
尽管您可以将阶段作为管道或环境中的不同阶段的一部分使用,但这违反了AWS环境管理的最佳实践
如果您想要一个开发环境,那么请创建一个开发用户/账户并使用该用户/账户部署。同样,其他环境如生产环境或预生产环境也是如此。
那么,AWS网关中的阶段到底是用来做什么的呢?每当我使用它们时,我都会放入一个合理的占位符。

7
我同意这条评论。API网关的阶段大多是多余的,很难想象为什么我要使用不同的阶段,当我可以轻松创建一个新堆栈(或者在Terraform中创建一个新模块)并获得相同的功能。 - dimiguel
1
我也同意这个评论,不区分管道环境似乎非常危险,因为这可能会导致数据泄漏和各种问题。 - Paul Carroll
16
请问您能否提供更多版本控制反模式的细节(或链接)?我在谷歌上进行了快速搜索,但没有找到任何支持您说法的内容。 - Jonathan Holvey
3
版本化REST API是一项重要的最佳实践,例如因为它具备向后兼容性!如果这是您的观察或意见,请至少尝试解释原因,否则这可能会对没有经验的读者产生不良影响。 - Thomas Fritz
1
是的,我想听听您为什么认为对REST API进行版本控制是一种反模式。 - Kit Peters
显示剩余3条评论

32

我认为API Gateway的stages可以看作是你的流程管道或同一应用程序堆栈的不同环境的不同阶段。你可以拥有任意数量的stages。在简单的堆栈中,我们可以考虑3个stages:dev、qa和prod。你可以使用stages进行以下操作:

  1. 每个stage都有不同的URL。例如:https://api-gateway-domain/dev/...https://api-gateway-domain/qa/..https://api-gateway-domain/prod/..。基本上URL将是https://api-gateway-domain/<stage_name>/..
  2. 你可以使用自定义域名与每个stage关联。
  3. 你可以为每个stage关联不同的usage plan。
  4. 你通常至少会有一个stage变量来唯一定义你的stage。这可能是对于每个环境都不同的Elastic Beanstalk URL。通过stage变量,你将为每个stage调用不同的后端URL。
  5. 你可以将API Gateway配置的不同版本部署到该应用程序的不同stages。

1
这对于在同一AWS账户中进行beta/test可能很有用;您可以拥有一个beta阶段(api.beta.example.com),然后是一个test阶段(api.test.example.com)。然后我就可以节省已部署的GW数量,从而在账户和区域中只需部署1个而不是2个。 - b01

2

使用“v1”。如果您需要部署破坏性更改,同时仍需为使用当前版本且无法更新的客户提供服务,则可以创建v2并同时运行两个版本。


1
您可以将API网关阶段视为API的特定生命周期阶段或版本。

例如:

  • production-stage(生产阶段)
  • development-stage(开发阶段)
  • beta-stage(测试阶段)
从这些阶段,您可以配置诸如限流和缓存等功能。

5
如果您的SDLC只有一个帐户,那么这个说法是正确的。但最佳实践是要有DEV帐户、STAGE帐户和PROD帐户。因此,在这种情况下,STAGE帐户有点多余。 - Jack Marchetti

0
关于“无阶段”和“部署”的信息;一些陈述只是我的猜测——我找不到好的资源。

no stage选项的作用

  • 选择了no stage后,似乎只是不会部署
    -- 这个选项只是为了在以后选择一个阶段...

选择(无阶段)将创建一个与任何阶段都不关联的API部署。
要使用此部署,请将其与一个阶段关联。

-- AWS控制台警告

[]
要创建一个与阶段无关联的部署,请选择无阶段。稍后,您可以将此部署与一个阶段关联。
<>
https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-deploy-api-with-console.html

创建和开发API Gateway API并不会自动使其可被用户调用。要使其可调用,您必须将API部署到一个阶段。
所以,是的,API Gateway需要一个阶段才能被Postman使用。
查看AWS API Gateway - Remove Stage Name From URI,了解如何移除URI中的阶段名称。
在Api Gateway中,“deploy”和“stage”的意思是什么?
要理解API Gateway中的“部署”是什么意思,可以参考这篇文章https://medium.com/@lancers/deployment-in-amazon-api-gateway-128c522c762e,它解释得很清楚。
基本上,你必须将API进行部署,才能使用它。
关于API Gateway的部署API是如何工作的,可以参考API Gateway - How Deploy API works?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接