如何在AWS Fargate上安排ECS任务

Jar*_*d S 14 amazon-ecs aws-fargate

我已经在Elastic Container Service上创建了一个任务定义,并已成功在Fargate集群中运行它.但是,当我在所述群集中创建计划任务时,"启动类型"选项被硬编码到EC2.有没有办法,可能通过命令行安排任务在Fargate上运行?

在此输入图像描述

Dav*_*Lin 8

当心 !AWS现在支持此功能:

https://aws.amazon.com/about-aws/whats-new/2018/08/aws-fargate-now-supports-time-and-event-based-task-scheduling/

  • 似乎还不是可变形的; 不在文档中//为AWS :: Events :: Rule获取错误不支持NetworkConfiguration,对于具有awsvpc网络配置(fargate任务)的任务,UI应该是必需的. (2认同)
  • 没错,Cloudformation还没有完全支持.您可以使用云信息模板创建计划任务.但AWS控制台中需要手动任务配置. (2认同)

Nik*_*pal 7

似乎无法在FARGATE上安排任务.

现在唯一能做到的方法似乎就是让你的'调度程序'在ECS之外.我用lambda做了.你也可以使用类似jenkins或简单的cron任务来激活对ECS的aws-cli命令,但在这两种情况下你都需要一个总是运行的实例.

我写了一个lambda,它接受要发送到ECS任务的params(覆盖)并且具有任务应该具有的调度.

更新:现在FARGATE Cluster详细信息中似乎有一个计划选项卡,允许您在ECS任务上设置cron计划.


tan*_*nvi 5

虽然AWS文档为您提供了通过CloudFormation进行此操作的方法,但似乎他们仍未发布此功能。我一直在尝试做类似的事情,遇到同样的问题。一旦它变得可用,aws文档中的此链接将很有用。这是他们建议这样做的方式,但是我一直遇到说NetworkConfiguration无法识别和LaunchType无法识别的错误。

 "EcsParameters": { 
        "Group": "string",
        "LaunchType": "string",
        "NetworkConfiguration": { 
           "awsvpcConfiguration": { 
              "AssignPublicIp": "string",
              "SecurityGroups": [ "string" ],
              "Subnets": [ "string" ]
           }
        },
Run Code Online (Sandbox Code Playgroud)

更新:这是一个替代方案,最终通过aws events put-targetsaws cli上的命令为我工作了!

确保您的AWS CLI是最新的。对于cli的旧版本,此方法失败。运行此更新: pip install awscli --upgrade --user

之后,您应该会很好。使用aws events put-targets --rule <value> --targets <value>命令。确保在运行此命令之前,您已经在集群上定义了一条规则。如果没有,您也可以使用aws events put-rulecmd进行操作。有关放置规则放置目标,请参阅AWS文档

以下是文档中的规则示例:

aws events put-rule --name "DailyLambdaFunction" --schedule-expression "cron(0 9 * * ? *)"
Run Code Online (Sandbox Code Playgroud)

对我有用的put-targets命令是这样的:

aws events put-targets --rule cli-RS-rule --targets '{"Arn": "arn:aws:ecs:1234/cluster/clustername","EcsParameters": {"LaunchType": "FARGATE","NetworkConfiguration": {"awsvpcConfiguration": {"AssignPublicIp": "ENABLED", "SecurityGroups": [ "sg-id1233" ], "Subnets": [ "subnet-1234" ] }},"TaskCount": 1,"TaskDefinitionArn": "arn:aws:ecs:1234:task-definition/taskdef"},"Id": "sampleID111","RoleArn": "arn:aws:iam:1234:role/eventrole"}'
Run Code Online (Sandbox Code Playgroud)