隐式更改在运行时运行的 AWS lambda 版本/分支的最佳方法?

问题描述 投票:0回答:0

背景资料:

  • 我们在 AWS
    dev
    环境中有大量的 lambda,CD 脚本可以根据每个 lambda 存储库上推送到
    main
    的任何内容进行更新(因此
    dev
    环境始终反映
    production
    )。
  • 我们有一个微前端架构,前端有管道,可以“加入”与工单相关的任何拉取请求分支。票证在 URL 参数中指定。因此 https://dev.myapp.example.com/?use-ticket=12345 将在
    dev
    环境中运行该应用程序,其中包含与票证 12345“subbed in”关联的任何微前端分支。
  • 所有 lambda 调用都是作为对 AWS ALB 的 HTTP 请求发生的,AWS ALB 在调用 lambda 之前应用一些身份验证(这适用于前端到 lambda 和 lambda 到 lambda 调用)。

提问:

我们需要一种方法来为前端 MFE 应用相同的 lambda 行为,而无需在 lambda 调用站点直接修改应用程序代码。

我们有什么

  • 我们可以在调用 lambda 时提供包含从 lambda URL/名称到备用 URL/名称/别名/任何内容的完整映射集的标头,并且我们可以在嵌套的 lambda 调用中向前传递此标头。
  • 我们可以拦截所有 lambda HTTP 调用并以任何需要的方式转换请求(在前端使用 service worker,在后端使用 lambda 层)。
  • 当在 lambda 存储库上创建新的 PR 时,我们可以将一些东西部署到开发环境——虽然不确定这应该是什么。我们正在考虑一个新的 lambda 命名为
    `${lambda-name}-${ticketNumber}`

我们正在处理的约束:

  • ALB 的上限为 200 条规则,因此每次打开 PR 时添加新的 ALB 规则以映射到新的 lambda PR 分支很可能无法扩展。
  • 将 lambda ALB URL 替换为 lambda 函数 URL 将非常困难,因为 (a) 请求需要使用 IAM 身份验证(前端目前没有密钥)进行签名,以及 (b) 我们当前的 ALB 身份验证方案使用带有 JWT 的自定义标头,与 IAM 身份验证无关。

是否存在任何机制可以使我们在给定约束的情况下完成 lambda 的这种“替换”行为?

amazon-web-services aws-lambda
© www.soinside.com 2019 - 2024. All rights reserved.