Alternative Cloud9としてのLightsail for Research + CloudShell

## はじめに

AWS Cloud9の新規サービス利用の停止と、移行ガイドが発表されました。

https://aws.amazon.com/jp/blogs/news/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/

この移行ガイドで困る例として「Workshop, HandsOnの受講者向け環境としてのWeb IDEを、AWSアカウント内・ブラウザベースで完結させるのが難しい」というユースケースがあります。具体的にはファイル編集や、サンプルアプリのローカル起動が課題です。本ブログではその回避策の一つを紹介します。

## Alternative Cloud9

AWSネイティブでのWeb IDEとしての代替え策としては、以下の例が良さそうです。

- SageMaker Studio

https://qiita.com/minorun365/items/f5289163795d5d7b21e2

https://github.com/aws-samples/sagemaker-studio-code-editor-template

- EC2 + Coder

https://dev.classmethod.jp/articles/use-code-server-as-temporary-cloud9-alternative/

### 既存方式とその課題 

これで十分な気もしますが、個人的には以下が気になりました。

- SageMaker Studioは多機能な反面、Workshopには過剰な機能がある。
- 複雑な画面遷移があるため、構築をWorkshop内で実施する場合のハードルが若干ある。
- EC2にソフトウェアを載せる形式は、構築手順が難しい。

ということで、新しい選択肢を自分なりに考えることにしました。

## Amazon Lightsail for Research

https://aws.amazon.com/jp/blogs/news/new-amazon-lightsail-for-research-with-all-in-one-research-environments/

Lightsail for ResearchはAWSが提供するVPSサービスであるLightsailの研究者向けオールインワン環境。平たく言うと、SageMakerの機能制限版です。

Easyで程よくマネージドということで便利そうですね。ということで、こちらで環境を構築してみましょう。


### 構築手順

AWS コンソールへアクセスし、Lightsail →　Lightsail for Researchへ移動するか、以下のURLからアクセスします。

https://lfr.console.aws.amazon.com/ls/research/webapp/home/virtual-computers

以下の設定でインスタンスを建てます。

![コメント 2024-08-07 140417.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528454/f3e1ef8f-5e08-acab-0b83-89f9b468c4ba.png)

- リージョン: <任意>(東京を選ぶこともできます。)
- アプリケーション： VSCodium
- 仮想コンピュータに名前を付ける： <任意>
- プランを選択；Standard XL

作った後は、インスタンスに付いている`VSCodiumを起動`ボタンを押して、少し待つと起動します。
![コメント 2024-08-07 140512.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528454/208d99ba-d438-be6f-7c05-966954262694.png)

![コメント 2024-08-07 140850.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528454/b67ecd62-f814-3ec0-cf44-430772b7bf85.png)

## 操作方法

### 上部メニュー

エディタの左上に6つのボタンがあります。

1番左を押下すると、ファイルのアップロードやダウンロードができます。

![コメント 2024-08-07 141038.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528454/fe88f20c-78eb-5790-04f2-fcb0f1b1551e.png)

ちなみに一番右のボタンを押すと全画面表示ができます。便利ですね。


### 導入されているソフトウェア

だいたいこんな感じ。AWS CLIはv2に上げた方が良さそうで、npmは入ってない。

```bash
aws --version
aws-cli/1.22.34 Python/3.10.12 Linux/6.5.0-1014-aws botocore/1.23.34

git --version
git version 2.34.1

python3 --version
Python 3.10.12

npm --version
Command 'npm' not found, but can be installed with:
apt install npm
Please ask your administrator.
```


## AWS IAMを使いたい！

AWS IAMを使う場合ですが、このVSCodium on LightsailはAWSコンソールと別タブで開くので、既存AWSコンソールからCloudshellを使えば2タブ運用で回ります。

また、どうしてもLightsail環境からAWS APIを叩きたい場合ですが……こんな方法でテンポラリにIAMを扱うハックもあります。

https://qiita.com/moritalous/items/8a548ce1743b0b4f8b6d

ガチ開発の場合では煩わしい運用ですが、WorkshopレベルのAPIコール頻度でしたら回る気もします。

## 注意点

パッと思いつくところを上げます。

### インスタンス費用

ap-northeast-1で$1.13/Hourの費用がかかります。 あまり安くはないです。 コスト削減案としてはオレゴンなどを選ぶと1~2割下がりますが体験が悪くなるかもしれません。複数人でやる場合は2~3人で相乗りするのもいいのかな？

### 自動停止機能がない

放っておくとインスタンス費用が掛かってしまうので、利用後は手動で停止・削除しましょう。

### 接続が切れた場合

NICE DCVの仕様をまだ把握できていないのですが、サーバから接続が切られることがあります。その場合は下の画面からセッションを閉じて、再度「VSCodiumを起動」を押すと良さそうです。

![コメント 2024-08-07 143538.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528454/2f8857d0-6c12-df54-0710-cb13c73a67d2.png)


## まとめ

Alternative Cloud9としての銀の弾丸、と呼ぶには課題もありそうなのですが、「短時間利用でEasy」のWeb IDE環境を目指すなら手段の一つとして知っておくと便利そうだなと思いました。それでは！

## 謝辞

だいたい@moritalous氏記事の、この辺りにインスパイアを受けて考えました。

https://qiita.com/moritalous/items/708d56d5c10c5832d169

https://qiita.com/moritalous/items/8a548ce1743b0b4f8b6d