2016-08-16 4 views

答えて

4

Cloudwatchイベント組み込みターゲットには、入力パラメータと、例のSNSキューにメッセージを追加するために表示されるARN(aws_cloudwatch_event_rule)またはキネシスストリームに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)" 
} 

私はまだこれをテストしていませんが、それはべき作品:

だから我々はちょうどこのような何かを行うことができるはず。明らかに、作成したリソースからEBSボリュームIDを取得したいと思うかもしれませんが、それは問題の範囲を超えています。また、AWSコンソールでルールを作成してから、aws events list-targets-by-ruleの出力を見て、ARNにルール名を追加したように思ったが、必ずしも真であるとは限りません。

+0

とても近いです!私は手動で組み込みのターゲットの役割を選択しなければならなかった – ds011591

+0

@ ds011591あなたは精巧にできますか?このすべてをTerraformで作成できましたか? – mkobit

3

これまでの回答では、イベントターゲットのIAM権限を除いてすべてを取得できました(コンソールに移動してルールを編集し、「ステップ2」の「AWS権限」セクションでは、役割など)。これをテラフォームで動作させるために、私はちょうどいくつかのリソースを追加しました:

resource "aws_cloudwatch_event_rule" "snapshot_example" { 
    name = "example-snapshot-volumes" 
    description = "Snapshot EBS volumes" 
    schedule_expression = "rate(24 hours)" 
} 

resource "aws_cloudwatch_event_target" "example_event_target" { 
    target_id = "example" 
    rule = "${aws_cloudwatch_event_rule.snapshot_example.name}" 
    arn = "arn:aws:automation:${var.aws_region}:${var.account_id}:action/EBSCreateSnapshot/EBSCreateSnapshot_example-snapshot-volumes" 
    input = "${jsonencode("arn:aws:ec2:${var.aws_region}:${var.account_id}:volume/${aws_ebs_volume.example.id}")}" 
} 

resource "aws_iam_role" "snapshot_permissions" { 
    name = "example" 
    assume_role_policy = <<EOF 
{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Action": "sts:AssumeRole", 
     "Principal": { 
     "Service": "automation.amazonaws.com" 
     }, 
     "Effect": "Allow", 
     "Sid": "" 
    } 
    ] 
} 
EOF 
} 

resource "aws_iam_policy" "snapshot_policy" { 
    name  = "example-snapshot-policy" 
    description = "grant ebs snapshot permissions to cloudwatch event rule" 
    policy = <<EOF 
{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "ec2:Describe*", 
     "ec2:RebootInstances", 
     "ec2:StopInstances", 
     "ec2:TerminateInstances", 
     "ec2:CreateSnapshot" 
     ], 
     "Resource": "*" 
    } 
    ] 
} 
EOF 
} 

resource "aws_iam_role_policy_attachment" "snapshot_policy_attach" { 
    role  = "${aws_iam_role.snapshot_permissions.name}" 
    policy_arn = "${aws_iam_policy.snapshot_policy.arn}" 
} 
関連する問題