1. ホーム
  2. amazon-web-services

[解決済み] スケジュールされたイベントソースをトリガーとするラムダ関数を設定するには、terraformを使用します。

2022-02-15 21:36:26

質問内容

AWSのラムダ関数を5分ごとに実行したいのですが、どうすればいいですか?AWSマネジメントコンソールでは、ラムダ関数の"Event Sources"タブで簡単に設定できますが、どのように設定すればよいでしょうか。 テラフォーム ?

を使おうとしたのですが アン aws_lambda_event_source_mapping リソース が、結局は 使用するAPI はKinesisとDynamoDBからのイベントしかサポートしていません。スケジュールされたイベントソースで使用しようとすると、作成がタイムアウトしてしまいます。

解決方法を教えてください。

を使用することができます。 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}"
}