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

タスクの実行

特定の状況では、タスクを手動で実行するのが最適です。たとえば、タスクを開発しているが、このタスクをサービススケジューラーでデプロイする準備はできていないとします。このタスクは 1 回限りまたは定期的なバッチジョブであり、実行させ続けたり、終了後に再起動する意味はないとします。

指定数のタスクを実行させ続けたり、ロードバランサーの配下にタスクを配置するには、Amazon ECS サービススケジューラーを使用します。詳細については、「サービス」を参照してください。

Fargate 起動タイプを使用してタスクを実行するには

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

  2. ナビゲーションペインで、[Task Definitions] を選択し、実行するタスク定義を選択します。

    • ここに表示されたタスク定義の最新のリビジョンを実行するには、実行するタスク定義の左側にあるチェックボックスを選択します。

    • ここに表示されたタスク定義の以前のリビジョンを実行するには、タスク定義を選択してすべてのアクティブなリビジョンを表示し、実行するリビジョンを選択します。

  3. [Actions]、[Run Task] を選択します。

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

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

  6. [Cluster] で、使用するクラスターを選択します。[Number of tasks] に、このタスク定義で起動するタスクの数を入力します。[Task Group] に、タスクグループの名前を入力します。

  7. [クラスター VPC] で、タスクが使用する VPC を選択します。選択した VPC で専有ハードウェアテナンシーが必須に設定されていないことを確認してください。これは Fargate タスクではサポートされていません。

  8. [Subnets] では、タスクで利用できるサブネットを選択します。

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

  10. Fargate タスクにアタッチされた Elastic Network Interface にパブリック IP アドレスを割り当てる場合は、[自動割り当てパブリック IP] で [有効] を選択します。イメージのプルなどのアウトバウンドネットワークアクセスがタスクで必要な場合は必須です。アウトバウンドネットワークアクセスが必要ない場合は [無効] を選択します。

  11. (オプション) コマンドまたは環境変数のオーバーライドをタスク定義の 1 つ以上のコンテナに送信したり、IAM ロールタスクオーバーライドを指定するには、[Advanced Options] を選択して次のステップを実行します。

    1. [Task Role Override] で、AWS API を呼び出すためのアクセス権限をタスクのコンテナに付与する IAM ロールを選択します。詳細については、「タスク用の IAM ロール」を参照してください。

      ここには、[Amazon EC2 Container Service Task Role] 信頼関係があるロールのみが表示されます。タスク用の IAM ロールを作成する方法の詳細については、「タスク用の IAM ロールとポリシーの作成」を参照してください。

    2. [Task Execution Role Override] で、AWS API を呼び出すためのアクセス権限をタスクのコンテナに付与する IAM ロールを選択します。詳細については、「タスク用の IAM ロール」を参照してください。

      ここには、[Amazon EC2 Container Service タスク実行ロール] 信頼関係があるロールのみが表示されます。タスク用の IAM ロールを作成する方法の詳細については、「タスク用の IAM ロールとポリシーの作成」を参照してください。

    3. [Container Overrides] で、コマンドまたは環境変数のオーバーライドを送信するコンテナを選択します。

      • コマンドのオーバーライドの場合: [Command override] に、送信するコマンドオーバーライドを入力します。コンテナ定義で ENTRYPOINT が指定されていない場合は、引用符のない文字列のコンマ区切りリストである必要があります。(例:

        /bin/sh,-c,echo,$DATE

        例: コンテナ定義で ENTRYPOINT が指定されている場合 (sh,-c など)、形式は引用符のない文字列である必要があります。これは二重引用符で囲まれ、引数として ENTRYPOINT コマンドに渡されます。(例:

        while true; do echo $DATE > /var/www/html/index.html; sleep 1; done
      • 環境変数オーバーライドの場合: [Add Environment Variable] を選択します。[Key] に、環境変数の名前を入力します。[Value] に、環境値の文字列値を入力します (引用符で囲まない)。

         環境変数の上書き

        この環境変数の上書きはコンテナに次のように送信されます。

        MY_ENV_VAR="This variable contains a string."
  12. タスク情報を確認し、[Run Task] を選択します。

    注記

    タスクが PENDING から STOPPED に移行した場合、または PENDING ステータスが表示された後、リストされているタスクから消えた場合、エラーで停止した可能性があります。詳細については、トラブルシューティングセクションの「停止されたタスクでのエラーの確認」を参照してください。

EC2 起動タイプを使用してタスクを実行するには

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

  2. ナビゲーションペインで、[Task Definitions] を選択し、実行するタスク定義を選択します。

    • ここに表示されたタスク定義の最新のリビジョンを実行するには、実行するタスク定義の左側にあるチェックボックスを選択します。

    • ここに表示されたタスク定義の以前のリビジョンを実行するには、タスク定義を選択してすべてのアクティブなリビジョンを表示し、実行するリビジョンを選択します。

  3. [Actions]、[Run Task] を選択します。

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

  5. [Cluster] で、使用するクラスターを選択します。[Number of tasks] に、このタスク定義で起動するタスクの数を入力します。[Task Group] に、タスクグループの名前を入力します。

  6. タスク定義で awsvpc ネットワークモードを使用している場合、以下のサブステップを実行します。それ以外の場合は、次の手順に進んでください。

    1. [Cluster VPC] では、コンテナインスタンスが存在する VPC を選択します。

    2. [Subnets] では、タスクで利用できるサブネットを選択します。

      重要

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

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

  7. (オプション) [Task Placement] で、タスク配置戦略と制約を使用してタスクをどのように配置するかを指定できます。次のオプションから選択します。

    • [AZ Balanced Spread] - アベイラビリティーゾーン間およびアベイラビリティーゾーン内のコンテナインスタンス間でタスクを分散します。

    • [AZ Balanced BinPack] - 利用可能な最小メモリでアベイラビリティーゾーン間およびコンテナインスタンス間でタスクを分散します。

    • [BinPack] - CPU またはメモリの最小利用可能量に基づいてタスクを配置します。

    • [One Task Per Instance] - 各コンテナインスタンスのサービスから最大 1 タスクを配置します。

    • [Custom] - 独自のタスク配置戦略を定義します。設定ドキュメントの例については、「Amazon ECS タスクの配置」を参照してください。

    詳細については、「Amazon ECS タスクの配置」を参照してください。

  8. (オプション) コマンドまたは環境変数のオーバーライドをタスク定義の 1 つ以上のコンテナに送信したり、IAM ロールタスクオーバーライドを指定するには、[Advanced Options] を選択して次のステップを実行します。

    1. [Task Role Override] で、AWS API を呼び出すためのアクセス権限をタスクのコンテナに付与する IAM ロールを選択します。詳細については、「タスク用の IAM ロール」を参照してください。

      ここには、[Amazon EC2 Container Service Task Role] 信頼関係があるロールのみが表示されます。タスク用の IAM ロールを作成する方法の詳細については、「タスク用の IAM ロールとポリシーの作成」を参照してください。

    2. [Task Execution Role Override] で、AWS API を呼び出すためのアクセス権限をタスクのコンテナに付与する IAM ロールを選択します。詳細については、「タスク用の IAM ロール」を参照してください。

      ここには、[Amazon EC2 Container Service タスク実行ロール] 信頼関係があるロールのみが表示されます。タスク用の IAM ロールを作成する方法の詳細については、「タスク用の IAM ロールとポリシーの作成」を参照してください。

    3. [Container Overrides] で、コマンドまたは環境変数のオーバーライドを送信するコンテナを選択します。

      • コマンドのオーバーライドの場合: [Command override] に、送信するコマンドオーバーライドを入力します。コンテナ定義で ENTRYPOINT が指定されていない場合は、引用符のない文字列のコンマ区切りリストである必要があります。(例:

        /bin/sh,-c,echo,$DATE

        例: コンテナ定義で ENTRYPOINT が指定されている場合 (sh,-c など)、形式は引用符のない文字列である必要があります。これは二重引用符で囲まれ、引数として ENTRYPOINT コマンドに渡されます。(例:

        while true; do echo $DATE > /var/www/html/index.html; sleep 1; done
      • 環境変数オーバーライドの場合: [Add Environment Variable] を選択します。[Key] に、環境変数の名前を入力します。[Value] に、環境値の文字列値を入力します (引用符で囲まない)。

         環境変数の上書き

        この環境変数の上書きはコンテナに次のように送信されます。

        MY_ENV_VAR="This variable contains a string."
  9. タスク情報を確認し、[Run Task] を選択します。

    注記

    タスクが PENDING から STOPPED に移行した場合、または PENDING ステータスが表示された後、リストされているタスクから消えた場合、エラーで停止した可能性があります。詳細については、トラブルシューティングセクションの「停止されたタスクでのエラーの確認」を参照してください。