
Session Managerを使ってEC2上のIsaac Simにブラウザから接続してみた
はじめに
NVIDIA Isaac SimをAWS上で動かす際、公式ドキュメントではAmazon DCVやWebRTCストリーミングクライアントでの接続方法が案内されています。
ただ、公式ドキュメントの方法だとSSHキーが必須になるため、もう少しAWSの仕組みに寄せてSSHキーを使わずにIsaac Simを手元のChromeのブラウザ上で操作できないかな〜と思い、試してみました。
この記事では、AWS Systems Manager Session Managerのポートフォワーディング機能を使って、ブラウザ上からIsaac Simを操作する手順を紹介します。
EC2の起動
まずはEC2を準備します。
公式ドキュメントの手順をベースに進めますが、今回はSession Manager経由で接続するため、SSHキーペアやセキュリティグループの設定は公式手順と異なります。
IAMロール
事前準備としてSession Managerで接続するために、EC2にアタッチするIAMロールを作成しておきます。
ポリシーには最低限 AmazonSSMManagedInstanceCore の権限を付与しておきます。
その他にSession ManagerでEC2に接続する際、場合によっては必要となるリソースについては以下の記事が参考になります。
EC2インスタンス作成
それではEC2インスタンスを作成します。
AMIはNVIDIAから提供されているIsaac Simが含まれたAMIを選択します。
EC2作成時に「アプリケーションおよび OS イメージ(Amazon マシンイメージ)」の項目で「その他の AMIを閲覧する」を選択します。
AWS Marketplaceで「isaac sim」と検索して、「NVIDIA Isaac Sim™ Development Workstation (Linux)」を選択してサブスクリプションします。

サブスクリプションするとAMIが適用されます。
インスタンスタイプは公式ドキュメントではg6e.2xlargeのみサポートされている。と書かれていますが、AMIを選択するとg6e.4xlargeがベンダー推奨と書かれています。
結局どちらが正解かよく分かりませんが今回は検証目的なのでインスタンスタイプはg6e.xlargeで試しています。
Isaac Simのシステム要件的にはg6e.xlargeのスペックでも問題なさそうです。
アカウントによってはデフォルトでg系インスタンスのクォータが0の場合があり、インスタンス作成時にエラーが出ます。
その場合はService QuotasからRunning On-Demand G and VT instances のクォータを引き上げましょう。

公式ドキュメントではSSH(22)やAmazon DCV(8443)のインバウンドポートを開放する手順になっていますが、今回はSession Manager経由で接続するため不要です。
Session Managerを利用するために、
- キーペア: なし
- セキュリティグループ: アウトバウンドHTTPS(443)のみ許可(インバウンドルールなし)
- IAM インスタンスプロファイル: 事前に作成したIAMロール
を設定します。
また、今回はパブリックサブネットでパブリックIPを割り当てた状態で起動します。
設定が完了したらEC2を起動します。
インスタンスの状態が Running になるまで少し時間がかかるので気長に待ちましょう。
Isaac Simのセットアップ
EC2インスタンスが起動したら、Isaac Simのセットアップを行います。
Isaac Sim ウォームアップとパスワードの設定
まずは手元の環境からSession Manager経由でEC2に接続します。
接続には最低限 AWS CLI と Session Manager プラグイン が必要です。
AWS CLIでSession Managerを利用する方法は以下のブログが参考になります。
それではEC2に接続します。
aws ssm start-session \
--target <インスタンスID> \
--region ap-northeast-1
接続できたらユーザーをubuntuに切り替えてIsaac Simのウォームアップスクリプトを実行します。
sudo su - ubuntu
sudo chown -R ubuntu:root /opt/IsaacSim
cd ~/IsaacSim
./warmup.sh
私が実行した際は ./warmup.sh が完了するまでに10~15分ほどかかりました。
次のような出力になれば完了です。
[9.689s] app ready
Shader cache is warmed up.
ウォームアップが完了したら、後の手順でAmazon DCVに接続できるように、ユーザー(ubuntu)のパスワードを設定します。
sudo passwd ubuntu
完了したら、一度セッションを切断します。
ブラウザ上でEC2に接続
ポートフォワーディング
それではSession Managerのポートフォワーディングを使って、EC2上のAmazon DCVのポート(8443)をローカルの8443にトンネルします。
aws ssm start-session \
--target <インスタンスID> \
--document-name AWS-StartPortForwardingSession \
--parameters '{"portNumber":["8443"],"localPortNumber":["8443"]}'
以下のように表示されれば準備完了です。
Port 8443 opened for sessionId ....
Waiting for connections...
このセッションはポートフォワーディング用に開いたままにしておきます。
ブラウザからAmazon DCVにログイン
自身のブラウザで以下のURLにアクセスします。
https://localhost:8443
証明書の警告が表示されるので、詳細情報から接続します。

DCVのログイン画面が表示されたら、ユーザー名ubuntuと設定したパスワードでログインします。

ログインするとさらにUbuntuのログイン画面が表示されるので同じパスワードでログインします。

Isaac Simの起動
Ubuntuのリモートデスクトップが表示されたら、Ubuntuのターミナルを開いて以下のコマンドでIsaac Simを起動します。
cd /opt/IsaacSim
./isaac-sim.sh

少し待つとapp readyと表示され、Isaac SimのGUIが表示されます。

これで自身のブラウザ上からIsaac Simを操作できる環境が整いました。
重要なのは、Isaac Simの起動をSession Managerのシェルからではなく、Ubuntuのデスクトップ上のターミナルから実行することです。
Session Managerのシェルから起動したところ、DCVのデスクトップセッションに表示されませんでした。
まとめ
今回はNVIDIAのIsaac SimをEC2上で起動して、手元のクライアント端末からSession Manager経由でブラウザに表示する流れをやってみました。
技術的にはSession Managerのポートフォワーディング機能を使っているだけなので、そんなに難しくありません。
Isaac SimをEC2上で動かしているけど、SSHキーを管理したくないな〜という方はこの方法を試してみてください。






