キャパシティー予約を使用した EC2 インスタンスの起動が失敗した場合に確認するべきこと

まずはキャパシティー予約の AZ やプラットフォームの選択、インスタンスの利用資格に問題がないかをご確認ください。特に問題が見られない場合は AWS 基盤側の問題によって起動に失敗している可能性があります。
2024.01.20

困っていた内容

キャパシティー予約をしているのにも関わらず、EC2 インスタンスの起動に失敗します。キャパシティー予約を使用した EC2 インスタンスの起動に失敗する理由や対応方法を教えてください。

確認すべきポイント

① アベイラビリティーゾーン (AZ) が適切か

キャパシティー予約の際に選択した AZ が、キャパシティー適用させたい EC2 インスタンスの AZ と一致しているかどうかを確認してください。

以下の例では us-west-2a でキャパシティーの予約を行ったため、us-west-2b など異なる AZ で EC2 インスタンスが起動されている場合はキャパシティーが適用されません。

キャパシティ予約のAZ

② プラットフォームが適切か

キャパシティー予約の際に選択したプラットフォームが、キャパシティー適用させたい EC2 インスタンスのプラットフォームと一致しているかどうかを確認してください。

今回は Linux/UNIXでキャパシティーの予約を行っているので、Windows などの異なるプラットフォームで EC2 インスタンスが起動されている場合はキャパシティーが適用されません。

キャパシティ予約のプラットフォーム

EC2 インスタンスのキャパシティー予約の際にサポートされているプラットフォームについては以下のドキュメントをご参照ください。

③ インスタンスの利用資格が適切か

キャパシティー予約の際に選択したインスタンスの利用資格について、適切に選択が行われているかどうかを確認してください。

キャパシティー予約でインスタンスの利用資格はデフォルトでは Open が選択されます。Open が選択されている場合、キャパシティーの予約時に設定した属性と一致する EC2 インスタンスが起動されると自動的にキャパシティー予約が使用されます。

そのため、キャパシティー予約を割り当てたい EC2 インスタンスとは別の EC2 インスタンスを起動した際にキャパシティーの予約が割り当てられている可能性があります。

キャパシティ予約のインスタンスの利用資格

インスタンスの利用資格でtargetedを選択された場合は、キャパシティーの予約を手動で EC2 インスタンスに割り当てる必要があります。詳細はドキュメントまたは以下の弊社ブログをご参照ください。

AWS の基盤側の問題の可能性も

キャパシティ予約の設定や利用可能数に問題がないにも関わらず、以下のReservationCapacityExceededエラーとともにインスタンスの起動に失敗することがあります。

The requested reservation does not have sufficient compatible and available capacity for this request.

その場合、StartInstances API 自体は正常に処理されてキャパシティ予約が使用されたものの、AWS 基盤側の問題(Server.InternalError)によって API リクエストを受け付けた後にインスタンスの起動に失敗していることが考えられます。

この場合の対応策としましては、一定時間を置いた上でリトライ処理を実施いただくことで、解放されたキャパシティ予約を使用したインスタンスの起動を行うこととなります。

関連資料