如何防止 DynamoDB Table 创建,除非在一定容量下

How to Prevent DynamoDB Table Creation Unless Under Certain Capacity

只有当要创建的 table 是 PAY_PER_REQUEST 或配置的容量低于一定数量时,是否有一种方法可以允许创建像 DynamoDB table 这样的资源?

我最初查看了 IAM condition keys,但它们似乎仅适用于与 table 数据操作(扫描、更新、放置操作等)的交互,而不适用于 table.

或者,有没有办法减少 帐户的服务配额?

理想情况下,我想知道是否可以缩小创建 DynamoDB table 资源的能力超出一定容量的范围,我不确定如何主动执行此操作而不是追溯处理 CloudTrail 日志或列出现有 table 个属性。

AWS 配置

您可以使用AWS Config 追溯查询AWS 资源及其属性,然后确定它们是否合规。有rules already available out of the box, but I can't see one which matches your use case. You will need to then write a Lambda function to implement this yourself. Here就是例子。

规则生效后,您可以创建补救措施以

  • 删除Table
  • 缩小Table
  • 发送通知
  • 调整自动缩放(即减少最大值)

AWS 预算 (我的偏好) 要确定一个账户是否使用过多的 DynamoDB,最简单的方法可能是为 DynamoDB 服务设置预算。这会有几个好处:

  • Auto-Scaling: 开发人员可以在短时间内自由使用大量容量(例如负载测试)。
  • 可能更便宜:我发现,如果您对项目施加限制,开发人员通常会分配 100% 的最大值,而不是仅使用他们需要的,在担心另一个开发人员出现并占用所有容量。

就像之前使用 AWS Config 一样,您可以设置账单警报以采取行动并通知开发人员他们使用了过多的 DynamoDB,以及当预算为 50%、80% 时......等等。

CloudWatch

您还可以为某些 DynamoDB 指标创建 CloudWatch 警报,查看已使用的容量并再次响应过度使用。

结论

你有很大的灵活性来处理这个问题,所以请确保你已经收集了你的要求,然后适当的响应将更容易看到。 AWS Config 需要比预算多一点的工作,所以如果你能从预算中得到你想要的,我会这样做。