

# Amazon ECS スタンドアロンタスク
<a name="standalone-tasks"></a>

バッチプロセスなど、何らかの処理を実行した後に停止するアプリケーションがある場合、アプリケーションをタスクとして実行できます。タスクを 1 回実行する場合は、コンソール、AWS CLI、API または SDK を使用できます。

レートベース、cron ベース、または 1 回限りのスケジュールでアプリケーションを実行する必要がある場合は、EventBridge Scheduler を使用してスケジュールを作成できます。

## タスクワークフロー
<a name="task-workflow"></a>

Amazon ECS タスク (スタンドアロンタスクまたは Amazon ECS サービス) を起動すると、タスクが作成され、最初に `PROVISIONING` 状態に移行されます。タスクが `PROVISIONING` 状態になると、Amazon ECS はタスクを配置するためのコンピューティング能力を見つける必要があるため、タスクもコンテナも存在しません。

Amazon ECS は、起動タイプまたはキャパシティプロバイダーの設定に基づいて、タスクに適したコンピューティング性能を選択します。キャパシティプロバイダーとキャパシティプロバイダー戦略は、Fargate と EC2 の両方で使用できます。Fargate を使用すると、クラスター容量のプロビジョニング、設定、スケーリングについて心配する必要はありません。Fargate は、お客様のタスクに必要なすべてのインフラストラクチャ管理を行います。EC2 の場合、Amazon EC2 インスタンスをクラスターに登録してクラスター容量を管理するか、クラスターの自動スケーリングを使用してコンピューティングキャパシティ管理を簡素化することができます。クラスター自動スケーリングは、クラスター容量を動的にスケーリングするため、ユーザーは実行中のタスクに集中できます。Amazon ECS は、タスク定義で指定した要件 (CPU やメモリなど)、および配置の制約事項と戦略に基づいて、タスクを配置する場所を決定します。詳細については、「[Amazon ECS がタスクをコンテナインスタンスに配置する方法](task-placement.md)」を参照してください。

マネージドスケーリングが有効になっているキャパシティープロバイダーを使用すると、コンピューティングキャパシティーの不足が原因で開始できないタスクは、すぐに失敗するのではなく、`PROVISIONING` 状態に移行されます。タスクを配置する容量が決まったら、Amazon ECS は必要なアタッチメント (`awsvpc` モード内のタスク用の Elastic Network Interface (ENI) など) をプロビジョニングします。Amazon ECS コンテナエージェントを使用してコンテナイメージをプルし、コンテナを起動します。プロビジョニングが完了し、関連するコンテナが起動すると、Amazon ECS はタスクを `RUNNING` 状態に移行します。タスクの状態の詳細については、「[Amazon ECS タスクライフサイクル](task-lifecycle-explanation.md)」を参照してください。

# Amazon ECS タスクとしてのアプリケーションの実行
<a name="standalone-task-create"></a>

1 回限りのプロセス用のタスクは AWS マネジメントコンソール を使用して作成できます。

**スタンドアロンタスクを作成するには (AWS マネジメントコンソール)**

1. コンソールを[https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)で開きます。

1. Amazon ECS コンソールでは、クラスターの詳細ページまたはタスク定義リビジョンリストからスタンドアロンタスクを作成できます。選択したリソースページに応じて、次の手順を使用してスタンドアロンタスクを作成します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/standalone-task-create.html)

1. **[既存のクラスター]** で、クラスターを選択します。

   **[クラスターの作成]** を選択して、新しいクラスターでタスクを実行します。

1. クラスターのインフラストラクチャ全体にタスクを分散する方法を選択します。[**コンピューティング設定**] で、オプションを選択します。キャパシティプロバイダー戦略を使用するには、キャパシティプロバイダーをクラスターレベルで設定する必要があります。

   キャパシティプロバイダーを使用するようにクラスターを構成していない場合は、代わりに起動タイプを使用してください。

   Amazon ECS マネージドインスタンスでワークロードを実行する場合は、キャパシティプロバイダーの戦略オプションを使用する必要があります。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/standalone-task-create.html)

1. **[デプロイメント設定]** で、次の操作を行います。

   1. **[タスク定義]**に、タスク定義を入力します。
**重要**  
コンソールは、選択を検証し、選択したタスク定義ファミリーおよびリビジョンが、定義されたコンピューティング設定と互換性があることを確認します。

   1. **[Desired tasks]** (必要なタスク) で、起動するタスクの数を入力します。

   1. **[タスクグループ]**に、タスクグループの名前を入力します。

1. タスク定義で `awsvpc` ネットワークモードを使用している場合、**[Networking]** (ネットワーク) を展開します。カスタム設定を指定するには、次のステップを実行します。

   1. **VPC** の場合、使用する VPC を選択します。

   1. **[Subnets]** (サブネット) で、タスクスケジューラがタスクを配置するときに考慮する VPC 内のサブネットを 1 つ以上選択します。

   1. **[セキュリティグループ]** で、既存のセキュリティグループを選択することも、新しいセキュリティグループを作成することもできます。既存のセキュリティグループを使用するには、セキュリティグループを選択し、次のステップに進みます。新しいセキュリティグループを作成するには、[**Create a new security group (新しいセキュリティグループの作成)**] を選択します。セキュリティグループの名前、説明を指定してから、セキュリティグループのインバウンドルールを 1 つ以上追加する必要があります。

   1. **[Public IP]** (パブリック IP) では、タスクの Elastic Network Interface (ENI) にパブリック IP アドレスを自動的に割り当てるかどうかを選択します。

      AWS Fargate タスクをパブリックサブネットで実行するときに、そのタスクにパブリック IP アドレスを割り当てて、インターネットへのルートを持つようにすることができます。このフィールドを使用して EC2 タスクにパブリック IP を割り当てることはできません。詳細については、「[Fargate の Amazon ECS タスクのネットワーキングオプション](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-task-networking.html)」および「[Amazon ECS タスクにネットワークインターフェイスを割り当てる](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking-awsvpc.html)」を参照してください。

1. デプロイ時の設定と互換性のあるデータボリュームをタスクで使用する場合は、**[ボリューム]** を拡張してボリュームを設定できます。

   ボリューム名とボリュームタイプはタスク定義リビジョンの作成時に設定され、スタンドアロンタスクの実行時には変更できません。ボリューム名とタイプを更新するには、新しいタスク定義リビジョンを作成し、その新しいリビジョンを使用してタスクを実行する必要があります。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/standalone-task-create.html)

1. (オプション) デフォルト以外のタスク配置戦略を使用するには、**[Task Placement]** (タスクの配置) を展開し、以下のオプションから選択します。

    詳細については、「[Amazon ECS がタスクをコンテナインスタンスに配置する方法](task-placement.md)」を参照してください。
   + **[AZ バランススプレッド]** - アベイラビリティーゾーン間およびアベイラビリティーゾーン内のコンテナインスタンス間でタスクを分散します。
   + **[AZ Balanced BinPack]** - 利用可能な最小メモリでアベイラビリティーゾーン間およびコンテナインスタンス間でタスクを分散します。
   + **[ビンパック]** - CPU またはメモリの最小利用可能量に基づいてタスクを配置します。
   + **[ホストごとに 1 つのタスク]** - 各コンテナインスタンスのサービスから最大 1 タスクを配置します。
   + **[カスタム]** - 独自のタスク配置戦略を定義します。

   **[Custom]** (カスタム) を選択した場合、タスクを配置するアルゴリズムと、タスク配置時に考慮されるルールを定義します。
   + **[Strategy]** (方針) にとって **[Type]** (タイプ) そして **[Field]** (フィールド) で、アルゴリズムとアルゴリズムに使用するエンティティを選択します。

     最大 5 個の戦略を入力できます。
   + **[制約]** の **[タイプ]** および **[式]** で、制約のルールと属性を選択します。

     例えば、T2 インスタンスにタスクを配置する制約を設定するには、**[Expression]** (表現) で、**[attribute:ecs.instance-type =\$1 t2.\$1]** と入力します。

     最大 10 個の制約を入力できます。

1. (オプション) タスク IAM ロール、またはタスク定義で定義されているタスク実行ロールをオーバーライドするには、**[Task overrides]** (タスクのの上書き) を展開し、以下のステップを実行します。

   1. **[タスクロール]** で、このタスクの IAM ロールを選択します。詳細については、「[Amazon ECS タスクの IAM ロール](task-iam-roles.md)」を参照してください。

      `ecs-tasks.amazonaws.com`信頼関係を持つロールのみが表示されます。タスクの IAM ロールを作成する方法については、「[タスクの IAM ロールを作成する](task-iam-roles.md#create_task_iam_policy_and_role)」を参照してください。

   1. **[タスク実行ロール]** で、タスク実行ロールを選択します。詳細については、「[Amazon ECS タスク実行IAM ロール](task_execution_IAM_role.md)」を参照してください。

1. (オプション) コンテナコマンドと環境変数をオーバーライドするには、**[Container Overrides]** (コンテナの上書き) を展開し、コンテナを展開します。
   +  タスク定義コマンド以外のコンテナにコマンドを送信するには、**[コマンドの上書き]** で Docker コマンドを入力します。
   + **[Add Environment Variable]** (環境変数の追加) で、環境変数を追加します。**Key**に、環境変数の名前を入力します。**Value**(値) で、(文字列を囲む二重引用符 (`" "`) なしで) 環境値の文字列値を入力します。

     AWS は文字列を二重引用符 (" ") で囲み、次の形式で文字列をコンテナに渡します。

     ```
     MY_ENV_VAR="This variable contains a string."
     ```

1. (オプション) タスクを識別しやすくするには、**[Tags]** (タグ) セクションを展開し、タグを設定します。

   Amazon ECS で、新しく起動されたすべてのタスクに、クラスター名とタスク定義のタグで自動でタグ付けするには、**[Turn on Amazon ECS managed tags]** (Amazon ECS で管理されたタグを有効にする) を選択し、**[Task definition]** (タスク定義) を選択します。

   タグを追加または削除します。
   + [タグを追加] **[Add tag]** (タグを追加) を選択し、以下を実行します。
     + [**キー**] にはキー名を入力します。
     + [**値**] にキー値を入力します。
   + [タグの削除] タグの横にある [**タグの削除**] を選択します。

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

# Amazon EventBridge スケジューラを使用して Amazon ECS タスクをスケジュールする
<a name="tasks-scheduled-eventbridge-scheduler"></a>

EventBridge スケジューラーはサーバーレススケジューラであり、一元化されたマネージドサービスからタスクを作成、実行、管理できます。イベントバスやルールに依存しない、1 回限りの定期的なスケジューリング機能を提供します。EventBridge スケジューラは高度にカスタマイズ可能で、EventBridge のスケジュールルールよりもスケーラビリティが高く、ターゲット API 操作と AWS サービスの範囲が広がります。EventBridge スケジューラには、EventBridge スケジューラコンソールでタスクに設定できる以下のスケジュールが用意されています。
+ レートベース 
+ cron ベース

  cron ベースのスケジュールはどのタイムゾーンでも設定できます。
+ 1 回限りのスケジュール

  1 回限りのスケジュールはどのタイムゾーンでも設定できます。

Amazon ECS は Amazon EventBridge スケジューラを使用してスケジュールできます。

Amazon ECS コンソールでスケジュールされたタスクを作成できますが、現在、EventBridge Scheduler コンソールではさらに多くの機能を提供しています。

タスクをスケジュールする前に、次のステップを完了します。

1. タスクが実行されるサブネット ID とサブネットのセキュリティグループ ID を取得するには、VPC コンソールを使用します。詳細については、「[VPC のサブネット](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html)」と「*Amazon VPC ユーザーガイド*」の「[セキュリティグループを使用して AWS リソースへのトラフィックを制御する](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)」を参照してください。

1. EventBridge スケジューラの実行ロールを設定します。詳細については、「*Amazon EventBridge スケジューラユーザーガイド*」の「[実行ロールを設定する](https://docs.aws.amazon.com/scheduler/latest/UserGuide/setting-up.html#setting-up-execution-role)」を参照してください。

1. キャパシティープロバイダー戦略を使用してタスクを実行するには、キャパシティープロバイダーをクラスターに関連付ける必要があります。

**コンソールを使用して新しいスケジュールを作成するには**

1. Amazon EventBridge スケジューラコンソール ([https://console.aws.amazon.com/scheduler/home](https://console.aws.amazon.com/scheduler/home/)) を開きます。

1.  **[スケジュール]** ページで、**[スケジュールを作成]** を選択します。

1.  **[スケジュールの詳細を指定]** ページの **[スケジュールの名前と説明]** セクションで、次を実行します。

   1. **[スケジュール名]** で、スケジュールの名前を入力します。例えば、**MyTestSchedule**。

   1. (オプション) **[説明]** で、スケジュールの説明を入力します。例えば、**TestSchedule**。

   1. **[スケジュールグループ]** で、スケジュールグループを選択します。グループがない場合は、**[デフォルト]** を選択します。スケジュールグループを作成するには、**[独自のスケジュールを作成]** を選択します。

      スケジュールグループを使用して、スケジュールのグループにタグを追加します。

1. スケジュールオプションを選択します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

1. (オプション) 前のステップで **[定期的なスケジュール]** を選択した場合は、**[時間枠]** セクションで次を実行します。

   1. **[タイムゾーン]** で、タイムゾーンを選択します。

   1. **[開始日時]** で、有効な日付を `YYYY/MM/DD` 形式で入力してから、タイムスタンプを 24 時間 (`hh:mm`) 形式で指定します。

   1. **[終了日時]** で、有効な日付を `YYYY/MM/DD` 形式で入力してから、タイムスタンプを 24 時間 (`hh:mm`) 形式で指定します。

1. [**次へ**] を選択します。

1. **[ターゲットを選択]** ページで、次の操作を行います。

   1. **[すべての API]** を選択し、検索ボックスで **ECS** と入力します。

   1. **[Amazon ECS]** を選択します。

   1. 検索ボックスで **RunTask** と入力し、**[RunTask]** を選択します。

   1. **[ECS クラスター]** で、クラスターを選択します。

   1. **[ECS タスク]** で、タスクに使用するタスク定義を選択します。

   1. クラスターのインフラストラクチャ全体にタスクを分散する方法を選択します。**コンピューティングオプション** を展開し、次のいずれかのオプションを選択します    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

   1. **[サブネット]** で、タスクを実行するサブネット ID を入力します。

   1. **[セキュリティグループ]** で、サブネットのセキュリティグループ ID を入力します。

   1. (オプション) デフォルト以外のタスク配置戦略を使用するには、**[配置制約]** を展開し、制約を入力します。

       詳細については、「[Amazon ECS がタスクをコンテナインスタンスに配置する方法](task-placement.md)」を参照してください。

   1. (オプション) タスクを識別しやすくするために、**[タグ]** でタグを設定します。

      新しく起動されたすべてのタスクに対して、Amazon ECS がタスク定義タグを自動的にタグ付けするようにするには、**[Amazon ECS マネージドタグを有効にする]** を選択します。

1. [**次へ**] を選択します。

1. **[Settings]** (設定) ページで、以下の操作を行います。

   1. スケジュールをオンにするには、**[スケジュールの状態]** で **[スケジュールを有効にする]** をオンに切り替えます。

   1. スケジュールの再試行ポリシーを設定するには、**[再試行ポリシーとデッドレターキュー (DLQ)]** で次を実行します。
      + **[再試行]** を切り替えてオンにします。
      + **[イベントの最大保持時間]** で、EventBridge スケジューラが未処理のイベントを保持しなければならない最大の **[時間]** と **[分]** を入力します。
      + 最大 24 時間です。
      + **[最大再試行回数]** で、ターゲットがエラーを返した場合に EventBridge スケジューラがスケジュールを再試行する最大回数を入力します。

         再試行の最大値は 185 です。

      再試行ポリシーを使用すると、スケジュールがそのターゲットの呼び出しに失敗した場合、EventBridge スケジューラはスケジュールを再実行します。設定されている場合は、スケジュールの最大保持時間と再試行を設定する必要があります。

   1. EventBridge スケジューラが未配信のイベントを保存する場所を選択します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

   1. カスタマーマネージドキーを使用してターゲットの入力を暗号化するには、**[暗号化]** で **[暗号化設定をカスタマイズする (高度)]** を選択します。

      このオプションを選択した場合は、既存の KMS キー ARN を入力するか、**[AWS KMS key を作成]** を選択して AWS KMS コンソールに移動します。EventBridge スケジューラが保管中のデータを暗号化する方法の詳細については、「*Amazon EventBridge スケジューラユーザーガイド*」の「[保管中の暗号化](https://docs.aws.amazon.com/scheduler/latest/UserGuide/encryption-rest.html)」を参照してください。

   1. **[許可]** で、**[既存のロールを使用]** を選択してから、ロールを選択します。

      EventBridge スケジューラに新しい実行ロールを作成させるには、**[このスケジュールの新しいロールを作成]** を選択します。その後、**[ロール名]** で名前を入力します。このオプションを選択すると、EventBridge スケジューラは、テンプレート化されたターゲットに必要な許可をロールにアタッチします。

1. [**次へ**] を選択します。

1.  **[スケジュールの確認と作成]** ページで、スケジュールの詳細を確認します。各セクションで、そのステップに戻って詳細を編集するには、**[編集]** を選択します。

1. **[スケジュールを作成]** を選択します。

   **[スケジュール]** ページで、新規および既存のスケジュールのリストを表示できます。**[ステータス]** 列で、新しいスケジュールが **[有効]** になっていることを確認します。

## 次のステップ
<a name="eventbridge-scheduler-next-steps"></a>

EventBridge スケジューラコンソールまたは AWS CLI を使用し、スケジュールを管理できます。詳細については、「*Amazon EventBridge スケジューラユーザーガイド*」の「[スケジュールの管理](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-schedule.html)」を参照してください。

# Amazon ECS タスクの停止
<a name="standalone-task-stop"></a>

スタンドアロンタスクを実行し続ける必要がなくなった場合は、タスクを停止できます。Amazon ECS コンソールでは、1 つ以上のタスクを簡単に停止できます。

スタンドアロンの停止したタスクは、再起動できません。

サービスを停止したい場合は、「[コンソールを使用して Amazon ECS サービスの削除](delete-service-v2.md)」を参照してください。

**スタンドアロンタスクを停止するには (AWS マネジメントコンソール)**

1. コンソール ([https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)) を開きます。

1. ナビゲーションペインで **[Clusters]** (クラスター) を選択してください。

1. **[クラスター]** ページで、クラスターを選択してクラスターの詳細ページに移動します。

1. クラスターの詳細ページで、**[タスク]** タブを選択します。

1. **[起動タイプのフィルター]** リストを使用して、起動タイプごとにタスクをフィルターできます。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/standalone-task-stop.html)