如何解决在 AWS CloudFromation 和 Serverless 中组织堆栈和共享资源
我有一个关于使用 AWS Serverless
设计和组织 CloudFormation
资源的架构问题。
目前我有多个按域特定目的组织的堆栈,这很好用。大多数包含 Lambdas
的堆栈必须使用 Serverless
(全部使用 SAM
)进行转换。使用 EventBridge
和 S3
+Events
的组合促进异步通信并且运行良好。我的问题是同步通信。
我不想使用从其他堆栈导出的名称从其他堆栈引用 Lambdas
并直接调用它们,因为这会导致更新和版本问题(如果在其他堆栈中引用了输出导出,我无法更改资源,除非先删除引用,这对于 CI/CD 来说并不理想并且将关注点分开)。
我一直在使用 API Gateway
作为抽象,但感觉相当笨拙。有这种分离是很好的,但必须有域和 DNS 解析 + 将 API GW
暴露在外部感觉不对。也许有更好的方法可以将 API GW
配置为仅限内部使用。如果您在这方面取得了成功,能否请您指点我的方向?
是否有更好的方法以同步方式从不同堆栈中抽象调用 Lambda
函数? (Common template patterns
用于 CF 或类似的东西?)
解决方法
我看到两个问题:
- 具有 API 网关的同步 Lambda 函数的替代方案。
- Api Gateway 是一种简单的方法,通过 IAM 身份验证使其安全。与 REST API 相比,HTTP Api 是更简单且更便宜的选项。我们可以选择私有 Api 而不是区域/边缘,因为它不会暴露在 VPC 之外,以确保其移动安全。
- 我们可以拥有一个以 Lambda 函数为目标的私有 ALB,用于不需要任何 API 网关功能的简单用例。(这将每月花费一些金额)
- 我们始终可以通过 AWS SDK invoke 直接调用 lambda。
- 在模板之间共享资源的替代方法。
- 如果我们需要删除和重新创建资源,导出和导入会有点问题,但如果我们只是更新它,应该不会有问题。
- 我们始终可以将 Lambda 函数的 Arn 存储在源模板的 SSM 参数中,并从目标模板中的 SSM 参数解析 Arn 的值。这是完全解耦的。这比简单地对 Arn 的值进行硬编码要好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。