Jar*_*d S 14 amazon-ecs aws-fargate
我已经在Elastic Container Service上创建了一个任务定义,并已成功在Fargate集群中运行它.但是,当我在所述群集中创建计划任务时,"启动类型"选项被硬编码到EC2.有没有办法,可能通过命令行安排任务在Fargate上运行?
当心 !AWS现在支持此功能:
似乎无法在FARGATE上安排任务.
现在唯一能做到的方法似乎就是让你的'调度程序'在ECS之外.我用lambda做了.你也可以使用类似jenkins或简单的cron任务来激活对ECS的aws-cli命令,但在这两种情况下你都需要一个总是运行的实例.
我写了一个lambda,它接受要发送到ECS任务的params(覆盖)并且具有任务应该具有的调度.
更新:现在FARGATE Cluster详细信息中似乎有一个计划选项卡,允许您在ECS任务上设置cron计划.
虽然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)
| 归档时间: |
|
| 查看次数: |
5921 次 |
| 最近记录: |