List of usage examples for com.amazonaws.services.cloudwatchevents.model PutTargetsRequest setTargets
public void setTargets(java.util.Collection<Target> targets)
The targets to update or add to the rule.
From source file:squash.deployment.lambdas.ScheduledCloudwatchEventCustomResourceLambda.java
License:Apache License
ImmutablePair<String, String> setUpPreMidnightRuleAndTargets(String ruleName, String applyBookingRulesTargetId, String applyBookingRulesLambdaArn, String apiGatewayBaseUrl, String databaseBackupTargetId, String databaseBackupLambdaArn, AmazonCloudWatchEvents amazonCloudWatchEventsClient, LambdaLogger logger) {// ww w.ja v a 2s.c o m // Create pre-midnight rule with Cron expression logger.log("Creating pre-midnight rule"); PutRuleRequest putRuleRequest = new PutRuleRequest(); // Put just before midnight to allow rule-based bookings to be created // before anyone else has a chance to create bookings that might clash. // This is 9pm UTC - i.e. 10pm BST. putRuleRequest.setScheduleExpression("cron(0 21 * * ? *)"); putRuleRequest.setName(ruleName); putRuleRequest.setState(RuleState.ENABLED); putRuleRequest.setDescription( "This runs just before midnight every day to apply booking rules for the following day and to backup all bookings."); ImmutablePair<String, String> ruleArn = new ImmutablePair<>("UpdateBookingsServiceEventRuleArn", amazonCloudWatchEventsClient.putRule(putRuleRequest).getRuleArn()); // Create target with applyBookingRules and backupBookings lambdas, and // attach rule to it. logger.log("Attaching applyBookingRules lambda to the pre-midnight rule"); Target applyBookingRulesTarget = new Target(); applyBookingRulesTarget.setArn(applyBookingRulesLambdaArn); applyBookingRulesTarget.setInput("{\"apiGatewayBaseUrl\" : \"" + apiGatewayBaseUrl + "\"}"); applyBookingRulesTarget.setId(applyBookingRulesTargetId); Collection<Target> midnightTargets = new ArrayList<>(); midnightTargets.add(applyBookingRulesTarget); logger.log("Attaching database backup lambda to the pre-midnight rule"); Target databaseBackupTarget = new Target(); databaseBackupTarget.setArn(databaseBackupLambdaArn); databaseBackupTarget.setId(databaseBackupTargetId); midnightTargets.add(databaseBackupTarget); PutTargetsRequest putTargetsRequest = new PutTargetsRequest(); putTargetsRequest.setRule(ruleName); putTargetsRequest.setTargets(midnightTargets); amazonCloudWatchEventsClient.putTargets(putTargetsRequest); logger.log("Targets attached to the pre-midnight rule"); return ruleArn; }
From source file:squash.deployment.lambdas.ScheduledCloudwatchEventCustomResourceLambda.java
License:Apache License
ImmutablePair<String, String> setUpPostMidnightRuleAndTargets(String ruleName, String websiteRefreshTargetId, String updateBookingsLambdaArn, String apiGatewayBaseUrl, AmazonCloudWatchEvents amazonCloudWatchEventsClient, LambdaLogger logger) { // Create post-midnight rule with Cron expression logger.log("Creating post-midnight rule"); PutRuleRequest putRuleRequest = new PutRuleRequest(); // Put just after midnight to avoid any timing glitch i.e. somehow still // thinking it's the previous day when it runs. This is 10 minutes after // midnight UTC - i.e. 1.10AM BST. putRuleRequest.setScheduleExpression("cron(10 0 * * ? *)"); putRuleRequest.setName(ruleName);/* w w w .java2 s . c om*/ putRuleRequest.setState(RuleState.ENABLED); putRuleRequest.setDescription( "This runs just after midnight every day to refresh all the squash booking pages in S3"); ImmutablePair<String, String> ruleArn = new ImmutablePair<>("UpdateFrontendServiceEventRuleArn", amazonCloudWatchEventsClient.putRule(putRuleRequest).getRuleArn()); // Create target with updateBookings lambda, and attach rule to it. logger.log("Attaching updataBookings lambda to the post-midnight rule"); Target updateBookingsTarget = new Target(); updateBookingsTarget.setArn(updateBookingsLambdaArn); updateBookingsTarget.setInput("{\"apiGatewayBaseUrl\" : \"" + apiGatewayBaseUrl + "\"}"); updateBookingsTarget.setId(websiteRefreshTargetId); Collection<Target> midnightTargets = new ArrayList<>(); midnightTargets.add(updateBookingsTarget); PutTargetsRequest putMidnightTargetsRequest = new PutTargetsRequest(); putMidnightTargetsRequest.setRule(ruleName); putMidnightTargetsRequest.setTargets(midnightTargets); amazonCloudWatchEventsClient.putTargets(putMidnightTargetsRequest); return ruleArn; }
From source file:squash.deployment.lambdas.ScheduledCloudwatchEventCustomResourceLambda.java
License:Apache License
ImmutablePair<String, String> setUpPrewarmerRuleAndTargets(String ruleName, String prewarmerTargetId, String createOrDeleteBookingsLambdaArn, AmazonCloudWatchEvents amazonCloudWatchEventsClient, LambdaLogger logger) {// w w w. j a va2 s. com // Create prewarmer rule with Rate expression logger.log("Creating prewarmer rule"); PutRuleRequest putRuleRequest = new PutRuleRequest(); putRuleRequest.setScheduleExpression("rate(5 minutes)"); putRuleRequest.setName(ruleName); putRuleRequest.setState(RuleState.ENABLED); putRuleRequest.setDescription("This runs every 5 minutes to prewarm the squash bookings lambdas"); ImmutablePair<String, String> ruleArn = new ImmutablePair<>("PrewarmerEventRuleArn", amazonCloudWatchEventsClient.putRule(putRuleRequest).getRuleArn()); // Create target with bookings lambda, and attach rule to it logger.log("Attaching bookings lambda to the prewarmer rule"); Target prewarmerTarget = new Target(); prewarmerTarget.setArn(createOrDeleteBookingsLambdaArn); prewarmerTarget.setInput("{\"slot\" : \"-1\"}"); prewarmerTarget.setId(prewarmerTargetId); Collection<Target> prewarmerTargets = new ArrayList<>(); prewarmerTargets.add(prewarmerTarget); PutTargetsRequest putPrewarmerTargetsRequest = new PutTargetsRequest(); putPrewarmerTargetsRequest.setRule(ruleName); putPrewarmerTargetsRequest.setTargets(prewarmerTargets); amazonCloudWatchEventsClient.putTargets(putPrewarmerTargetsRequest); return ruleArn; }