EC2でOffice付きWindows AMIを起動するまで

どうも、日々脱Microsoft Officeを心がけている寺内です。
しかしながら業務ではどうしてもOffice(特にエクセル)依存が多いことも確かです。

Amazon EC2ではWindows Serverを起動することができても、その上でOfficeアプリケーションを使用するにはライセンスを持ち込むしかありませんでした。
しかしついにre:Invent 2022でOffice付きWindows ServerのAMIが発表されました。

Amazon EC2 で AWS 提供のライセンスを使用して Microsoft Office Amazon マシンイメージ (AMI) の利用が可能に

これで必要なときだけOfficeアプリが使えるなと思ったのもつかの間、ライセンス管理が厳格なだけあり、このAMIを起動するには多くの準備が必要になります。
ここでは、やってみた的にOffice付きAMIを起動するまでのプロセスをご紹介いたします。

たったひとつのアプリを使うためだけなのに・・・。

AWS公式手順

基本的にはこちらの手順に従い行っていきます。

How to set up Microsoft Office on Amazon EC2 | Amazon Web Services
Amazon Web Services (AWS) recently announced the general availability of Microsoft Office, along with Remote Desktop Service Subscriber Access License (RDS SAL)...

しかしここには書ききれていない項目もありますので、順次補足しています。

手順の概要

大まかな仕組みは以下のとおりです。

Microsoft Officeのライセンス管理のために、AWS License Managerを使用します。License ManagerはAWS Managed Microsoft ADを必要とするので、Directory Serviceを使用してADサーバを作成します。License Managerと関係EC2インスタンスがADドメインを名前解決できるようにRoute 53 アウトバウンドリゾルバを使います。EC2でADサーバ管理ツールを動かしADユーザを作成し、そのユーザに対してOfficeの使用ライセンスを付与します。

手順は以下のようになります。

  1. これから作成するインスタンス群を配置するVPCおよびサブネットを作成
  2. AWS Managed Microsoft ADを作成
  3. Route 53 アウトバウンドリゾルバを作成
  4. ライセンスマネージャとAWS Managed Microsoft ADの接続
  5. AWS Managed Microsoft ADにADユーザを作成するために、ADの管理Windows Serverを作成
  6. ADユーザを作成
  7. Officeライセンスの購入
  8. Office付きWindows EC2インスタンスを作成
  9. Office付きWindows EC2インスタンスとADユーザの関連付け
  10. Office付きWindows EC2インスタンスへログオンしてOfficeアプリの利用開始

完成形の登場人物は以下のようになります。

事前準備

上記のHow to set upを実施する前に、やっておくことは以下です。

ネットワークの準備

インターネット接続可能なVPCおよびサブネットを作成します。NATゲートウェイを通じてプライベートサブネットに、この後作成するEC2インスタンスやエンドポイントを設置するのがよいでしょう。

  • VPC設定で「DNS 解決を有効化」と「DNS ホスト名を有効化」をONにしてください。
  • ライセンスマネージャは2つのAZにまたがるサブネットを必要とします。

本記事ではその手順は省略します。

AWS Systems Managerの準備

Windows ServerのEC2インスタンスを2台作成します。これらにRDPでリモートデスクトップするため、AWS Systems Managerが使えるようにIAMロールを準備してください。

ADドメイン名の決定

ライセンスを管理するためのAWS Managed Microsoft ADを作成するので、そのADで管理するドメイン名を決めておきます。

セキュリティグループ作成

以下2つのセキュリティグループを予め作成しておきます。

ライセンスマネージャ用SG

ライセンスマネージャは、VPC内のサブネットにエンドポイントを作成します。そのエンドポイントに付与するセキュリティグループを作成しておきます。

  • インバウンドの TCP1688ポートトラフィックを許可するルールとなります。

Route 53 アウトバウンドリゾルバ用SG

ライセンスマネージャのDNS問い合わせがADサーバへForwardingするようにアウトバウンドリゾルバを作成します。そのリゾルバ用のセキュリティグループを作成しておきます。

  • インバウンドのUDPとTCPの53ポートトラフィックを許可するルールとなります。

Microsoft ADの作成

ライセンスを管理するためのAWS Managed Microsoft ADを作成します。

Directory Serviceのダッシュボードで「ディレクトリをセットアップ」を押下して、ディレクトリサービスを作成します。
以降、ADドメインは ytera.directory.local というのを例示して説明していきます。

  • ディレクトリタイプ: AWS Managed Microsoft AD
  • エディション: Standard Edition
  • ディレクトリのDNS名: ytera.directory.local
  • Adminパスワード: 任意の文字列を入力ください(後で使います)
  • 事前準備で作成したVPCとサブネットを選択

ディレクトリが完成するまで20~30分くらいかかります。

DNS リゾルバ(Forwarder)の作成

ADが作成できたら、VPC内のEC2インスタンスやライセンスマネージャが名前解決をADで行えるようにします。そのために、VPC内にRoute 53でアウトバウンドリゾルバを作成し、ADが持つドメインについてはADに転送するように「アウトバウンドトラフィックのルール」を作ります。
アウトバウンドリゾルバを作成するVPCとサブネットは、Office付きEC2を作成するサブネットと同じにします。

作成手順は以下のとおりです。

Integrating your Directory Service’s DNS resolution with Amazon Route 53 Resolvers | Amazon Web Services
There are times when your client systems must resolve a Microsoft Active Directory’s Fully Qualified Domain Name (FQDN) before they can join a domain. Each VPC ...

Forwardingする対象のドメイン名は、ADに設定したドメイン名です。Forwarding先(ターゲットIP)は、作成したADサーバのIPアドレス(2つのサブネットのものそれぞれ)です。

ライセンスマネージャの設定

ライセンスマネージャにADサーバを接続します。

AWS License Managerのダッシュボードを開き、左サイドメニューから「設定」を選びます。
タブメニューの「ユーザーベースのサブスクリプション」を選択します。
すると、以下のようなメッセージが出ます。指示通りIAMロールを作成してください。

IAMロールは、以下の名称のものが作成されます。
AWSServiceRoleForAWSLicenseManagerUserSubscriptionsService
内容は、ディレクトリサービス、SSM、EC2へのアクセス権が設定されています。

ユーザベースのサブスクリプションの作成

ユーザ単位でライセンス管理をするために、AWS Managed Microsoft ADを登録します。

「設定」を押下します。

設定画面で、ディレクトリ名と管理対象製品Office Professional Plusを選択します。

この下のVPCとサブネットは、Officeライセンスを管理するEC2を起動するサブネットを指定します。これはMicrosoft Office製品のアクティベーションサーバーに到達するためにエンドポイントを作るためです。
セキュリティグループは、事前作業で作成した1688ポートを許可するセキュリティグループを指定します。このセキュリティグループはVPCに作成されるライセンスマネージャへのエンドポイントに付与されます。

この作成も10~15分ほどかかります。

トラブルシューティング

もし作成に失敗したら、CloudTrailで失敗したAPIが何かを確認してください。
イベント名とエラーメッセージが以下のものであった場合、ライセンスマネージャがライセンス管理用のADサーバに通信できていない可能性が高いです。

(略)
"eventName": "ListIdentityProviders",
(中略)
            "FailureMessage": "failure in registering identity provider",
(略)

以下を確認してください。

  • ライセンスマネージャとADの所属サブネット
  • VPC設定のDNS名前解決の有効化設定
  • Route 53 アウトバウンドリゾルバのルール設定
  • ライセンスマネージャとアウトバウンドリゾルバのセキュリティグループ内容

ADユーザの作成

AD上にOfficeライセンスを与えるADユーザIDを作成します。そのためには、上記で作成したAWS Managed Microsoft ADにドメイン参加するWindowsのEC2インスタンスを作成し、そのWindowsでADの管理者としてログオンしてADユーザを作成します。
以下の手順に従い実施していきます。

AWS Managed Microsoft AD でユーザーとグループを管理する - AWS Directory Service
AWS Managed Microsoft AD のユーザーとグループを作成し、管理を行います。

IAMロールの作成

AD管理をするWindowsインスタンスに割り当てるIAMロールを作成しておきます。
許可する権限は、SSMとDSへのアクセスの以下の2つです。

  • AmazonSSMManagedInstanceCore
  • AmazonSSMDirectoryServiceAccess

EC2インスタンスの作成

EC2を作成するときに、「高度な詳細」で「ドメイン結合ディレクトリ」を指定することで、ADにドメイン参加できます。

ドメインの参加

起動したWindowsに、そのローカルユーザのAdministratorでRDP接続をしログオンします。
「サーバマネージャ」を起動し、ホスト名の変更を行います。そのときAWS Managed Microsoft ADを作成したときのドメイン名を入力し、ドメイン参加します。

認証が求められますが、その認証はADの管理者IDとパスワードです。IDはAdmin、パスワードはADを作成したときに指定したAdminパスワードです。
成功すると、ホスト名が変更されADドメインに参加します。

ドメイン管理ツールのインストール

「サーバマネージャ」の「ロールと機能の追加」から、「Features」で以下をインストールします。

  • AD DS and AD LDS Tools
  • DNS Server Tools

ユーザの作成

いまはローカルのAdminitratorでログオンしているのでログオフし、AD管理者でログオンし直します。

AD管理者のIDは、 Netbios名\Admin です。
ADユーザ管理ツールである「Active Directory Users and Computers」を起動します。
ADディレクトリツリーのUsersに新規のADユーザを作成します。

次に、作成したユーザがリモートデスクトップで接続できる権限を与えます。
グループポリシーエディター(gpedit)で以下のツリーを開きます。

「Computer Configuration」-「Windows Settings」-「Security Settins」-「Local Polices」-「User Rights Assignment」
その「Allow log on through Remote Desktop Services」の項目のユーザ欄に、新規作成したユーザを加えます。

作成したユーザでログオンできることを確認しておきましょう。このユーザでMicrosoft Officeを使えるようにします。

製品ライセンスの購入

ライセンスマネージャでサイドメニューから「製品」を選び、「Office Professional Plus」をサブスクライブします。

Office LTSC Professional Plusのサブスクライブ

「AWS Marketplaceで表示」を押下し、

「Office LTSC Professional Plus」を「Continue to Subscribe」ボタンでLTSCライセンスに同意します。

この時点でライセンスマネージャのほうで「Office Professional Plus」がアクティブになります。

Remote Desktop Services SALのサブスクライブ

続けて「Remote Desktop Services SAL」をサブスクライブします。
ライセンスマネージャで「Remote Desktop Services SAL」を選択し、「AWS Marketplaceで表示」を押下します。
「View purchase options」を押下し、Subscribeします。

確認

これで以下2つの製品のライセンスをAWS Marketplaceで購入したことになります。ライセンスマネージャでそれぞれがアクティブになっていることを確認しましょう。

  • Office Professional Plus
  • Remote Desktop Services SAL

Office付きWindows EC2インスタンスの起動

いよいよOffice付きWindows AMIを起動します。

AMIカタログでofficeで検索すると「Office LTSC Professional Plus」が出てきます。

料金を確認します。

「AMIから起動」を選択し、VPCとサブネットをライセンスマネージャと同じところを選びEC2インスタンスを作成します。
インスタンスタイプはm4.xlarge(4vCPU,16GB)、EBSは100GBが推奨のようです。
Gravitonベースのインスタンスタイプは使用できず、Nitroベースを選択します。

ライセンスとADユーザの関連付け

ライセンスマネージャで「ユーザーの関連付け」画面を見ると、作成したEC2インスタンスが確認できます。

インスタンス設定ステータスがActiveになるのを待ち、「ユーザーをサブスクライブして関連付ける」を押下し、ADユーザIDとADドメイン名を入力します。

これでOffice付きWindowsのEC2インスタンス作成が完了です。

通常のEC2の一覧でインスタンス作成が完了したあとも、ライセンスマネージャでの「インスタンス設定ステータス」はしばらく準備中となります。EC2ができあがり、Windows Serverが起動したあと、ドメインへの自動登録やライセンスサーバへの登録を処理しているためです。
5~10分ほど「インスタンス設定ステータス」が完了になるまで待ってください。
できあがると、この新しいEC2インスタンスは(おそらくサブスクリプション情報から取得した情報で)ADドメインに参加済です。
ですのでRDP接続する際、ローカルAdminitratorでログオンする必要なく、ADドメインに作成したユーザID( Netbios名\userid )でログオンできます。

Officeアプリの利用

作成したOffice付きWindowsにRDP接続すると、以下のようにWelcomeメッセージが出ています。

エクセルを起動します。

アカウント情報からライセンスを確認すると、以下のようにLTSCが適用されていることがわかります。

発生する費用

ここまで見ていただければわかると思いますが、Office付きAMIを使用するために発生する費用は、LTSCライセンスでけではありません。少なくとも以下の費用が必要になります。

AWS Directory Service for Microsoft Active Directory (Standard Edition)
基本料(DC2つ分)
0.146USD/hour
Route 53 リゾルバーエンドポイント 0.125USD/hour
AWS Licese Managerエンドポイント 0.014USD/hour
Amazon EC2 AD管理インスタンス 起動時間
Office LTSC Professional Plus 21.43USD/user/month
Officeを動かすEC2インスタンス 0.442USD/hour

いかがだったでしょうか。実質、ライセンスマネージャの使い方がほとんどです。

Microsoftのライセンス規約を守ろうとするとこうなるので、AWSもだいぶ苦労したのではないかと思いますが、それにしても構築には非常に時間がかかりますし、企業内利用で既存ADがある場合は、AD間の信頼関係を作ったりドメイン名設計が必要になります。
またここまでやって、やっと起動完了なので、さらに日本語化などのローカライズを行います。

なかなか敷居の高いサービスですが、みなさまの参考になれば幸いです。

タイトルとURLをコピーしました