AWS CloudWatchEvents PutRuleRequest 的问题

Issues with AWS CloudWatchEvents PutRuleRequest

我正在编写一个简单的程序,我只想执行 1 次作业。我查看了 Amazon 的 Cloudwatch 事件,结合 AWS Lambda,这非常符合我的要求。

我正在使用 Java AWS SDK(版本 1.11.711)从代码动态创建规则。

这是我生成 PutResultRequest 的伪代码:

        final PutRuleRequest putRuleRequest = new PutRuleRequest().withName("new_rule_name").withDescription("my first rule")
                                                                  .withScheduleExpression("0 11 24 * ? 2020").withState(RuleState.ENABLED);

这个 cron 表达式在 cronmaker 上显示为 Invalid 但是当我把它放在 UI.

的 cloudwatch schedule 中时显示了下一个执行日期

Cronmaker :

云观察:

即使是这个表达式,SDK 也给我一个错误 0 17 24 * ? 2020

错误的堆栈跟踪如下 -

Exception in thread "main" com.amazonaws.services.cloudwatchevents.model.AmazonCloudWatchEventsException: Parameter ScheduleExpression is not valid. (Service: AmazonCloudWatchEvents; Status Code: 400; Error Code: ValidationException; Request ID: dd5dc5fb-a209-4ddb-ad58-4e468843149d)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1742)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1371)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1347)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1127)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:784)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:752)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:726)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access0(AmazonHttpClient.java:686)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:668)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:532)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:512)
    at com.amazonaws.services.cloudwatchevents.AmazonCloudWatchEventsClient.doInvoke(AmazonCloudWatchEventsClient.java:2685)
    at com.amazonaws.services.cloudwatchevents.AmazonCloudWatchEventsClient.invoke(AmazonCloudWatchEventsClient.java:2652)
    at com.amazonaws.services.cloudwatchevents.AmazonCloudWatchEventsClient.invoke(AmazonCloudWatchEventsClient.java:2641)
    at com.amazonaws.services.cloudwatchevents.AmazonCloudWatchEventsClient.executePutRule(AmazonCloudWatchEventsClient.java:2031)
    at com.amazonaws.services.cloudwatchevents.AmazonCloudWatchEventsClient.putRule(AmazonCloudWatchEventsClient.java:2002)
Disconnected from the target VM, address: '127.0.0.1:63315', transport: 'socket'

Process finished with exit code 1

我做错了什么?

你能试试吗-

.withScheduleExpression("cron(0 11 24 * ? 2020)")

https://docs.aws.amazon.com/cli/latest/reference/events/put-rule.html

https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloudwatchevents/model/PutRuleRequest.html