云形成:如果 Arn 的格式不正确

bur*_*ing 0 amazon-web-services amazon-ecs aws-cloudformation

我试图每 2 小时从 CLoudwatch 触发一次 AWS 任务计划,这将执行一些操作。

下面是我的 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'
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试运行上述 Cloudformation 模板时,出现以下错误。我是 CFT 的新手,不知道是什么原因造成的。

Provided Arn is not in correct format. (Service: AmazonCloudWatchEvents; Status Code: 400; Error Code: ValidationException;
Run Code Online (Sandbox Code Playgroud)

请让我知道我在这里做错了什么。

Mai*_*KaY 5

您正在尝试访问 的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

Run Code Online (Sandbox Code Playgroud)