哪种架构最适合创建无服务器AWS服务?

时间:2020-01-27 18:15:04

标签: amazon-s3 amazon-ec2 aws-lambda amazon-redshift

我需要实现一个用于存储设备备份数据的AWS服务。 设备通过ID进行标识。服务包含3个端点:

  1. 保存设备备份。
  2. 获取设备备份。
  3. 获取最新的设备备份时间。

备份:二进制数据,从10kb到1mb

加载示例

    每天
  1. 100к保存的备份。每天2k还原的备份。
  2. 取p1并乘以100

I came up with 2 architectures.

  1. 哪种架构更好地选择或构建新架构?
  2. 我可以将网关api合并为一个,还是每个请求都需要单独的API?
  3. 我可以将lambda合并为一个,还是每个动作都需要一个单独的动作?

1 个答案:

答案 0 :(得分:0)

设备备份将由两个元素组成:

  • 备份数据:最好存储在Amazon S3中
  • 关于备份的
  • 元数据(用户,时间戳,指向备份数据的指针):最好存储在某种类型的数据库中,例如DynamoDB

该过程将是:

  • 保存备份:通过API网关将备份数据发送到Lambda。 Lambda函数会将数据保存在Amazon S3中,并向DynamoDB数据库添加一个条目,并返回对该数据库中备份条目的引用。
  • 获取备份:通过API网关向Lambda发送请求。 Lambda函数使用DynamoDB中的元数据来确定要提供的备份,然后创建 Amazon S3预签名URL ,并将URL返回给设备。然后,设备直接从S3存储桶中检索备份
  • 列出备份:通过API网关向Lambda发送请求。 Lambda函数使用DynamoDB中的元数据来检索备份列表(或仅是最新备份),然后返回值。

为每种类型的请求(保存,检索,列出)使用单独的Lambda函数会更清洁。这些将通过API网关内的不同路径触发。