Amazon ECS のタスクにメモリを割り当てるにはどうすればよいですか ?

最終更新日: 2019 年 11 月 21 日

Amazon Elastic Container Service (Amazon ECS) を使用してタスクにメモリを割り当てるにはどうすればよいですか ?

簡単な説明

Amazon ECS では、メモリをタスクに割り当てるためにメモリを memoryReservation (ソフト制限) と メモリ (ハード制限) の 2 つのパラメータを使用します。各パラメータの値は、タスクの実行時に Amazon ECS コンテナインスタンスの使用可能なメモリユニットから減算されます。計算は、タスク定義のソフト制限またはハード制限に基づいています。詳細については、クラスター使用率を参照してください。

注 : memory および memoryReservation パラメータは、Amazon ECS タスク定義の コンテナ定義パラメータ として設定されます。コンテナレベルの メモリmemoryReservation の両方の値を指定する場合、 メモリmemoryReservation より大きい必要があります。memoryReservation を指定した場合、その値はコンテナが配置されているコンテナインスタンスの使用可能なメモリリソースから減算されます。それ以外の場合、 メモリ の値が使用されます。詳細については、メモリ をご参照ください。

解決方法

開始する前に、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを含む Amazon ECS クラスターがあることを確認します。クラスターの作成の詳細については、クラスターの作成 を参照してください。クラスターとコンテナインスタンスの設定の詳細については、コンテナインスタンスのメモリ管理 を参照してください。

コンテナインスタンスのメモリ割り当てを表示する

  1. Amazon ECS コンソールを開きます。
  2. ナビゲーションペインで、[Clusters] をクリックします。
  3. 作成したクラスターを選択します。
  4. [ECS Instances] ビューを選択し、[Container Instance] 列から、作成したクラスターに含まれているコンテナインスタンスを選択します。
    注: [Details] ペインには、[Available] 列のメモリが [Registered] 列のメモリと等しいことが示されます。
  5. インスタンスのリソース使用状況に関する統計については、SSH を使用してインスタンスに接続し、docker stats コマンドを実行します。

ソフト制限を使用してタスク定義を作成する

  1. Amazon ECS コンソールからナビゲーションペインで [Task Definitions] を選択します。
  2. [Create new Task Definition] を選択します。
  3. 起動タイプとして、[EC2]、[Next step] の順に選択します。
  4. [Task Definition Name] に名前を入力します。
  5. [Container Definitions] セクションで、[Add container] を選択します。
  6. [Container name] に名前を入力します。
  7. [Image] に、nginx または環境に適した Docker イメージを入力します。
  8. [Memory Limits (MiB)] で、 [Soft limit] を選択し、700 と入力します。
  9. [Add] を選択してから、[Create] をクリックします。

ソフト制限を使用してタスク定義を実行する

  1. [Amazon ECS コンソール] からナビゲーションペインで、[Clusters] を選択し、作成したクラスターを選択します。
  2. [Tasks] ビューを選択し、[Run new Task] を選択します。
  3. [Run test] をクリックします。
    注: [Tasl Definition] と [Cluster] には、前に作成したタスク定義とクラスターの名前が事前入力されています。
  4. ソフト制限のタスクの [Last status] 列で [RUNNING] と表示されたら、ナビゲーションペインから [Clusters] を選択します。
    注 : タスクのステータスを [RUNNING] に更新するには、ページを更新します。
  5. [ECS Instances] ビューを選択し、[Container Instance] 列からインスタンスを選択します。
    注: [Details] ペインには、[Available] 列のメモリが [Registered] 列のメモリより小さいことが示されます。
  6. インスタンスのリソース使用状況に関する統計については、SSH を使用してインスタンスに接続し、docker stats コマンドを実行します。
  7. ナビゲーションペインで、[Clusters] を選択し、クラスターを選択します。
  8. [Tasks] ビューを選択し、ソフト制限のタスクを選択して、[Stop] を選択します。
  9. [ECS Instances] ビューを選択し、[Container Instance] 列からインスタンスを選択します。
    注: [Details] ペインには、[Available] 列のメモリが [Registered] 列のメモリと等しいことが示されます。

ハード制限のあるタスク定義の新しいリビジョンを作成する

  1. Amazon ECS コンソールからナビゲーションペインで [Task Definitions] を選択します。
  2. ソフト制限を使用して作成したタスク定義を選択し、[Create new revision] を選択します。
  3. [Container Definitions] セクションの [Container Name] 列で、ソフト制限のタスク定義に追加したコンテナを選択します。
  4. [Memory Limits (MiB)] で、[Hard limit] を選択し、1000 と入力します。
  5. [Update]、[Create] の順に選択します。

変更したタスク定義をハード制限で実行する

  1. [Amazon ECS コンソール] からナビゲーションペインで、[Clusters] を選択し、作成したクラスターを選択します。
  2. [Tasks] ビューを選択し、[Run new Task] を選択します。
  3. [Task Definition] で、作成したハード制限を持つタスク定義を選択し、[Run Task] を選択します。
  4. ハード制限のある改訂されたタスクの [Last status] 列で [RUNNING] と表示されたら、ナビゲーションペインから [Clusters] を選択します。
    注 : タスクのステータスを [RUNNING] に更新するには、ページを更新します。
  5. [ECS Instances] ビューを選択し、[Container Instance] 列からインスタンスを選択します。
    注: [Details] ペインには、[Available] 列の使用可能なメモリが [Registered] 列のメモリより小さいことが示されます。
  6. インスタンスのリソース使用状況に関する統計については、SSH を使用してインスタンスに接続し、docker stats コマンドを実行します。
  7. ナビゲーションペインで、[Clusters] を選択し、クラスターを選択します。
  8. [Tasks] ビューを選択し、ハード制限のあるタスクを選択して、[Stop] を選択します。
  9. [ECS Instances] ビューを選択し、[Container Instance] 列からインスタンスを選択します。
    注: [Details] ペインには、[Available] 列のメモリが [Registered] 列のメモリと等しいことが示されます。

ソフト制限とハード制限の両方を使用してタスク定義の新しいリビジョンを作成する

  1. Amazon ECS コンソールからナビゲーションペインで [Task Definitions] を選択します。
  2. ハード制限を使用して作成したタスク定義を選択し、[Create new revision] を選択します。
  3. [Container Definitions] セクションの [Container Name] 列で、ハード制限のあるタスク定義に追加したコンテナを選択します。
  4. [Memory Limits (MiB)] で、 [Soft limit] を選択し、700 と入力します。
  5. [Add Hard limit] を選択し、 1200と入力します。
  6. [Update]、[Create] の順に選択します。

修正したタスク定義をソフト制限とハード制限の両方で実行する

  1. [Amazon ECS コンソール] からナビゲーションペインで、[Clusters] を選択し、作成したクラスターを選択します。
  2. [Tasks] ビューを選択し、[Run new Task] を選択します。
  3. [Task Definition] で、ソフト制限とハード制限の両方で作成したタスク定義を選択し、[Run Task] を選択します。
  4. タスクの [Last status] 列が [RUNNING] と表示されたら、ナビゲーションペインから [Clusters] を選択します。
    注 : タスクのステータスを [RUNNING] に更新するには、ページを更新します。
  5. ナビゲーションペインで、[Clusters] を選択し、クラスターを選択します。
  6. Tasks ビューを選択し、ソフト制限とハード制限の両方を持つタスクを選択して、 Stopを選択します。
  7. [ECS Instances] ビューを選択し、[Container Instance] 列からインスタンスを選択します。
    注: [Details] ペインには、[Available] 列のメモリが [Registered] 列のメモリより小さいことが示されます。
  8. インスタンスのリソース使用状況に関する統計については、SSH を使用してインスタンスに接続し、docker stats コマンドを実行します。