QUESTION

データ分析チームは、起動テンプレートを使用して、夜間のバッチ処理用の Amazon EC2 オンデマンドインスタンスを起動しています。起動テンプレートでは、インスタンスタイプと、1 つのアベイラビリティーゾーン (AZ) にあるサブネットを指定しています。ある夜、インスタンスが起動せず、InsufficientInstanceCapacity というエラーが発生しました。 CloudOps エンジニアはどのようにしてこの問題を解決できますか。

1 / 1
回答を選択してください
正解A

解説

InsufficientInstanceCapacity で起動に失敗した EC2 インスタンスを起動できるようにする

  • 1「1 つのアベイラビリティーゾーン (AZ) にあるサブネット」起動する AZ とインスタンスタイプは、起動テンプレートで 1 つに固定されています。
  • 2「InsufficientInstanceCapacity というエラーが発生しました」AWS 側のオンデマンドキャパシティの不足を示すエラーです。アカウントのクォータの超過とは、原因も対処も異なります。
A正解

起動テンプレートのインスタンスタイプを、同等の性能を持つ別のインスタンスタイプに変更して、再度起動する。

InsufficientInstanceCapacity は、リクエストを満たすだけのオンデマンドキャパシティが AWS 側に現在ないことを示すエラーです。公式の対処は、数分待って再試行する、台数を減らしてリクエストを分ける、AZ を指定せずにリクエストする、別のインスタンスタイプでリクエストする、の 4 つです。

インスタンスタイプを変えると、同じ AZ でも空きのあるキャパシティから起動できます。

B不正解

Service Quotas で、実行中のオンデマンドインスタンスのクォータの引き上げをリクエストし、承認後に再度起動する。

Service Quotas での引き上げは、アカウントの上限に対する対処です。

InsufficientInstanceCapacity は、アカウントの上限ではなく AWS 側のキャパシティの不足を示します。クォータを引き上げても、その AZ のそのインスタンスタイプの空きは増えないので、同じエラーが発生します。

C不正解

同じ AZ に新しいサブネットを作成する。起動テンプレートでそのサブネットを指定して、再度起動する。

サブネットを増やすのは、サブネットの IP アドレスが足りないときに有効な操作です。

InsufficientInstanceCapacity は、IP アドレスではなくオンデマンドキャパシティの不足です。新しいサブネットも同じ AZ にあるので、起動する AZ とインスタンスタイプは変わらず、同じエラーが発生します。AZ の側で対処するなら、公式の対処は AZ を指定せずにリクエストすることです。

D不正解

同じ AZ とインスタンスタイプで、必要な台数分のオンデマンドキャパシティ予約を作成する。その予約を指定して、再度起動する。

オンデマンドキャパシティ予約は、特定の AZ のキャパシティを確保しておく仕組みです。空いているキャパシティを押さえるもので、キャパシティを新しく増やすわけではありません。

そのため、EC2 に十分なキャパシティがないと、予約の作成自体が失敗します。予約の作成が失敗したときに公式が挙げる対処も、後で再試行する、別の AZ にする、小さいリクエストにする、別のインスタンス属性にすることです。

ポイント

EC2 インスタンスの起動の失敗では、エラーコードが示す原因に合わせて対処します。
・InsufficientInstanceCapacity — AWS 側に、リクエストを満たすオンデマンドキャパシティが現在ありません。数分待って再試行する、台数を分ける、AZ を指定しない、別のインスタンスタイプを使う、のどれかで対処します。クォータを引き上げても解決しません。