タスクのスケジューリング (cron
)
Amazon ECS は、cron
のようなスケジュール、または CloudWatch イベント に応答してタスクをスケジュールする機能をサポートしています。この機能は、Fargate および EC2
の両方の起動タイプを使用する Amazon ECS タスクでサポートされています。
バックアップオペレーションやログスキャンなど、クラスター内で一定間隔で実行するタスクがある場合は、Amazon ECS コンソールを使用して、指定した時間にクラスターで
1 つ以上のタスクを実行する CloudWatch イベント ルールを作成できます。スケジュールされたイベントルールは、特定の間隔 (N
分、時間、日ごとに実行) に設定できます。または、より複雑なスケジュールに設定する場合は、cron
式を使用することもできます。詳細については、Amazon CloudWatch Events ユーザーガイドの「ルールのスケジュール式」を参照してください。
また、Fargate タスクを CloudWatch イベント のタスクターゲットとして設定できるようになりました。これにより、発生した変更に応答してタスクを起動することができます。さらに、CloudWatch
イベント コンソールおよび AWS CLI を介して awsvpc
ネットワークを使用するときに、ネットワーク設定を修正でき、CloudWatch イベント によってトリガーされた Fargate タスクに、Amazon EC2
インスタンスと同じネットワーキングプロパティが与えられます。詳細については、Amazon CloudWatch Events ユーザーガイドの「チュートリアル: ファイルが Amazon S3 バケットにアップロードされたときに Amazon ECS タスクを実行する」を参照してください 。
この機能は、次のリージョンでは Fargate タスクにまだ使用できません。
リージョン名 |
リージョン |
---|---|
中国 (北京) |
cn-north-1 |
中国 (寧夏) |
cn-northwest-1 |
南米 (サンパウロ) |
sa-east-1 |
中東 (バーレーン) |
me-south-1 |
スケジュールされたタスクの作成
-
Amazon ECS コンソール (https://console.aws.amazon.com/ecs
) を開きます。 -
スケジュールされたタスクを作成するクラスターを選択します。クラスターがない場合は、「クラスターの作成」で新しいクラスターを作成するステップを参照してください。
-
[Cluster:
cluster-name
] ページで、[Scheduled Tasks]、[Create] の順に選択します。 -
[Schedule rule name] に、スケジュールルールの一意の名前を入力します。最大 64 文字の英字、数字、ピリオド、ハイフン、アンダースコアを使用できます。
-
(オプション) [Schedule rule description] に、ルールの説明を入力します。最大 512 文字の文字を使用できます。
-
[Schedule rule type] で、スケジュールルールに固定間隔スケジュールを使用するか
cron
式を使用するかを選択します。詳細については、Amazon CloudWatch Events ユーザーガイドの「ルールのスケジュール式」を参照してください。-
[Run at fixed interval] に、スケジュールの間隔と単位を入力します。
-
[Cron expression] に、タスクスケジュールの
cron
式を入力します。これらの式には 6 つの必須フィールドがあり、フィールドは空白で区切られます。詳細とcron
式の例については、Amazon CloudWatch Events ユーザーガイドの「Cron 式」を参照してください。
-
-
スケジュールルールのターゲットを作成します。
-
[ターゲット ID] に、ターゲットの一意の ID を入力します。最大 64 文字の英字、数字、ピリオド、ハイフン、アンダースコアを使用できます。
-
[起動タイプ] で、サービスのタスクの起動タイプを選択します。詳細については、「Amazon ECS 起動タイプ」を参照してください。
-
[Task definition] で、このターゲットに対して実行するタスク定義のファミリーとリビジョン (family:revision) を選択します。
-
[プラットフォームのバージョン] では、このターゲットに使用するプラットフォームバージョンを選択します。詳細については、「AWS Fargate プラットフォームのバージョン」を参照してください。
注記 プラットフォームのバージョンは、Fargate の起動タイプを使用するタスクにのみ適用されます。
-
[Number of tasks] に、ルールの実行時にクラスターで実行する、指定したタスク定義のインスタンスの数を入力します。
-
(オプション) [Task role override (タスクロールの上書き)] で、タスク定義のデフォルトの代わりに、ターゲットでタスクに使用する IAM ロールを選択します。詳細については、「タスク用の IAM ロール」を参照してください。ここには、[Amazon EC2 Container Service Task Role] 信頼関係があるロールのみが表示されます。タスク用の IAM ロールを作成する方法の詳細については、「タスク用の IAM ロールとポリシーの作成」を参照してください。タスクロールやタスクロール上書き用の
iam:PassRole
アクセス許可を CloudWatch IAM ロールに追加する必要があります。詳細については、「Amazon ECS CloudWatch イベント IAM ロール」を参照してください。 -
スケジュールされたタスク定義で
awsvpc
ネットワークモードを使用する場合、VPC、サブネット、セキュリティグループ設定をスケジュールタスクに設定する必要があります。詳細については、AWS Fargate 用 Amazon Elastic Container Service ユーザーガイドの「Fargate タスクネットワーキング」を参照してください。-
[Cluster VPC (クラスター VPC)] で、EC2 起動タイプを選択した場合は、コンテナインスタンスが存在する VPC を選択します。Fargate 起動タイプを選択した場合は、Fargate タスクが使用する VPC を選択します。専有ハードウェアテナンシーは Fargate タスクではサポートされていないため、選択した VPC で専有ハードウェアテナンシーが必須に設定されていないことを確認してください。
-
[サブネット] では、スケジュールされたタスクの配置に利用できるサブネットを選択します。
重要 awsvpc
ネットワークモードではプライベートサブネットだけがサポートされます。タスクはパブリック IP アドレスを受け取らないため、アウトバウンドのインターネットアクセスには NAT ゲートウェイが必要です。またインバウンドのインターネットトラフィックは、ロードバランサーを経由させる必要があります。 -
[セキュリティグループ] にスケジュールされたタスク用のセキュリティグループが作成され、インターネットからの HTTP トラフィックが許可されるようになります (
0.0.0.0/0
)。このセキュリティグループの名前やルールを編集する場合や、既存のセキュリティグループを選択する場合は、[Edit] を選択してセキュリティグループ設定に変更を加えます。 -
[自動割り当てパブリック IP] で、タスクがパブリック IP アドレスを受け取るかどうかを選択します。Fargate タスクを使用している場合、タスクの Elastic Network Interface に、インターネットへのルートを持つか、またはリクエストをインターネットにルーティングできる NAT ゲートウェイを持つパブリック IP アドレスが割り当てられている必要があります。そうすることにより、タスクでコンテナイメージをプルできるようになります。
-
-
[CloudWatch Events IAM role for this target (このターゲットの CloudWatch イベントの IAM ロール)] で、すでに作成した CloudWatch イベント サービスロール (
ecsEventsRole
) を選択します。または、[Create new role (新しいロールの作成)] を選択して、CloudWatch イベント がお客様に代わって Amazon ECS を呼び出してタスクを実行するために必要な IAM ロールを作成します。詳細については、「Amazon ECS CloudWatch イベント IAM ロール」を参照してください。重要 スケジュールされたタスクでタスク実行ロールやタスクロールを使用する必要があるか、タスクロール上書きを使用している場合は、タスク実行ロール、タスクロール、またはタスクロール上書き用の
iam:PassRole
アクセス許可を CloudWatch IAM ロールに追加する必要があります。詳細については、「Amazon ECS CloudWatch イベント IAM ロール」を参照してください。 -
(オプション) [Container overrides] セクションで、個々のコンテナを展開し、タスク定義で定義されているそのコンテナのコマンド/環境変数を上書きできます。
-
-
(オプション) 追加のターゲット (このルールの適用時に実行する他のタスク) を追加するには、[Add targets] を選択し、追加のターゲットごとに前のサブステップを繰り返します。
-
[作成] を選択します。
スケジュールされたタスクを編集するには
-
Amazon ECS コンソール (https://console.aws.amazon.com/ecs
) を開きます。 -
スケジュールされたタスクを編集するクラスターを選択します。
-
[Cluster:
cluster-name
] ページで、[Scheduled Tasks] を選択します。 -
編集するスケジュールルールの左側にあるボックスを選択してから、[Edit] を選択します。
-
更新するフィールドを編集し、[Update] を選択します。