![]() |
1
1
如果您有严格的安全要求(例如,一旦令牌失效,所有请求都将失败),那么 将 需要关闭授权缓存。请参阅以下答案: https://forums.aws.amazon.com/thread.jspa?messageID=703917 以下内容:
就是这样。然而,在实践中,我的团队在lambda冷启动和eni附件方面比其他任何性能方面都更努力,因此我们的授权人添加的开销最终可以忽略不计。这并不意味着性能损失是不可测量的,但它最终导致将授权程序代码直接放置在lambda中的延迟增加了几毫秒,这在我们的应用程序中是有意义的。相比之下,lambda冷启动通常需要30秒。
在许多基于面向服务的体系结构构建的应用程序中,您将遇到“端到端”的场景,这些场景跨越多个代码库,并且只能在部署的环境中进行测试。这个级别的测试显然是昂贵的,所以您应该避免测试功能,而这可能会被较低级别(单元、集成等)的测试所覆盖。然而,测试应用程序的内聚性仍然非常重要,并且您需要这样的测试并不一定会对SOA造成巨大的损害。
如果您考虑多个授权人,测试正确授权人连接的一种方法是让每个授权人向端点传递一个指纹。然后可以对端点执行ping操作,并让它们返回健康检查状态。 例如,
实际上,我的团队在每个服务中都有一个授权者,这使得测试这个配置变得非关键(我们只需要确保应该安全的端点是)。
是的,这是真的,一个非常不耦合的环境(在本地很难测试)的性质是我的团队在使用AWS基础设施时遇到的最大的难题之一。然而,我认为它主要是一个学习曲线时,处理的AWS空间。开发社区作为一个整体,对于AWS公开的许多概念,例如代码或微服务等基础设施,仍然是相对较新的,因此与传统的整体开发相比,我们的工具和教育在这一领域是缺乏的。 这是您的应用程序的正确解决方案吗?如果没有深入的分析,我不能告诉你。在更广泛的社区中,有很多观点是双向的,但我想向您指出这篇文章,尤其是对于所列的谬误: Microservices â Please, donât . 使用微服务是因为您已经为它们开发了一个可靠的用例,而不一定仅仅因为它们是计算机科学中最新的流行词。
我的团队使用authorizers进行authn(通过自定义auth服务),并在单个lambda层处理authz(通过不同的自定义auth服务)。这对我们的体系结构非常有益,因为它允许我们从简单的身份问题中分离出通常极其复杂的特定于对象的安全规则。您的用例可能不同,我当然不会声称了解最佳实践。不过,我会指给你看 API Gateway Authorizer examples 有关如何将此服务集成到应用程序中的更多想法。
祝你好运。 |
![]() |
prime · 如何在AWS Lambda上构建无服务器框架和微服务 7 年前 |
![]() |
TutuGeorge · 具有附加输入数据参数绑定的Azure函数 7 年前 |
![]() |
iaforek · 如何使用无服务器域管理器插件根据阶段设置不同的域? 7 年前 |
![]() |
iaforek · 在脱机启动无服务器时发生eNONT错误 7 年前 |
![]() |
Kevin Smith · 使用Azure函数存储数据的最佳做法 7 年前 |