インフラチームがお届けするブログリレーです!既に公開されている記事もありますので、こちらから他のメンバーの投稿もぜひチェックしてみてください!
はじめに
こんにちは、そしてこんばんは。
クラウドインテグレーション事業部の大嵩です。
今回は、業務の中でドツボにハマってしまった、AMI使用時のインスタンスタイプ制約についてご紹介します!
概要
今回要望として、Windows Server 2022 + Microsoft SQL Server 2022 Standard のAMIを使ってAmazon EC2を構築してほしいとのご依頼がありました。
その中のスペック要件として当てはまるのが、t3ファミリーとなっておりましたが、そこでドツボにはまってしまいます。。
対象のAMIについて
ご覧の通り、AMIカタログから確認できるのですが、今回は日本語化されているAMIを使いたいです。
なので、下記のようにAMIの検索ページから探したJapaneseのものを使用する前提になります。
Terraformで構築しようとしてみる
AMIも準備できたので、いざTerraformで構築!
と思いきや何やらエラーが。。。
(3台構築しようとしていました。。。)
╷ │ Error: creating EC2 Instance: operation error EC2: RunInstances, https response error StatusCode: 400, RequestID: XXXX, api error UnsupportedOperation: Microsoft SQL Server is not supported for the instance type 't3.large'. │ │ with aws_instance.hogehoge, │ on ec2.tf line 23, in resource "aws_instance" "hogehoge": │ 23: resource "aws_instance" "hogehoge" { │ ╵ ╷ │ Error: creating EC2 Instance: operation error EC2: RunInstances, https response error StatusCode: 400, RequestID: XXXX, api error UnsupportedOperation: Microsoft SQL Server is not supported for the instance type 't3.medium'. │ │ with aws_instance.fugafuga, │ on ec2.tf line 68, in resource "aws_instance" "fugafuga": │ 68: resource "aws_instance" "fugafuga" { │ ╵ ╷ │ Error: creating EC2 Instance: operation error EC2: RunInstances, https response error StatusCode: 400, RequestID: XXXX, api error UnsupportedOperation: Microsoft SQL Server is not supported for the instance type 't3.medium'. │ │ with aws_instance.ABCD, │ on ec2.tf line 113, in resource "aws_instance" "ABCD": │ 113: resource "aws_instance" "ABCD" { │ ╵
一番上のエラーメッセージを見てみましょう
api error UnsupportedOperation: Microsoft SQL Server is not supported for the instance type 't3.large'.
Microsoft SQL Server is not supported for the instance type ‘t3.large’.
Microsoft SQL Serverはインスタンスタイプ’t3.large’をサポートしていません。
えぇぇぇぇぇぇ!!!!
そんなまさか。。。サポートしていないとかある!?
そこで、t3ファミリーなどの、主に汎用系のサポートについて調べてみました。
インスタンスタイプの制約について
Pricing Calculatorを見てみる
そんなまさかが起きてしまったのですが、単純な確認方法としてPricing Calculatorを見てみます。
このAMIで使用できるインスタンスタイプしか選択できないはず。。なので、割り出してみます!
最初にサービス項目から「Amazon EC2」を選択します!
次に、オペレーティングシステムの箇所を「SQL Server Standard を使用する Windows Server」として、
t3ファミリーでソートして見てみましょう!
なんと、t3.xlargeからしかサポートしていないことがわかりましたね。。。
AWSドキュメントを調べてみる
Pricing Calculatorで調べてみましたが、次にAWSドキュメントに記載がないか探してみます。
なんと、License Managerのドキュメントに記載がありました!
ライセンス込みの SQL Server インスタンスには、少なくとも 4 つの vCPU が必要です。
上記から、構築したかったAmazon EC2のインスタンスタイプを改めて確認します。
- t3.large(vCPU : 2)
- t3.medium(vCPU : 2)
完全に対象外!!!
そりゃあエラーも出ますよね。。。
t3ファミリー以外も見てみる
vCPUが4以上ということはわかりきってますが、最新の m7i も見てみましょう!
あれ、vCPU:2のやつが紛れ込んでますね。。
調べてみたところ、AWSの表示の仕様として、「技術的に可能である」場合は選択肢として表示されるようです。
最新のインスタンスタイプであるため、vCPU:2 でも動作に問題はないために表示されていると考えられます。
ですが、構築はできるものの、vCPU:4 としてライセンスがカウントされるようです。
つまり、4 vCPUs分のコンピューティング能力を必要としない SQL Server ワークロードがある場合は、使用していない SQL Server ライセンスを支払います。
上記から、やはりvCPUが4つ以上のインスタンスタイプを選択する必要があります!
まとめ
今回は下記の流れで調査し、原因が判明しました!
- 背景: Windows Server 2022 + SQL Server 2022 Standard のAMIを t3.large や t3.medium で起動しようとした。
- 問題発生: Terraformで UnsupportedOperation: Microsoft SQL Server is not supported for the instance type ‘t3.large’. エラーが発生。
- 原因調査:
- Pricing Calculatorで確認すると、SQL Server Standard AMI は t3.xlarge (4vCPU) 以上からサポート。
- AWSドキュメント(License Manager)にも「ライセンス込みのSQL Serverインスタンスには最低4vCPUが必要」との記載を発見。
- 結論: 使用しようとしたt3.large/mediumインスタンス (2vCPU) は、SQL Server AMIの最低vCPU数要件を満たしていなかった。
- 教訓: ライセンスが関わるAMI(特にSQL Serverなど)を利用する際は、事前に インスタンスタイプのvCPU数とAMIのサポート要件をPricing CalculatorやAWSドキュメントでしっかり確認することが重要。
Windows Server + Microsoft SQL Server をAmazon EC2上で扱う場合はお気をつけださい!
この記事がどなたかの参考になりますと幸いです!