キャパシティー予約を使用した EC2 インスタンスの起動が失敗した場合に確認するべきこと
困っていた内容
キャパシティー予約をしているのにも関わらず、EC2 インスタンスの起動に失敗します。キャパシティー予約を使用した EC2 インスタンスの起動に失敗する理由や対応方法を教えてください。
確認すべきポイント
① アベイラビリティーゾーン (AZ) が適切か
キャパシティー予約の際に選択した AZ が、キャパシティー適用させたい EC2 インスタンスの AZ と一致しているかどうかを確認してください。
以下の例では us-west-2a
でキャパシティーの予約を行ったため、us-west-2b
など異なる AZ で EC2 インスタンスが起動されている場合はキャパシティーが適用されません。
② プラットフォームが適切か
キャパシティー予約の際に選択したプラットフォームが、キャパシティー適用させたい 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 リクエストを受け付けた後にインスタンスの起動に失敗していることが考えられます。
この場合の対応策としましては、一定時間を置いた上でリトライ処理を実施いただくことで、解放されたキャパシティ予約を使用したインスタンスの起動を行うこととなります。