amazon-web-services - 使用 AWS IoT 管理多个客户
问题描述
我正在围绕 aws 技术构建我的产品,主要使用物联网。在阅读了所有服务之后,我可能会使用 Kinesis、Lambda 和 Greengrass。
管理同一个 AWS 组织中的所有客户是否可行?这是建议还是普遍做法?
我相信每个客户都有一个组织会更安全,因为这将是一个更加孤立的环境,但另一方面,这也意味着我需要为每个客户复制 lambda 函数、greengrass 组件(食谱等),并且很可能更好地管理权限,涉及到 CI 上的大量工作来自动化所有这些。
每个客户一个 AWS 组织是否可行?或者我应该如何分割我的资源?谢谢
编辑:解决@John Rotenstein 的问题。他们将无法直接访问 AWS,但他们可以访问仪表板(他们需要对其进行识别)来读取有关其资源的指标(例如温度传感器)。当然,其他人的资源不应该是可访问的。需要向特定客户识别数据(因此我们可以通过他们可以访问的仪表板直接向他们提供指标)。关于数据的存储方式,它可能在不同的数据库或帐户中(当前的问题是关于这个,所以还不确定)。最后,客户将遵循订阅模式。
解决方案
除非您特别需要将数据分开,否则最有意义的是:
- 为所有客户使用相同的基础架构
- 将所有信息保存在相同的数据存储中
- 将业务逻辑放在后端应用程序中以分离客户数据
例如,当客户请求访问他们的数据时,他们可能会与您的应用程序进行通信。他们将对应用程序进行身份验证,应用程序将确定他们有权访问哪些数据。然后,它可以在存储层中查询特定于他们作为客户的数据。
将此与 Facebook 进行比较——他们没有为每个用户提供“单独的 Facebook”。相反,数据是混合在一起的,并且存在确定特定用户可以访问哪些信息的应用程序逻辑。
使用单独的数据存储或单独的 AWS 账户的唯一原因是,如果存在一些禁止将客户数据存储在一起的安全要求,或者如果需要单独计算客户之间的 AWS 成本。
推荐阅读
- docker - Dockerfile 复制整个文件夹而不是其中的文件
- mockito - 使用参数匹配器 eq() 验证具有不同参数的方法调用失败,抱怨参数不同
- android - 画布 drawTextOnPath 并保存视图
- loops - 如何检查该值是否与前第 ? 行中的值匹配?(?是动态的)
- anaconda - 没有管理员权限的 Anaconda 安装包
- c# - 使用 doasync 任务调用方法
- jenkins - 詹金斯构建在“退出0”状态后卡住,并且需要很长时间才能退出
- spring-boot - 一个 Jhipster 应用程序微服务如何调用另一个应用程序..?
- rest - 什么是从所有孩子那里获取资源的 RESTful 方式?
- c# - 如何在 XAML/C# 中动态创建按钮/快捷方式