Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

タスクのスケジューリング (cron)

Amazon ECS タスクは、CloudWatch イベント のルールとターゲットを使用して、cron のようなスケジュールで実行できます。

バックアップオペレーションやログスキャンなど、クラスター内で一定間隔で実行するタスクがある場合は、Amazon ECS コンソールを使用して、指定した時間にクラスターで 1 つ以上のタスクを実行する CloudWatch イベント ルールを作成できます。スケジュールされたイベントルールは、特定の間隔 (N 分、時間、日ごとに実行) に設定できます。または、より複雑なスケジュールに設定する場合は、cron 式を使用することもできます。詳細については、Amazon CloudWatch Events ユーザーガイドの「ルールのスケジュール式」を参照してください。

注記

この機能は、次のリージョンでは Fargate タスクにまだ使用できません。

リージョン名 リージョン
米国西部 (北カリフォルニア) us-west-1
アジアパシフィック (ムンバイ) ap-south-1
アジアパシフィック (ソウル) ap-northeast-2
欧州 (ロンドン) eu-west-2

スケジュールされたタスクの作成

  1. https://console.aws.amazon.com/ecs/ にある Amazon ECS コンソールを開きます。

  2. スケジュールされたタスクを作成するクラスターを選択します。

  3. [Cluster: cluster-name] ページで、[Scheduled Tasks]、[Create] の順に選択します。

  4. [Schedule rule name] に、スケジュールルールの一意の名前を入力します。最大 64 文字の英字、数字、ピリオド、ハイフン、アンダースコアを使用できます。

  5. (オプション) [Schedule rule description] に、ルールの説明を入力します。最大 512 文字の文字を使用できます。

  6. [Schedule rule type] で、スケジュールルールに固定間隔スケジュールを使用するか cron 式を使用するかを選択します。詳細については、Amazon CloudWatch Events ユーザーガイドの「ルールのスケジュール式」を参照してください。

    • [Run at fixed interval] に、スケジュールの間隔と単位を入力します。

    • [Cron expression] に、タスクスケジュールの cron 式を入力します。これらの式には 6 つの必須フィールドがあり、フィールドは空白で区切られます。詳細と cron 式の例については、Amazon CloudWatch Events ユーザーガイドの「Cron 式」を参照してください。

  7. スケジュールルールのターゲットを作成します。

    1. [ターゲット ID] に、ターゲットの一意の ID を入力します。最大 64 文字の英字、数字、ピリオド、ハイフン、アンダースコアを使用できます。

    2. [起動タイプ] で、サービスのタスクの起動タイプを選択します。詳細については、「Amazon ECS 起動タイプ」を参照してください。

    3. [Task definition] で、このターゲットに対して実行するタスク定義のファミリーとリビジョン (family:revision) を選択します。

    4. [プラットフォームのバージョン] では、このターゲットに使用するプラットフォームバージョンを選択します。詳細については、「AWS Fargate プラットフォームのバージョン」を参照してください。

      注記

      プラットフォームのバージョンは、Fargate の起動タイプを使用するタスクにのみ適用されます。

    5. [Number of tasks] に、ルールの実行時にクラスターで実行する、指定したタスク定義のインスタンスの数を入力します。

    6. (オプション) [Task role override (タスクロールの上書き)] で、タスク定義のデフォルトの代わりに、ターゲットでタスクに使用する IAM ロールを選択します。詳細については、「タスク用の IAM ロール」を参照してください。ここには、[Amazon EC2 Container Service Task Role] 信頼関係があるロールのみが表示されます。タスク用の IAM ロールを作成する方法の詳細については、「タスク用の IAM ロールとポリシーの作成」を参照してください。CloudWatch IAM ロールに対するタスクロール上書きに、iam:PassRole アクセス許可を追加する必要があります。詳細については、「CloudWatch イベント IAM ロール」を参照してください。

    7. スケジュールされたタスク定義で awsvpc ネットワークモードを使用する場合、VPC、サブネット、セキュリティグループ設定をスケジュールタスクに設定する必要があります。詳細については、「タスクネットワーキングと awsvpc ネットワークモード」を参照してください。

      1. [Cluster VPC (クラスター VPC)] で、EC2 起動タイプを選択した場合は、コンテナインスタンスが存在する VPC を選択します。Fargate 起動タイプを選択した場合は、Fargate タスクが使用する VPC を選択します。専有ハードウェアテナンシーは Fargate タスクではサポートされていないため、選択した VPC で専有ハードウェアテナンシーが必須に設定されていないことを確認してください。

      2. [サブネット] では、スケジュールされたタスクの配置に利用できるサブネットを選択します。

        重要

        awsvpc ネットワークモードではプライベートサブネットだけがサポートされます。タスクはパブリック IP アドレスを受け取らないため、アウトバウンドのインターネットアクセスには NAT ゲートウェイが必要です。またインバウンドのインターネットトラフィックは、ロードバランサーを経由させる必要があります。

      3. [セキュリティグループ] にスケジュールされたタスク用のセキュリティグループが作成され、インターネットからの HTTP トラフィックが許可されるようになります (0.0.0.0/0)。このセキュリティグループの名前やルールを編集する場合や、既存のセキュリティグループを選択する場合は、[Edit] を選択してセキュリティグループ設定に変更を加えます。

      4. [自動割り当てパブリック IP] で、タスクがパブリック IP アドレスを受け取るかどうかを選択します。Fargate タスクを使用している場合、タスクの Elastic Network Interface に、インターネットへのルートを持つか、またはリクエストをインターネットにルーティングできる NAT ゲートウェイを持つパブリック IP アドレスが割り当てられている必要があります。そうすることにより、タスクでコンテナイメージをプルできるようになります。

    8. [CloudWatch Events IAM role for this target (このターゲットの CloudWatch イベントの IAM ロール)] で、すでに作成した CloudWatch イベント サービスロール (ecsEventsRole) を選択します。または、[Create new role (新しいロールの作成)] を選択して、CloudWatch イベント がお客様に代わって Amazon ECS を呼び出してタスクを実行するために必要な IAM ロールを作成します。詳細については、「CloudWatch イベント IAM ロール」を参照してください。

      重要

      スケジュールされたタスクでタスク実行ロールを使用する必要があるか、またはタスクロール上書きが使用されている場合は、タスク実行ロールまたはタスクロール上書きに対する iam:PassRole アクセス許可を CloudWatch IAM ロールに追加する必要があります。詳細については、「CloudWatch イベント IAM ロール」を参照してください。

    9. (オプション) [Container overrides] セクションで、個々のコンテナを展開し、タスク定義で定義されているそのコンテナのコマンド/環境変数を上書きできます。

  8. (オプション) 追加のターゲット (このルールの適用時に実行する他のタスク) を追加するには、[Add targets] を選択し、追加のターゲットごとに前のサブステップを繰り返します。

  9. [作成] を選択します。

スケジュールされたタスクを編集するには

  1. https://console.aws.amazon.com/ecs/ にある Amazon ECS コンソールを開きます。

  2. スケジュールされたタスクを編集するクラスターを選択します。

  3. [Cluster: cluster-name] ページで、[Scheduled Tasks] を選択します。

  4. 編集するスケジュールルールの左側にあるボックスを選択してから、[Edit] を選択します。

  5. 更新するフィールドを編集し、[Update] を選択します。