AWS Cloudformation: определение задачи ECS ARN - PullRequest
1 голос
/ 11 марта 2020

Я создал шаблон cfn для периодического запуска события cloudwatch для запуска задачи ecs с типом запуска Fargate. Правило CW выглядит следующим образом:

sfECSScheduleEventRule:
Type: AWS::Events::Rule
Description: ''
Properties:
  State: ENABLED
  ScheduleExpression: rate(1 minute)
  Name: !Sub sf-eventrule-ecs-${WPRegion}-${WPEnv}
  Targets:
  - Id: !Sub sf-ecs-target-task-${WPRegion}-${WPEnv}
    Arn: !GetAtt
      - ECSCluster
      - Arn
    RoleArn: !GetAtt
      - ECSTaskExecutionRole
      - Arn
    EcsParameters:
      #arn:aws:ecs:ap-northeast-1:448965722616:task-definition/fargate-task-jp-stg:latest
      TaskDefinitionArn: !Ref sfECSTaskDefinition          
      TaskCount: !Ref ECSTaskDesiredCount
      LaunchType: FARGATE
      PlatformVersion: 'LATEST'
      NetworkConfiguration:
        AwsVpcConfiguration:
          AssignPublicIp: DISABLED
          Subnets:
          - !Ref sfPrivateSubnet1

Когда я создаю стек, я нахожу цель правила, как показано ниже: enter image description here

Что не срабатывает задание. Но когда я изменяю ревизию задачи с 4 на Последнюю вручную , тогда это работает. Задача выполняется периодически.

enter image description here

Как изменить правило, чтобы оно указывало на самое последнее?

1 Ответ

0 голосов
/ 11 марта 2020

Вы используете:

TaskDefinitionArn: !Ref sfECSTaskDefinition 

Согласно документам это возвращает arn с номером ревизии. Также согласно TaskDefinitionArn :

Если редакция задачи не указана, по умолчанию используется самая последняя редакция на момент создания ресурса.

Таким образом, я думаю, что если вы создадите arn вручную, вы сможете получить самую последнюю ревизию.

!Sub "arn:aws:ecs:${AWS::Region}:${AWS::AccountId}:task-definition/fargate-task-jp-stg"

Не знаю, параметризовано ли ваше имя семейства задач fargate-task-jp-stg в шаблоне. Если да, то вы также можете ссылаться на него в функции Sub intrinsi c.

...