每个 dynamodb 表的多个基本云监视警报的 Terraform 模块。定义一次使用多次
Posted
技术标签:
【中文标题】每个 dynamodb 表的多个基本云监视警报的 Terraform 模块。定义一次使用多次【英文标题】:Terraform Module for Multiple basic cloud-watch alarms per dynamodb table. Define once use many 【发布时间】:2021-11-30 05:06:33 【问题描述】:我有 10 个 dynamo DB 表,我希望每个 dynamo DB 表有 5 个警报,但只想定义这 5 个警报,而不是在 terraform 代码中对每个表重复它们。在 AWS 上仍然会有 50 个警报,但我希望它们不要在 terraform 代码中重复。
我在所有表格中的警报看起来大多相同。即吞吐量超过异常,延迟异常,因此不想在 terraform 代码中为每个表创建单独的警报。我希望每当我在 terraform 中创建表格时,这些基本警报都会自动创建,而无需有人将它们添加到 terraform
如何使用 terraform 实现这一目标?
【问题讨论】:
为什么不设置 50 个警报?您显然可以创建一个组合警报来监控多个表的 SUM 或 AVG 或 MAX,但您为什么要这样做? xyproblem.info - 你的实际问题是什么? @luk2302 我在所有表格中的警报看起来都差不多。即吞吐量超过异常,延迟异常,因此不想在 terraform 代码中为每个表创建单独的警报。我希望每当我在 terraform 中创建表格时,这些基本警报都会自动创建,而无需有人将它们添加到 terraform。 为他们创建一个 terraform 模块并全面重用它们 - 您的问题更多是关于 AWS 而不是 terraform 是的,它将为该表创建这 5 个警报 - 查看 terraform.io/docs/language/modules/develop/index.html - 如果您真的遇到问题,请尝试一些代码,然后打开一个新问题,但是 terraform 文档易于阅读和示例网上有很多 - 希望有帮助! 【参考方案1】:如果您已经在某个地方列出了他们的名字,那很好,如果没有,您可以执行以下操作:
monitoring.tf:
locals
dynamodb_names = [
"tableA",
"tableB",
"tableC",
...
]
然后您可以创建一个循环该列表的资源。
resource "aws_cloudwatch_metric_alarm" "foobar"
for_each = toset(local.dynamodb_names)
alarm_name = "dynamodb-alarm-$each.key"
comparison_operator = "GreaterThanOrEqualToThreshold"
evaluation_periods = "2"
metric_name = "CPUUtilization"
namespace = "AWS/DynamoDB"
period = "60"
statistic = "Average"
dimensions =
TableName = "$each.key"
它将根据dynamodb_names
列表中的名称创建所有警报。
【讨论】:
以上是关于每个 dynamodb 表的多个基本云监视警报的 Terraform 模块。定义一次使用多次的主要内容,如果未能解决你的问题,请参考以下文章
python--boto3 之 与dynamoDB 的基本交互,表的备份与恢复