Elastic Container Serviceでタスク定義を作成し、Fargateクラスターで正常に実行しました。ただし、上記のクラスターでスケジュールされたタスクを作成すると、「起動タイプ」のオプションがEC2にハードコーディングされます。おそらくコマンドラインを介して、Fargateで実行するタスクをスケジュールする方法はありますか?
注意喚起 !これは、AWSでサポートされるようになりました。
一部の地域ではありませんが、4月19日の時点ではまだEU-west-2(ロンドン)でサポートされていませんでした。このページの上部にある表で、目的の地域でサポートされているかどうかを確認します。 https://docs.aws.Amazon.com/AmazonECS/latest/developerguide/scheduled_tasks.html
FARGATEでタスクをスケジュールする方法はないようです。
今すぐできる唯一の方法は、ECSの外部に「スケジューラ」を置くことです。私はラムダでそれをやった。 jenkinsやECSにaws-cliコマンドを起動する単純なcronタスクのようなものを使用することもできますが、どちらの場合もインスタンスを常に実行する必要があります。
ECSタスクに送信されるパラメーター(オーバーライド)を受け入れるラムダを作成し、タスクが持つ予定のスケジュールを設定しました。
更新:FARGATEクラスタの詳細に[スケジュール]タブがあり、ECSタスクにcronスケジュールを設定できるようになりました。
AWSドキュメントではCloudFormationを介してこれを行う方法が提供されていますが、いずれにしてもこの機能はまだリリースされていないようです。 似たようなこと をしようとしていて、同じ問題にぶつかりました。利用可能になったら、awsドキュメントの このリンク が役立つはずです。彼らがそれを行うことを提案する方法は次のとおりですが、NetworkConfiguration
が認識されず、LaunchType
が認識されないというエラーが発生し続けます。
"EcsParameters": {
"Group": "string",
"LaunchType": "string",
"NetworkConfiguration": {
"awsvpcConfiguration": {
"AssignPublicIp": "string",
"SecurityGroups": [ "string" ],
"Subnets": [ "string" ]
}
},
更新:これは、aws events put-targets
aws cliのコマンド!
AWS CLIが最新であることを確認してください。この方法は、古いバージョンのCLIでは失敗します。これを実行して更新:pip install awscli --upgrade --user
その後、あなたは行ってもいいはずです。使用 aws events put-targets --rule <value> --targets <value>
コマンド。このコマンドを実行する前に、クラスターでルールが既に定義されていることを確認してください。そうでない場合は、aws events put-rule
cmdも。 put-ruleのAWSドキュメント および put-targetsの を参照してください。
ドキュメントのルールの例を以下に示します。
aws events put-rule --name "DailyLambdaFunction" --schedule-expression "cron(0 9 * * ? *)"
私のために働いた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"}'
イベントソースとしてスケジュールを使用し、ターゲットとしてESCタスクを使用するCloudWatchルールを作成できます。
開示:Powerdown @ https://www.powerdown.io を提供するSenseDeepで働いています
他のサービスがこの機能を提供します。 PowerDownは、Fargateサービスをスケジュールする機能を提供します。これはタスクレベルではなくサービスレベルですが、タスク用のサービスを簡単に作成できます。たとえば、CICDパイプラインコンテナーをスケジュールして、9-5 M-Fを実行できます。
EC2インスタンスとFargateインスタンスを同じクラスターに配置することはできません。
Fargateインスタンスをスケジュールすることは可能です。特定のサービスを作成し、awsツールから更新します。例:
aws ecs update-service --service my-http-service --task-definition
https://docs.aws.Amazon.com/cli/latest/reference/ecs/update-service.html
有用なリソース:
ECS awsツールを使用して、ラムダまたはtravisで実行できます。
この中程度の投稿をチェックしてください:
ボタンには、awsコマンドがあるこのリポジトリがあります。
https://github.com/JicLotus/ecs-farate-scripts-to-deploy-and-build
ベスト
いいえ、残念ながらまだサポートされていません。未解決の問題があります here 。うまくいけば、私もそれを使いたいと思ってすぐに完了します!