aws_cloudwatch_event_target
リソースを使用して、スケジュールされたイベントソース(イベントルール)をラムダ機能に割り当てることができます。ラムダ関数を呼び出す権限を与える必要があります。これにはaws_lambda_permission
リソースを使用できます。
例:コンソールで
resource "aws_lambda_function" "check_foo" {
filename = "check_foo.zip"
function_name = "checkFoo"
role = "arn:aws:iam::424242:role/something"
handler = "index.handler"
}
resource "aws_cloudwatch_event_rule" "every_five_minutes" {
name = "every-five-minutes"
description = "Fires every five minutes"
schedule_expression = "rate(5 minutes)"
}
resource "aws_cloudwatch_event_target" "check_foo_every_five_minutes" {
rule = "${aws_cloudwatch_event_rule.every_five_minutes.name}"
target_id = "check_foo"
arn = "${aws_lambda_function.check_foo.arn}"
}
resource "aws_lambda_permission" "allow_cloudwatch_to_call_check_foo" {
statement_id = "AllowExecutionFromCloudWatch"
action = "lambda:InvokeFunction"
function_name = "${aws_lambda_function.check_foo.function_name}"
principal = "events.amazonaws.com"
source_arn = "${aws_cloudwatch_event_rule.every_five_minutes.arn}"
}
これに関するトラブルシューティングのヒントコンソールでクラウドウォッチのイベントルールが正しいように見え、ラムダコンソールではそれがトリガーとしてリストされています。タイマーが起動しているようですが、呼び出しが成功せず、クラウドウォッチログで呼び出されたラムダの証拠は表示されません。クラウドイベントのタイマー自体のログはありますか? –