AWS CLI を使用したスケジュールされたタスクの作成 - Amazon Elastic Container Service

AWS CLI を使用したスケジュールされたタスクの作成

このトピックでは、AWS CLI を使用してスケジュールされたタスクを作成する方法を説明します。スケジュールされたタスクは CloudWatch Events API を使用して作成します。詳細については、Amazon CloudWatch Events ユーザーガイドAmazon CloudWatch Events とはを参照してください。

以下の前提条件を満たしてください。

スケジュールされたタスクを作成するには (AWS CLI)

  1. CloudWatch Eventsルールを作成します。この例では、毎日午後 12:00 (UTC) にトリガーされる MyRule1 という名前のルールを作成します。スケジュール結果を確認する都合に合わせて時間を変更できます。1 番目の時間のプレースホルダーは分で、2 番目のプレースホルダーは UTC 時間です。ルール式の他の例については、Amazon CloudWatch Events ユーザーガイドルールのスケジュール式を参照してください。

    aws events put-rule \ --schedule-expression "cron(0 12 * * ? *)" --name MyRule1
  2. Amazon ECS クラスターとタスク定義の詳細を CloudWatch Events ルールのターゲットとして追加します。完全な Amazon リソースネーム (ARN) を使用して、クラスターとタスク定義を指定します。起動タイプとネットワーク構成は、タスク定義または put-targets コマンドラインで定義する必要があります。Fargate を使用する場合は、ネットワーク構成を awsvpc として定義する必要があります。

    この例では、ターゲットは、first-run-task-definition:1 タスク定義に基づいて Fargate タスクを実行する default クラスターとして定義されています。1つのタスクのカウントが、MyRule1 に従って、実行されるようにスケジュールされています。ecsEventsRole IAM ロールがターゲットに割り当てられます。起動タイプは FARGATE です。ネットワーク構成は awsvpc として定義され、セキュリティグループとパブリックサブネットが含まれています。このコマンドは、デフォルトクラスター内の ECS インスタンスから実行されます。put-targets の詳細については、「put-targets」を参照してください。クラスターおよびタスク定義は作成済みである必要があります。作成されていない場合はエラーが発生します。

    次の内容で、scheduledtask.json という名前のローカルファイルを作成します。

    [{ "Id": "1", "Arn": "arn:aws:ecs:us-east-1:123456789012:cluster/default", "RoleArn": "arn:aws:iam::123456789012:role/ecsEventsRole", "EcsParameters": { "TaskDefinitionArn": "arn:aws:ecs:us-east-1:123456789012:task-definition/first-run-task-definition:1", "TaskCount": 1, "LaunchType": "FARGATE", "NetworkConfiguration": { "awsvpcConfiguration": { "Subnets": ["subnet1"], "SecurityGroups": ["secgroup1"], "AssignPublicIp": "ENABLED" } }, "PlatformVersion": "LATEST" } }]

    以下のコマンドを使用してターゲットを作成します。

    aws events put-targets \ --rule "MyRule1" \ --targets file://scheduledtask.json