2020年11月13日にAmazonが公開したブログでLightsail Containersの紹介がありました。 これを使ってtiryoh/ros-desktop-vncを起動してみたので紹介します。

雑に書くと、Docker Hub等に公開されているイメージをLightsailから直接起動できるというものです。
ros-desktop-vncについては以下の記事に経緯と使い方を書いているので参考にしてみてください。

このDockerfileでビルドできるイメージを使うことで、基本的なROSパッケージ以外は入っていない環境を、使い捨て感覚で簡単に起動できます。 GitHubにてDockerfileを公開していて、DockerイメージもついでにDocker HubにPushしています((tiryoh/ros-desktop-vnc, tiryoh/ros2-desktop-vnc))が、あくまでDockerfileの公開がメインです。 イメージの更新が止まっている等ありましたら、皆さん各自でビルドしてDocker HubやGitHub Container RegistryにPushして利用してみてください。
また、AWSはROSやGazeboに特化したRobomakerというサービスも展開しています。 データをきちんととっておきたいような用途ではRobomakerを使うのがよいと思います。
注意事項
料金について
AWSは無料枠もありますが、基本的には有料サービスです。
今回紹介する方法だと1時間単位での課金となりますが、フルで使うと10 USD/月かかります。
安全面について
また、今回紹介する方法はセキュリティに対する配慮はありません。 常に起動しておくような使い方は控えてください。
データについて
データはコンテナ再起動時に削除されます。
使い方
Lightsailで「コンテナサービスを作成」を選択します。

コンテナサービスの場所はどこでもよいと思います。今回は日本であるap-northeast-1を選択しました。
パワーはMicro、規模はx1を選びます。

コンテナ名はわかりやすいものをつけます。今回は「ros-desktop-vnc-melodic」としました。
イメージはDockerfileでFROMに指定するものを設定します。今回はROS Melodicを試そうと思ったのでtiryoh/ros-desktop-vnc:melodicとしました。ROS 2 Foxyであればtiryoh/ros2-desktop-vnc:foxyになると思います。
起動コマンドは/startup.shとします。
環境変数はHTTP_PASSWORDを設定します。ここで設定した文字列でVNCクライアントにアクセスします。
開くポートは80を指定します。

パブリックエンドポイントには先ほどコンテナ名につけたものを指定します。

サービス名を適当に付け、料金確認後に「コンテナサービスを作成」をクリックします。

ステータス保留中のまま数分待ちます。

ステータスが実行中になったらPublic domainのURLをクリックします。

BASIC認証のあるページが起動するのでここでユーザ名「ubuntu」とパスワードを指定します。
ここのパスワードは環境変数はHTTP_PASSWORDを設定したものです。

問題なければデスクトップが起動します。

BASIC認証が設定されてはいるものの、セキュリティに対する配慮は特にないので、使い終わったら「削除」しておきましょう。 1時間単位で請求金額が決まるので、使い終わったら即削除しておいた方が金銭的にお得です。

便利な使い方
APTパッケージをAWS内のサーバからダウンロードする
APTのパッケージリストをAWS内のサーバから取得するように変更することでAWS内のサーバからパッケージをダウンロードできるようになります。
この変更をすることでパッケージのダウンロード速度が速くなるだけでなく、コンテナ内でのapt installがAWS内の通信となり、通信量にカウントされないと思います(未確認)。
sudo sed -i -e "s#mirror://mirrors\.ubuntu\.com/mirrors\.txt#http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/#g" /etc/apt/sources.listウィンドウをリサイズする
初回に解像度の低い画面や小さいウィンドウでブラウザを開くと、以後、以下のようにデスクトップのサイズが小さい状態になります。

$URL/resizeにアクセスし、リロードするとデスクトップの解像度を変更できます((こちらのissueコメントに詳細があります。
https://github.com/fcwu/docker-ubuntu-vnc-desktop/issues/115#issuecomment-522426037))。

まとめ
AWSのLightsailでDockerイメージを直接起動できるということだったので、Ubuntu Desktop(LXDE)+VNCサーバ+Webブラウザから使用するVNCクライアント+WEBサーバ+ROS/ROS2がインストールされている、tiryoh/ros-desktop-vncを使ってみました。 このDockerfileから作れるイメージはあくまで使い捨て用途のテスト環境です。とりあえず複数のROSディストリビューションでテストしてみたいというような用途で使えるかなと思います。
関連記事
- (Updated )ROS/ROS2のGUIをWebブラウザ経由でお手軽に試せるDockerfileを公開しましたROS/ROS 2のGUIをWebブラウザ経由でお手軽に試せるDockerfileとDockerイメージを公開しています。その特徴と使用方法を紹介します。
- (Updated )osrf/rockerを使ってPC内に複数のROS distroの開発環境を整える方法Dockerを使ってGUIアプリケーションを起動するには、起動にちょっと工夫が必要だったり一筋縄では行かないことが多いです。 osrf/rockerというツールを使うと一筋縄では行かない部分を少しだけ簡単にできるので、その使い方を紹介します。
- (Updated )メモリ2GB版Jetson NanoでDocker内のROSを使うまでJetson Nano 2GB Developer Kit(メモリ2GB版Jetson Nano)でROSインストール済みのDockerイメージを用意して、コンテナ内のROSを使うまでをメモします。
- docker-composeからRVizを起動するNVIDIAのGPUが有効なLinux環境でdocker-composeからRVizを起動するための設定方法。NVIDIA_VISIBLE_DEVICESとNVIDIA_DRIVER_CAPABILITIESの環境変数設定とdocker-compose.yamlの書き方をdocker-composeバージョン別にまとめた。
- [2020年1月版] ROS2の環境構築方法この記事は2019年4月に書いた「[[2019年4月版] ROS2の環境構築方法](/archives/2150)」の改訂版です。