I'm trying to create a one-time schedular in AWS event bridge using JAVA SDK. Below is the code
package com.example.kafkademo.service;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import .springframework.stereotype.Service;
import software.amazon.awssdk.services.eventbridge.EventBridgeClient;
import software.amazon.awssdk.services.eventbridge.model.*;
@Service
@Slf4j
@RequiredArgsConstructor
public class AWSEventCreatorService {
private final EventBridgeClient eventBridgeClient;
public void createEvent() {
String ruleName = "one-time-rule";
String scheduleTime = "2025-01-18T11:00:00";
String apiGatewayUrl = ";;
String scheduleExpression = "at(" + scheduleTime + ")'";
log.info("scheduleExpression: {}", scheduleExpression);
try {
// Step 1: Create the rule
PutRuleResponse ruleResponse = eventBridgeClient.putRule(
PutRuleRequest.builder()
.name(ruleName)
.scheduleExpression(scheduleExpression)
.state(RuleState.ENABLED)
.build()
);
log.info("Rule ARN:{} ", ruleResponse.ruleArn());
// Step 2: Add a target to the rule
PutTargetsResponse targetsResponse = eventBridgeClient.putTargets(
PutTargetsRequest.builder()
.rule(ruleName)
.targets(Target.builder()
.id("1")
.arn(apiGatewayUrl)
.build())
.build()
);
if (targetsResponse.failedEntryCount() > 0) {
log.error("Failed to add targets: {} ", targetsResponse.failedEntries());
} else {
log.info("Target successfully added to the rule.");
}
} catch (EventBridgeException e) {
log.error("Error occurred: {} ", e.awsErrorDetails().errorMessage());
} finally {
eventBridgeClient.close();
}
}
}
Im getting the error Error occurred: Parameter ScheduleExpression is not valid.
I'm trying to create a one-time schedular in AWS event bridge using JAVA SDK. Below is the code
package com.example.kafkademo.service;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import .springframework.stereotype.Service;
import software.amazon.awssdk.services.eventbridge.EventBridgeClient;
import software.amazon.awssdk.services.eventbridge.model.*;
@Service
@Slf4j
@RequiredArgsConstructor
public class AWSEventCreatorService {
private final EventBridgeClient eventBridgeClient;
public void createEvent() {
String ruleName = "one-time-rule";
String scheduleTime = "2025-01-18T11:00:00";
String apiGatewayUrl = "https://apigateway.us-east-2.amazonaws/restapis/nbdl323one/resources/fvkez3y11b/methods/GET";
String scheduleExpression = "at(" + scheduleTime + ")'";
log.info("scheduleExpression: {}", scheduleExpression);
try {
// Step 1: Create the rule
PutRuleResponse ruleResponse = eventBridgeClient.putRule(
PutRuleRequest.builder()
.name(ruleName)
.scheduleExpression(scheduleExpression)
.state(RuleState.ENABLED)
.build()
);
log.info("Rule ARN:{} ", ruleResponse.ruleArn());
// Step 2: Add a target to the rule
PutTargetsResponse targetsResponse = eventBridgeClient.putTargets(
PutTargetsRequest.builder()
.rule(ruleName)
.targets(Target.builder()
.id("1")
.arn(apiGatewayUrl)
.build())
.build()
);
if (targetsResponse.failedEntryCount() > 0) {
log.error("Failed to add targets: {} ", targetsResponse.failedEntries());
} else {
log.info("Target successfully added to the rule.");
}
} catch (EventBridgeException e) {
log.error("Error occurred: {} ", e.awsErrorDetails().errorMessage());
} finally {
eventBridgeClient.close();
}
}
}
Im getting the error Error occurred: Parameter ScheduleExpression is not valid.
1 Answer
Reset to default 0It appears that you are trying to provide ScheduleExpression using at
syntax, which is not supported for Scheduled Rules.
https://docs.aws.amazon/eventbridge/latest/APIReference/API_PutRule.html#eventbridge-PutRule-request-ScheduleExpression
This is supported with EventBridge Schedules. https://docs.aws.amazon/scheduler/latest/APIReference/API_CreateSchedule.html#scheduler-CreateSchedule-request-ScheduleExpression
Schedules provide more functionality than scheduled rules and are not coupled to the event bus.