Проблемы с AWS CloudWatchEvents PutRuleRequest - PullRequest
0 голосов
/ 23 января 2020

Я нахожусь в процессе написания простой программы, в которой я хочу выполнить задание только 1 раз. Я посмотрел на Amazon Cloudwatch и, в сочетании с AWS Lambda, это прекрасно согласуется с моим требованием.

Я использую Java AWS SDK (версия 1.11.711) для динамического создания правил из code.

Вот мой псевдокод для генерации запроса PutResultRequest:

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

Это выражение cron отображается как Invalid в cronmaker, но показывает следующую дату выполнения, когда я поместите это в график облачных часов в интерфейсе пользователя.

Cronmaker: enter image description here

Cloudwatch: enter image description here

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.access$500(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

Что я делаю не так?

1 Ответ

2 голосов
/ 23 января 2020
...