我正在尝试了解无服务器配置API Gateway Lamda的API网关登台以及如何使用它来进行dev / prod应用程序配置,其中dev继续更改和prod应该是dev的一些稳定快照 .
问题是,我越了解API网关分段行为并且可能性越小,我就越不明白如何实现这一点 . 根据我过去的经验,我希望升级成为拥有多个应用程序版本(或配置)的工具,更重要的是,安全地在一个动作中向代码或配置引入大量更改,例如按下按钮 . 但是当您使用带有Lambda的API网关时,没有人 .
您可以告诉API网关哪个lamda用于哪个资源 . 您可以使用阶段变量来配置它,甚至使lambda名称本身成为阶段变量 . 但是当你部署stage时,lambda本身并没有被冻结,所以当你对lambda进行更改时,你的app行为也会发生变化 . 你对开发阶段的期望是什么's also the case for lambda alias - if you push lambda version to some alias, your app behavior for API Gateway using that alias immediately changes too. It is really appreciated for dev version, but not for prod. You may say to use lambda precise versions in API Gateway to have lambda be frozen for stage but that leads to the other problem. You should manually pick the versions for each lambda before you push to API Gateway prod stage (that is very error-prone), then revert them back to latest(that is again error-prone) because it'有没有其他更可靠的API网关分段使用方式?
基本上它应该看起来像你使用dev阶段时使用最新的lambda版本,因此对lambdas的更改会立即影响应用程序行为,而不需要在API网关部署中,但是当你需要prod版本时,你会以某种方式冻结lambda的所有当前版本并将它们添加到prod部署 . 之后,对API Gateway或lambdas的所有更改都不应该影响prod阶段 .
更新:通过提供名称$
之类的lamda名称参数化,可以有一个解决方案,其中版本evaulate为dev的空字符串和prod的特定lambda版本 . 因此,您唯一需要做的就是在阶段变量中仔细设置所有版本 . 但是对于任何参数化,你必须手动设置每个lambda(!)的权限,这消除了这种方法的任何好处 .