Образование облаков: при условии, что Арн не в правильном формате - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь запускать AWS Task-schedular из CLoudwatch каждые 2 часа, который будет выполнять некоторые операции.

Ниже мой шаблон Cloudformation

  TaskSchedule:
    Type: "AWS::Events::Rule"
    DeletionPolicy: Delete
    Properties:
      Description: >
        Run every two hours.
      ScheduleExpression:  !Ref TaskRate #rate(1 day)  #cron (15 10 * * ? *) #(0 0 * * *) #!Ref LambdaRate
      State: ENABLED
      #Targets:
      #  - Arn: !Ref ecsCluster.Arn     #!Sub ${TaskDefinitionDaily.Arn}
      #    Id: TaskSchedule
      #    EcsParameters:
      #      TaskDefinitionArn: !Ref TaskDefinitionDaily
      #      TaskCount: 1
      #      LaunchType: 'FARGATE'
      #      PlatformVersion: 'LATEST'
      Targets:
        - Id: 'ECSTarget'
          Arn: !Ref ecsCluster.Arn     #!Sub ${TaskDefinitionDaily.Arn}
          EcsParameters:
            TaskCount: 1
            TaskDefinitionArn: !Ref 'TaskDefinitionDaily'

Теперь, когда я пытаюсь запустить вышеупомянутый шаблон Cloudformation, я получаю ошибку ниже. Я новичок в ЦФТ и не знаю, что является причиной этого.

Provided Arn is not in correct format. (Service: AmazonCloudWatchEvents; Status Code: 400; Error Code: ValidationException;

Пожалуйста, дайте мне знать, что я могу сделать не так.

1 Ответ

2 голосов
/ 03 марта 2020

Вы пытаетесь получить доступ к атрибуту Arn для ecsCluster, но вы используете !Ref для этого. Это не работает Вы должны использовать !GetAtt для получения атрибута.

Попробуйте следующее

TaskSchedule:
  Type: AWS::Events::Rule
  DeletionPolicy: Delete
  Properties:
    Description: >
      Run every two hours.
    ScheduleExpression:  !Ref TaskRate
    State: ENABLED
    Targets:
      - Id: ECSTarget
        Arn: !GetAtt ecsCluster.Arn
        EcsParameters:
          TaskCount: 1
          TaskDefinitionArn: !Ref TaskDefinitionDaily

...