{proxy +}是否可以在API网关中捕获“/”?

时间:2017-10-05 05:43:47

标签: amazon-web-services aws-lambda amazon-cloudfront aws-api-gateway

我正在尝试使用API​​网关从http://foo.comhttp://foo.internal:38121设置基本的反向代理(因此我无需参与部署NGINX群集)。

我不能只使用CloudFront - >没有API网关的http://foo.internal:38121,因为我需要在每次部署时将http://foo.internal:38121更改为其他内容...并且更改CloudFront原点会触发无法维持的~40分钟更新。此外,我不能使用固定端口(因此CloudFront w /固定来源和DNS更改per-deploy也不是一个选项)......某些东西需要能够立即映射foo.com:80foo.internal:???

我正在尝试使用API​​网关:

/
  /{proxy+}
  ANY

然而,端点产生了这个:

> curl https://XYZ.execute-api.eu-west-1.amazonaws.com/prod/
{ "message": "Missing Authentication Token" }

虽然这有效:

> curl https://XYZ.execute-api.eu-west-1.amazonaws.com/prod/hello_world/
Hello!

我可以通过添加辅助ANY方法来解决此问题:

/
ANY
  /{proxy+}
  ANY

修复了它:

> curl https://XYZ.execute-api.eu-west-1.amazonaws.com/prod/
Hello!

然而每个部署的重复配置并不理想。

例如:它可能会产生错误。尽管部署是以原子方式进行的,但“暂存”更改却不会。这意味着存在这样的风险,即2个并发CI构建可以更新//.+以指向新的上游(例如,使用aws apigateway update-integration x2 - 每个资源一个),但是作为{ {1}}总命令与4x并发CI构建重叠,方法可能最终指向不同的上游,然后部署。

2x是否可以在API网关中捕获{proxy+}? (或者是否有一种更简单/更好的方法来实现这种反向代理方式,即时上行更改,仅使用AWS组件?)

1 个答案:

答案 0 :(得分:0)

“然而,每个部署的重复配置并不理想......” 这里没有重复。您可以对两种方法使用相同的lambda。