【问题标题】:How to route requests to right tenant api gateway?如何将请求路由到正确的租户 API 网关?
【发布时间】:2021-12-19 18:13:17
【问题描述】:

我正在创建一个多租户孤岛模式架构来支持 SAAS 应用程序。关注这个link

我可以像这样注册新租户并创建他们各自的堆栈:

到目前为止一切顺利,下一步是为每个租户创建自己的域,例如:tenant1.admin.foo.com,以访问相同的 CloudFront 分配(Web 前端必须对所有人都相同)。我可以通过在 Route53 *.admin.foo.com 中创建一个可以访问 CloudFront 的记录来实现这一点

问题:

我需要将每个请求路由到各自的租户堆栈,例如:tenant1.api.foo.com/whatever 应该路由到为租户 1 创建的 api 网关。

起初我想在 CloudFront 中创建一个路由到 api 网关的源,这样做的问题是 CloudFront 源被限制为 25 个。

我想在 Route53 中创建一条记录以指向它们各自的 api 网关,但问题是我必须在 api 网关中使用自定义域,因为它们限制为 120,我希望有更多租户超过 120 人。

如何进行此路由?

这是一个用例的图示:

PS:欢迎任何建议。

【问题讨论】:

    标签: amazon-web-services aws-api-gateway amazon-cloudfront multi-tenant amazon-route53


    【解决方案1】:

    您可以使用为备用域名 (CNAME) 设置的通配符 (*.api.foo.com) 设置分配。如果您将 Lambda@Edge 附加到源请求(在缓存行为设置下),您可以动态修改主机标头以指向适当的 API 网关主机 (xxxxxx.execute-api.us-east-1.amazonaws.com) .

    AWS 博客,他们在其中使用 S3 存储桶作为源。 它应该相当接近地转换为 APIGateway 主机名:

    https://aws.amazon.com/blogs/networking-and-content-delivery/dynamically-route-viewer-requests-to-any-origin-using-lambdaedge/

    【讨论】:

    • 因为我需要检查 subdomian (tenant.foo.com) 我应该使用 origin-request 还是 viewer-request?我需要获取域的“租户”部分
    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 2020-04-20
    • 1970-01-01
    相关资源
    最近更新 更多