使用Hash + Range键在DynamoDB中存储CloudWatch警报

时间:2017-03-16 22:17:23

标签: database amazon-web-services amazon-dynamodb

我配置了CloudWatch警报。我需要捕获此事件并将其记录在数据库中以进行报告。选择Dynamo是因为传入读/写的数量很少。

我需要捕获的内容:

  • AWS账户ID(12345678912345)
  • 活动的日期时间
  • 活动ID

我有多个AWS账户,我想将它们全部存储在一个表中(我也可以将它们存储在单独的表中,但是如果低容量则不确定它是否真的有用)。

我应该使用Hash + Range吗?

Hash: <account_id>
Range: <datetime>

这样我的理解是DynamoDB将根据范围进行分组/订购。

我的查询只会是:

  • 获取account_id /所有帐户的所有活动
  • 获取所有帐户
  • 以来自x时间以来所有帐户的所有事件

这是一个好设计吗?我需要一个单独的索引吗?

1 个答案:

答案 0 :(得分:1)

根据您的查询模式,您看起来正确。

  • 如果您只想要一个account_id的数据,请执行Query。您还可以在范围键上提供KeyConditionExpression,以便仅获取在给定timestamp之后发生的事件。
  • 如果您想要account_id列表的数据,请运行Scan。 (你不能BatchGetItem,因为它需要hash-key和range-key。