AWSでLinuxのちょっとしたサーバが必要なときAmazon Linux2023のインスタンスを立てていますが意外とCLIだけだと不便で、GUI環境がほしいなぁーと思っていたらいつの間にかGUIアクセスできるようになっていました。今回はAmazon Linux2023のGUI環境設定を記事にします。
前提条件
- 設定は自己責任でお願いします。本番運用する場合はセキュリティ設定はしっかりしましょう。
- EC2側へインストールするGUI機能はAmazonDCVを利用します。
- 設定するインスタンスはAmazonLinux2023で、インスタンスタイプはt3a.largeです。
Amazon DCVはEC2での利用は無料ですが、オンプレサーバにインストールするにはライセンス費用がいります
- GUIアクセスはクライアントPCのWebブラウザーアクセス(HTTPS)です。VNCビュアーアプリなどのクライアントPCへのインストールはしません。
Amazon DCVについて
https://aws.amazon.com/jp/hpc/dcv/
Amazon DCV は、高性能なリモート ディスプレイ プロトコルであり、さまざまなネットワーク コンディション下でも、あらゆるクラウドまたはデータ センターからあらゆるデバイスにリモート デスクトップやアプリケーション ストリーミングを安全に配信できます。Amazon DCV と Amazon EC2 を使用することで、グラフィックを多用するアプリケーションを EC2 インスタンス上でリモートで実行し、ユーザー インターフェイスをよりシンプルなクライアント マシンにストリーミングできるため、高価な専用ワークステーションは不要になります。
設定の流れ
①EC2のデプロイ
クライアントPCからアクセスできるVPCにEC2(AmazonLinux2023)をデプロイしましょう。セキュリティーグループで、ポート番号8443を透過できるように設定しましょう。その他は一般的な手順でOKです。他に丁寧な解説記事があるので本記事では割愛します。
②EC2環境設定(任意)
SSHでEC2へ接続後に環境設定していきます。この作業は必須ではないので実施するかはお好みで。
#OSの最新版へのバージョンアップ
dnf -y update
#日本語に設定変更
localectl set-locale LANG=ja_JP.UTF-8
#タイムゾーンを日本時間に変更
timedatectl set-timezone Asia/Tokyo
#ホスト名の変更
hostnamectl set-hostname "任意のホスト名"
#設定反映のため再起動
reboot
③IAMロールの作成とアタッチ
Amazon DCVを利用するためのライセンス認証をする必要があり、そのための情報がS3バケットにあります。S3バケット内容を読み込みできるようにIMAロールを作成し、EC2にアタッチする必要があります。
https://docs.aws.amazon.com/dcv/latest/adminguide/setting-up-license.html#setting-up-license-ec2
上記サイトに以下文言あり(日本語訳)
Amazon DCVサーバーをEC2インスタンス(AWS OutpostsおよびAWSローカルゾーンで実行されているインスタンスを含む)にインストールして使用する場合、ライセンスサーバーは必要ありません。Amazon DCVサーバーは、Amazon EC2インスタンス上で実行されていることを自動的に検出し、定期的にS3バケットに接続して有効なライセンスが利用可能かどうかを確認します。
まずは許可ポリシーに「S3ReadOnlyAccess」を入れたIAMロールを作成します。

その後、該当EC2を選択した上で「アクション」-「セキュリティ」-「IAMロールを変更」で先ほど作成したIAMロールをアタッチしましょう。

④EC2の設定
SSHでEC2に接続し、Amazon DCVのインストールと設定を行います。
#GNOMEデスクトップ環境など、GUI表示に必要な一連のパッケージ群をまとめてインストールします
sudo dnf groupinstall "Desktop" -y
#DCVが現在の仕様でX11ベースのデスクトップ共有を最適にサポートしているため、画面表示プロトコルである「Wayland」を無効にし、従来の「X11」を使用するように設定します
sudo sed -i '/^\[daemon\]/a WaylandEnable=false' /etc/gdm/custom.conf
#OS起動時のモードを「グラフィカルモード」に変更します
sudo systemctl set-default graphical.target
cd /tmp
#NDCVのパッケージを公式サイトから取得
sudo rpm --import https://d1uj6qtbmh3dt5.cloudfront.net/NICE-GPG-KEY
#Amazon Linux 2023専用のインストーラ(tar.gz形式)をダウンロードし、解凍します。$(arch) を使うことで、x86_64 か ARM64 かを自動判別します。
curl -L -O https://d1uj6qtbmh3dt5.cloudfront.net/nice-dcv-amzn2023-$(arch).tgz
tar -xvzf nice-dcv-amzn2023-$(arch).tgz && cd nice-dcv-*-amzn2023-$(arch)
#中核機能。画面の転送やセッション管理を行うDCVのメインサーバーソフトのインストール
sudo dnf install -y ./nice-dcv-server-*.rpm
#Webブラウザ接続用。専用アプリを使わず、ChromeやFirefoxから接続するための機能の
インストール
sudo dnf install -y ./nice-dcv-web-viewer-*.rpm
#仮想セッション用。物理ディスプレイがないクラウド環境で、仮想のデスクトップ画面を作成するために必要
sudo dnf install -y ./nice-xdcv-*.rpm
#サービスの自動起動設定
sudo systemctl enable dcvserver
#コンソールセッション XDummyドライバの設定
sudo dnf install -y xorg-x11-drv-dummy
sudo tee /etc/X11/xorg.conf > /dev/null << EOF
Section "Device"
Identifier "DummyDevice"
Driver "dummy"
Option "UseEDID" "false"
VideoRam 512000
EndSection
Section "Monitor"
Identifier "DummyMonitor"
HorizSync 5.0 - 1000.0
VertRefresh 5.0 - 200.0
Option "ReducedBlanking"
EndSection
Section "Screen"
Identifier "DummyScreen"
Device "DummyDevice"
Monitor "DummyMonitor"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Virtual 4096 2160
EndSubSection
EndSection
EOF
if [ -f /usr/bin/nvidia-xconfig ]; then
sudo /usr/bin/nvidia-xconfig --preserve-busid --enable-all-gpus
sudo dnf install -y vulkan-tools glx-utils
fi
#DCVサーバーの設定
sudo sed -i "/^\[session-management\/automatic-console-session/a owner=\"ec2-user\"\nstorage-root=\"%home%\"" /etc/dcv/dcv.conf
sudo sed -i "s/^#create-session/create-session/g" /etc/dcv/dcv.conf
sudo dnf install -y cups
sudo usermod -a -G sys dcv
sudo systemctl enable --now cups
ここまで設定したらあとはサーバを再起動します。
再起動完了後に証明書認証方式のままだとec2-userでGUIログインできないのでアカウント:ec2-userにログインするためのパスワードを設定します。
sudo passwd ec2-user
⑤実際にGUIアクセス
それでは実施にGUIアクセスできるか確認してみましょう。
https://{EC2のグローバルIP}:8443にクライアントPCからアクセスします。
こんな感じでログイン情報を入力する画面が表示されますので、Usernameにec2-user、Passwordに先ほど設定したec2-userのパスワードを入力します。
以下のように再度入力を求められる場合がありますが同じようにパスワード入力を行います。

参考にしたサイト


