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

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

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

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

  • AWS アカウントとアカウントに関連付けられた ECSEventsRole を設定します。

  • AWS CLI バージョン 2 のインストールおよび設定詳細については、「AWS CLI バージョン 2 のインストール」 および「AWS コマンドラインインターフェイス」を参照してください。

  • 登録されたタスク定義。タスク定義をまだ作成および登録していない場合は、「AWS Fargate を使用した Amazon ECS コンソールの開始方法」を参照してください。

  • デフォルトの ECS クラスターで実行されている Amazon EC2 Linux インスタンス。これらのリソースを作成する必要がある場合は、「AWS Fargate を使用した Amazon ECS コンソールの開始方法」を参照してください。

    スケジューリング結果を確認するためには、クラスターでサービスやタスクが実行されていないようにします。例を試す前に、ECS コンソールからクラスターのタスクとサービスを削除してください。

スケジュールされたタスクを作成するには (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 クラスターとして定義されています。MyRule1 に従って、1 つのタスクの実行がスケジュールされます。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