License Managerの新機能：EC2のライセンス変換を試してみた(SQL Server)


2021/11にLicense Managerの新たな機能が追加されました。

[Amazon EC2 での Windows Server および SQL Server アプリケーションの新しいライセンスタイプの切り替え機能を AWS が発表](https://aws.amazon.com/jp/about-aws/whats-new/2021/11/aws-switch-license-windows-sql-server-ec2/)

この機能によって、EC2のBYOLライセンスをAWSのSPLAライセンスに簡単に切り替えることができます。
ということで、実際に試してみました。

# Microsoftのライセンスについて
Windows ServerやWindowsの提供するデータベースサービスであるSQL Serverを使うにはライセンスと呼ばれるソフトウェアを使用する権利が必要になってきます。
ライセンスにはWebやStandard、Enterpriseなどの種類があり、使える機能や価格が異なります。
例：[SQL Server 2019 の価格](https://www.microsoft.com/ja-jp/sql-server/sql-server-2019-pricing)
## SPLAとは？？
ライセンスをAWSのようなクラウドサービスであったり、SaaSサービス向けに提供できるようにしたのがSPLA(Microsoft Services Provider License Agreement)です。
これによって、ユーザはライセンスを意識することなくWindowsのEC2インスタンスやSQLServerのライセンスが適用されたEC2、RDSを使うことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/155309d2-2d1d-9a7f-6f7b-2c5d120d3856.png)



参考：[サービス プロバイダー様向けライセンス プログラム: SPLA](https://www.microsoft.com/ja-jp/licensing/licensing-programs/spla-program)

## BYOLとは？？
BYOL(Bring Your Own License)は、ライセンスの購入や、起動後のEC2インスタンスへのソフトウェアのインストールとライセンス適用を自分たちでやる方式のことを言います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/03abd686-5093-7795-8ef5-dfe9da53dbb4.png)


これによって自分たちで購入したライセンスを利用し、EC2インスタンスを安く利用することができたります。
ただし、Windowsライセンスは「[ライセンスモビリティ](https://aws.amazon.com/jp/windows/resources/licensemobility/)の有無」「ライセンスの購入 or 有効化のタイミング」の結果によってBYOLの可否や手法が分岐します。(多分以下のフローだと思います)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/c74a22b6-5e6f-204b-b99b-78cc6fea7248.png)




参考：[AWS と Microsoft に関するよくある質問](https://aws.amazon.com/jp/windows/faq/#need-lm)

ここら辺を無視してAWSにライセンスを持ち込んでしまうとライセンス規約違反となります。
賠償請求は発生することもあるようです。
```
ライセンス違反をした場合、ケースよって異なるものの何らかの法律に触れる可能性が高いです。
例えば著作権法違反に該当する場合、個人に対して懲役5年以下または罰金500万円以下、
黙認や放置した企業に対しては罰金3億円以下が科されてしまいます。
```
参照：[ソフトウェアのライセンス違反のリスクとは？防止策としてのライセンス管理について](https://www.hammock.jp/assetview/media/software-license-violation.html)


# やること
**SQLServer 2012 のStandard エディションのBYOLライセンスをSPLAライセンスに変換します。**

※ BYOLのStandard → SPLAのWebやEnterpriseといったエディション違いの変換は対応していないみたいです。
```
The usage operation RunInstances:0100 does not match the edition of SQL Server installed on EC2 instance i-xxxxxxxxx
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/770d0f44-e9b4-6a08-fffe-d618eb6b5533.png)


# 前提
以下の前提条件を満たしているか確認してください。
[ライセンス変換の前提条件](https://docs.aws.amazon.com/license-manager/latest/userguide/conversion-prerequisites.html)

また、AWS Systems Managerのインベントリという機能を使用します。
SSMの前提条件を満たしているか確認してください。
[Systems Manager の前提条件](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-prereqs.html)
[インベントリ収集の設定](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-inventory-configuring.html)

SQL Server 2012のStandardは自前で用意しました。
使用オペレーションの「**RunInstances:0800**」というのはWindows Server BYOLを指します。
参考：[ライセンスタイプ変換の対象となるライセンスタイプ](https://docs.aws.amazon.com/license-manager/latest/userguide/conversion-types.html)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/83e20c86-34bf-ef63-80f5-7e83953ec6b9.png)



# ライセンスの変換
## AWS Systems Manager インベントリのセットアップ
SytemManagerのコンソールから[イベントリ] → [セットアップインベントリ]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/da939657-ebff-d027-c0eb-2266392cafac.png)


対象のライセンス変換対象のインスタンスを指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/277757c5-3fe4-a3f2-f916-f79cab35e2f7.png)


※ここで対象のインスタンスが現れない場合、インスタンスに「**AmazonSSMManagedInstanceCore**」のポリシーが付与されたIAMロールがアタッチされているか確認してください。

下までスクロールし[セットアップインベントリ]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/5a2874dd-6786-17a9-fbfa-0af4c0e290b0.png)


[設定]をクリックし、ステータスが「保留中」となっていることを確認し、待機
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/229539dc-948e-ddd8-7a35-d6aa7cd81294.png)


ステータスが「成功」になりました。
これでインベントリの設定はおしまいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/cc4be730-65d0-3c03-2133-9632813dc93d.png)


ここで失敗し、下記のようなエラーが出た場合は対象インスタンスのPowershellのバージョンを確認してください。
SystemManagersのインベントリ機能はPowershell3.0以上が必要となります。
```
The operation collectSoftwareInventoryItems failed because Encountered error while executing AWS:WindowsUpdate.
```
参考：[インベントリ収集の設定](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-inventory-configuring.html)

## ライセンスタイプの変換タスク

**まず、変換対象のEC2を停止します。**
EC2を停止しないと次の「ライセンスタイプ変換タスクを作成」の際に対象のインスタンスが出現しません。


License Managerのコンソールから[ライセンスタイプ変換タスク]→[ライセンスタイプ変換タスクを作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/321f3c35-f53c-08bb-4b27-2a8d933aaad1.png)


対象のインスタンスを選択し、[次へ]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/67b24450-b818-b945-fc38-3f0002b3ce0e.png)


変換したいライセンスタイプを選択し、[次へ]をクリック。(今回はStandardへの変換なので「**RunInstances:0006**」)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/030a25f9-8317-ac9e-1ac0-9f95a2664c17.png)


設定を確認し[変換を開始]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/a356a297-19ce-a957-66f0-1747e81bea65.png)




ここで以下のエラーが発生した場合、インスタンスタイプを確認してください。
ライセンスタイプの変換は4 vCPU以上が必要となってくるため、インスタンスのサイズを上げる必要があります。
```
An instance must have a minimum of 4 vCPUs in order to run License Included SQL Server.
```
なお、停止中のインスタンスのタイプを変更するだけで大丈夫です。(一度インスタンスを起動する必要はない)

ライセンスの変換が開始されました。
(このタスクの実行中は一時的にインスタンスが起動されるようです。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2109911/dce5a653-d735-ff5c-f1cf-5033a89a7d38.png)



# さいごに
「Powershellのバージョンが古い」「IAMロールをつけ忘れる」などのトラブルに見舞われました。
本機能を利用する場面は少ないと思いますが、この記事が今後の参考になれば幸いです。
## 参考
- [Amazon EC2 での Windows Server および SQL Server アプリケーションの新しいライセンスタイプの切り替え機能を AWS が発表](https://aws.amazon.com/jp/about-aws/whats-new/2021/11/aws-switch-license-windows-sql-server-ec2/)
- [ライセンスマネージャでのライセンスタイプ変換](https://docs.aws.amazon.com/ja_jp/license-manager/latest/userguide/license-conversion.html)