我可以通过Terraform将CloudWatch事件规则附加到"内置目标"吗?

ds0*_*591 6 amazon-web-services amazon-cloudwatch terraform

此处的目标是创建EBS卷的计划快照.看看Terraform的文档aws_cloudwatch_event_target似乎不太可能,但我可能会遗漏一些东西.

yda*_*coR 5

Cloudwatch Events 内置目标似乎只需要一个输入参数以及显示的 ARN,用于将消息添加到示例中的 SNS 队列aws_cloudwatch_event_rule或发送到 中的 Kinesis 流aws_cloudwatch_event_target

所以我们应该能够做这样的事情:

resource "aws_cloudwatch_event_target" "ebs_vol_a" {
  target_id = "ebs_vol_a"
  rule = "${aws_cloudwatch_event_rule.snap_ebs.name}"
  arn = "arn:aws:automation:${var.region}:${var.account_id}:action/EBSCreateSnapshot/EBSCreateSnapshot_ebs_vol_a"
  input = "\"arn:aws:ec2:${var.region}:${var.account_id}:volume/vol-${var.ebs_vol_a_id}\""
}

resource "aws_cloudwatch_event_rule" "snap_ebs" {
  name = "snap-ebs-volumes"
  description = "Snapshot EBS volumes"
  schedule_expression = "rate(6 hours)"
}
Run Code Online (Sandbox Code Playgroud)

我还没有测试过这个,但它应该可以工作。显然,您可能想从您创建的资源中获取 EBS 卷 ID,但这超出了问题的范围。在 AWS 控制台中创建规则后,我还猜测了 ARN,然后查看aws events list-targets-by-rule似乎将规则名称添加到目标 ARN 的输出,但这可能并不总是正确/必要的。