CloudShell でお手軽にシェル環境を立ち上げるぞ

記事タイトルとURLをコピーする

はじめに

こんにちは。技術4課の保田(ほだ)です。

健康診断を目前に控え、いつも家で穿いていたゆるっゆるのジャージのズボンから普通ぐらいのズボンに穿き替えたところお腹がキツキツだったのでとても焦っています。

冬本番で温かい鍋とか色々食べたいのですが、どうしたものでしょうか。 来年のために簡単に減らせる余地を作っておいたと考えると今年はもうこのままいってしまう、という解釈もあるのですがどうしてもプライドが邪魔をしてしまいます。困りましたね。

※2020/12/16 10:00 JST Python3 がインストールされていることを明記

導入

AWS re:Invent 2020 やってますね。今年はオンライン開催なので時差の影響はありますがラスベガスまでの旅費やお仕事の日程調整をする必要もありません。時差の影響といっても夜中にリアルタイムで放送されたのが翌日のお昼にもだいたい再放送されるのであんまり気になりません。海外のサッカー中継を観るときのような深夜テンションで驚愕のアップデート群に沸き立った方もさぞ多いことかと存じます。

reinvent.awsevents.com

で、昨夜は Werner Vogels さんの Keynote がありました。正直なところ Andy Jassy さん以外あまり存じ上げないのですが、いろいろ気になるアップデートが出ていましたね。

aws.amazon.com

その中で唯一私でも分かりそうなものとして CloudShell がありました。

aws.amazon.com

せっかくなので少し触ってみました。以下、このブログ記事を適宜引用しながらご紹介します。

要約

マネコンで突然シェルが開けるぞ

本題

今まで CLI の環境を立ち上げるためにはローカル端末を使うか、作業用の小さい EC2 を立ち上げるか Cloud9 で環境を立ち上げるなどしていたかと思います。

EC2 を立ち上げた場合はセッションマネージャを使えばマネジメントコンソール上でキーペアの管理やSSHのポートを開けたりすることなしに EC2 に接続することができていましたが、そうするためにはマネージドインスタンスに登録する必要もありました。

また、使い終わったら Stop ないし Terminate する必要もありました。

でもこの CloudShell を使えば EC2 がもはや関係なくなりそうです。

東京リージョンに早速来ているようですので、東京リージョンで使えます(某構文)。

Regions – CloudShell is available today in the US East (N. Virginia), US East (Ohio), US West (Oregon), Europe (Ireland), and Asia Pacific (Tokyo) Regions, with the remaining regions on the near-term roadmap.

f:id:swx-kazuma-hoda:20201216033932p:plain
マネジメントコンソールで CloudShell を検索

あとで気づきましたがメニューバーにもボタンありますね。

f:id:swx-kazuma-hoda:20201216124610p:plain
赤枠のところ

選択すると、いきなり何か出てきます。

f:id:swx-kazuma-hoda:20201216034207p:plain

冒頭にリンクを貼りました公式ブログでも言及されていますが、 AWS CLI をはじめとして Python、Node.js などが初めから使えるようです。

Runtimes – In addition to the Python and Node runtimes, Bash, PowerShell, jq, git, the ECS CLI, the SAM CLI, npm, and pip already installed and ready to use.

AWS CLI は素の EC2 で使えますのでまぁ標準装備感がありますが、 ECS CLI と SAM CLI も元からインストールされているのは "アツい" ですね。

そして 1GB のストレージがリージョンごとに利用できるらしいです。

[Close] を選択してしばらく待つとコンソールが立ち上がります。

f:id:swx-kazuma-hoda:20201216034603p:plain
おもむろに立ち上がるコンソール

シェル環境は Amazon Linux 2 がベースのようです。

実はあまり Linux のコマンドは得意ではないのでとりあえず次のコマンドを打ってみました。

[cloudshell-user@ip-10-0-99-88 ~]$ ls -la
total 28
drwxr-xr-x 3 cloudshell-user cloudshell-user 4096 Dec 15 18:46 .
drwxr-xr-x 4 root            root            4096 Dec 15 18:01 ..
-rw-r--r-- 1 cloudshell-user cloudshell-user   18 Dec 15 18:01 .bash_logout
-rw-r--r-- 1 cloudshell-user cloudshell-user  193 Dec 15 18:01 .bash_profile
-rw-r--r-- 1 cloudshell-user cloudshell-user  314 Dec 15 18:01 .bashrc
drwxr-xr-x 3 cloudshell-user cloudshell-user 4096 Dec 15 18:01 .config
-rw-rw-r-- 1 cloudshell-user cloudshell-user    0 Dec 15 18:46 hoge.txt
-rw-r--r-- 1 cloudshell-user cloudshell-user  777 Dec 15 18:01 .zshrc

.zshrc がありますね。デフォルトのシェルは Bash ですが、 Zsh が入っているのでさっと切り替えることもできそうです。 hoge.txt は私が後から作ったファイルですので気にしないでください。

[cloudshell-user@ip-10-0-99-88 ~]$ zsh --version
zsh 5.7.1 (x86_64-koji-linux-gnu)

諸々の言語のランタイムを見てみます。

[cloudshell-user@ip-10-0-99-88 ~]$ python -V
Python 2.7.18
[cloudshell-user@ip-10-0-99-88 ~]$ node -v
v12.18.4
[cloudshell-user@ip-10-0-99-88 ~]$ npm -v
6.14.6
[cloudshell-user@ip-10-0-99-88 ~]$ aws --version
aws-cli/2.0.58 Python/3.7.3 Linux/4.14.209-160.335.amzn2.x86_64 exec-env/CloudShell exe/x86_64.amzn.2

(私個人としてはもはや EC2 使うときも初っ端 anyenv 入れてるので気になりませんが)Python は相変わらず2系のようです。 Node.js や npm は割と新しいですね。

あと AWS CLI が v2 なのはとても良いと思います。

(※2020/12/1610:00 JST 追記) Python3 もインストールされていました。python3 で呼び出せます(まだ Python 2系かよ~みたいに言ってすみませんでした)。

[cloudshell-user@ip-10-0-148-16 ~]$ python3 -V
Python 3.7.9

ストレージがリージョン毎に 1GB ということもあり、複数タブから同時にこのコンソール(つまりセッション)を開くことができますが、同一リージョンであればどれか一つのタブでファイルを作成すると他のタブからも見えるようになります。

Persistent Storage – Files stored within $HOME persist between invocations of CloudShell with a limit of 1 GB per region; all other storage is ephemeral. This means that any software that is installed outside of $HOME will not persist, and that no matter what you change (or break), you can always begin anew with a fresh CloudShell environment.

$HOME に保存されたファイルはこの 1GB の範囲内で永続的に保存されるようです。 デフォルトだと(当然かもですが)ホームディレクトリです。

[cloudshell-user@ip-10-0-99-88 ~]$ echo $HOME
/home/cloudshell-user

裏を返せば $HOME 以外に保存したファイルは毎回お掃除しなくても良いということになりますので、上手いこと運用すれば本当に "お手軽に" シェル環境が使えますね。

Network Access – Sessions can make outbound connections to the Internet, but do not allow any type of inbound connections. Sessions cannot currently connect to resources inside of private VPC subnets, but that’s also on the near-term roadmap.

インターネットへは自由に出られますがインターネットからの接続は許可しないようです。 ごく自然な仕様でしょう。

また、プライベートサブネット内のリソースへの接続は現状サポートされていないようですが、今後サポートされる方向ではあるようです。

Pricing – You can use up to 10 concurrent shells in each region at no charge. You only pay for other AWS resources you use with CloudShell to create and run your applications.

気になるお値段ですが、10 個のシェルまでは同時に開いても無料のようです。マジすか。ありがとうございます。

その他、公式ブログ内でもスクショ付きで丁寧に紹介されていますが、同一ウィンドウ内でタブ分割して複数セッションを開いたり、文字のサイズ、ダークモードの on/off 、ファイルのアップロード/ダウンロードが可能です。

凄いっすね。

AWS re:Invent 2020 まだやってますよ

re:Invent は今週で一旦(年明けもちょっとあります)終わってしまいますが、過去のセッションや Keynote もオンデマンドで閲覧できるものもありますので是非登録して色々覗かれてみてはいかがでしょうか。

reinvent.awsevents.com

それではまた。