123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- resource "aws_cloudwatch_log_group" "function" {
- name = "/aws/lambda/${aws_lambda_function.portal_data_sync.function_name}"
- retention_in_days = 14
- }
- ###
- ### Trigger Portal Sync Lambda with Rules and Targets
- ###
- ### Time-based rules for portal sync:
- resource "aws_cloudwatch_event_rule" "portal_event_quarter_hourly_rule" {
- name = "aws-portal-lambda-data-sync-quarter-hourly"
- description = "Rule for portal data sync lambda function - every 15 minutes"
- schedule_expression = "rate(15 minutes)"
- is_enabled = var.environment == "test" ? false : true
- }
- resource "aws_cloudwatch_event_rule" "portal_event_half_hourly_rule" {
- name = "aws-portal-lambda-data-sync-half-hourly"
- description = "Rule for portal data sync lambda function - every 30 minutes"
- schedule_expression = "rate(30 minutes)"
- is_enabled = var.environment == "test" ? false : true
- }
- resource "aws_cloudwatch_event_rule" "portal_event_hourly_rule" {
- name = "aws-portal-lambda-data-sync-hourly"
- description = "Rule for portal data sync lambda function - every hour"
- schedule_expression = "rate(1 hour)"
- is_enabled = var.environment == "test" ? false : true
- }
- resource "aws_cloudwatch_event_rule" "portal_event_daily_rule" {
- name = "aws-portal-lambda-data-sync-daily"
- description = "Rule for portal data sync lambda function - every day"
- schedule_expression = "cron(5 5 * * ? *)"
- is_enabled = var.environment == "test" ? false : true
- }
- resource "aws_cloudwatch_event_rule" "portal_event_weekly_rule" {
- name = "aws-portal-lambda-data-sync-weekly"
- description = "Rule for portal data sync lambda function - every week"
- schedule_expression = "rate(7 days)"
- is_enabled = var.environment == "test" ? false : true
- }
- resource "aws_cloudwatch_event_rule" "portal_event_monthly_rule" {
- name = "aws-portal-lambda-data-sync-monthly"
- description = "Rule for portal data sync lambda function - every month"
- schedule_expression = "rate(30 days)"
- is_enabled = var.environment == "test" ? false : true
- }
- ### Time-based targets for portal sync:
- resource "aws_cloudwatch_event_target" "portal_lambda_cloudwatch_target_quarter_hourly" {
- target_id = "PortalSyncQuarterHourly"
- rule = aws_cloudwatch_event_rule.portal_event_quarter_hourly_rule.name
- input = "{\"frequency_identifier\":\"quarter-hourly\"}"
- arn = aws_lambda_function.portal_data_sync.arn
- }
- resource "aws_cloudwatch_event_target" "portal_lambda_cloudwatch_target_half_hourly" {
- target_id = "PortalSyncHalfHourly"
- rule = aws_cloudwatch_event_rule.portal_event_half_hourly_rule.name
- input = "{\"frequency_identifier\":\"half-hourly\"}"
- arn = aws_lambda_function.portal_data_sync.arn
- }
- resource "aws_cloudwatch_event_target" "portal_lambda_cloudwatch_target_hourly" {
- target_id = "PortalSyncHourly"
- rule = aws_cloudwatch_event_rule.portal_event_hourly_rule.name
- input = "{\"frequency_identifier\":\"hourly\"}"
- arn = aws_lambda_function.portal_data_sync.arn
- }
- resource "aws_cloudwatch_event_target" "portal_lambda_cloudwatch_target_daily" {
- target_id = "PortalSyncDaily"
- rule = aws_cloudwatch_event_rule.portal_event_daily_rule.name
- input = "{\"frequency_identifier\":\"daily\"}"
- arn = aws_lambda_function.portal_data_sync.arn
- }
- resource "aws_cloudwatch_event_target" "portal_lambda_cloudwatch_target_weekly" {
- target_id = "PortalSyncWeekly"
- rule = aws_cloudwatch_event_rule.portal_event_weekly_rule.name
- input = "{\"frequency_identifier\":\"weekly\"}"
- arn = aws_lambda_function.portal_data_sync.arn
- }
- resource "aws_cloudwatch_event_target" "portal_lambda_cloudwatch_target_monthly" {
- target_id = "PortalSyncMonthly"
- rule = aws_cloudwatch_event_rule.portal_event_monthly_rule.name
- input = "{\"frequency_identifier\":\"monthly\"}"
- arn = aws_lambda_function.portal_data_sync.arn
- }
- ### Invoke permissions for Time-based rules for portal sync:
- resource "aws_lambda_permission" "allow_cloudwatch_to_call_portal_lambda_quarter_hourly" {
- statement_id = "AllowExecutionFromCloudWatchQuarterHourly"
- action = "lambda:InvokeFunction"
- function_name = aws_lambda_function.portal_data_sync.function_name
- principal = "events.amazonaws.com"
- source_arn = aws_cloudwatch_event_rule.portal_event_quarter_hourly_rule.arn
- }
- resource "aws_lambda_permission" "allow_cloudwatch_to_call_portal_lambda_half_hourly" {
- statement_id = "AllowExecutionFromCloudWatchHalfHourly"
- action = "lambda:InvokeFunction"
- function_name = aws_lambda_function.portal_data_sync.function_name
- principal = "events.amazonaws.com"
- source_arn = aws_cloudwatch_event_rule.portal_event_half_hourly_rule.arn
- }
- resource "aws_lambda_permission" "allow_cloudwatch_to_call_portal_lambda_hourly" {
- statement_id = "AllowExecutionFromCloudWatchHourly"
- action = "lambda:InvokeFunction"
- function_name = aws_lambda_function.portal_data_sync.function_name
- principal = "events.amazonaws.com"
- source_arn = aws_cloudwatch_event_rule.portal_event_hourly_rule.arn
- }
- resource "aws_lambda_permission" "allow_cloudwatch_to_call_portal_lambda_daily" {
- statement_id = "AllowExecutionFromCloudWatchDaily"
- action = "lambda:InvokeFunction"
- function_name = aws_lambda_function.portal_data_sync.function_name
- principal = "events.amazonaws.com"
- source_arn = aws_cloudwatch_event_rule.portal_event_daily_rule.arn
- }
- resource "aws_lambda_permission" "allow_cloudwatch_to_call_portal_lambda_weekly" {
- statement_id = "AllowExecutionFromCloudWatchWeekly"
- action = "lambda:InvokeFunction"
- function_name = aws_lambda_function.portal_data_sync.function_name
- principal = "events.amazonaws.com"
- source_arn = aws_cloudwatch_event_rule.portal_event_weekly_rule.arn
- }
- resource "aws_lambda_permission" "allow_cloudwatch_to_call_portal_lambda_monthly" {
- statement_id = "AllowExecutionFromCloudWatchMonthly"
- action = "lambda:InvokeFunction"
- function_name = aws_lambda_function.portal_data_sync.function_name
- principal = "events.amazonaws.com"
- source_arn = aws_cloudwatch_event_rule.portal_event_monthly_rule.arn
- }
|