Fargate で ECS タスクを起動するためには、launchType で "FARGATE"、ネットワーク設定で awsvpc として、サブネット、セキュリティグループ等を設定する必要があります。 これらのことが、CloudWatch Event の Rule でまだ設定することができないようです。
そのため、以下のような Lambda Function を作成して、Lambda で タスクを起動するようにしてみました。
import boto3 def lambda_handler(event, context): client = boto3.client('ecs') response = client.run_task( cluster = '${ClusterArn}', taskDefinition = '${TaskArn}', count = 1, launchType = 'FARGATE', networkConfiguration = { 'awsvpcConfiguration': { 'subnets': [ '${Subnet1}', '${Subnet2}' ], 'securityGroups': [ '${SecurityGroup}' ], 'assignPublicIp': 'ENABLED' } } ) print(response) return 'Success'
run_task の cluster には、ECS Cluster の Arn を、taskDefinition には TaskDefinition の Arn が必要になります。 また、サブネット名、セキュリティグループ名も必要です。これらを、CloudFormation のテンプレートで、Export された値を ImportValue してデプロイするように、プロジェクトを作成してみました。