プレスリリースやお知らせ、開発ブログ、会社の活動状況、Mattermost・aws・AI等の技術情報などを発信しています。

AWS CloudShellを試す

年末ですね。

こんにちはエンジニアの sakasai です。

最近BeatSaberの動画(これとか、これとか)に突然ハマって、OCULUS QUEST 2 を買おうか迷い中です。



さて、AWS re:Invent 2020CloudShell が発表されましたね。

少し出遅れ感はありますが、使ってみた感じなどを書いておこうと思います。


最初発表されたあとに東京リージョンで使えるということで、ドキュメントを見ずにすぐ使おうとしたらマネジメントコンソールのサービス一覧の中になくてどこから起動するのか探してしまいました。

ヘッダのアイコンか

サービス名で検索すると

起動できます。(ヘッダのアイコンをクリックすると別タブで開きます)

あとはAmazonLinux2にターミナルで接続したときとほぼ同じように使えますね。


yum updateしたり

$ sudo yum -y update
Loaded plugins: ovl, priorities
amzn2-core                                                                                                                                                      | 3.7 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
...
Complete!

/proc/version見てみたり

$ sudo cat /proc/version 
Linux version 4.14.209-160.335.amzn2.x86_64 (mockbuild@ip-10-0-1-132) (gcc version 7.3.1 20180712 (Red Hat 7.3.1-11) (GCC)) #1 SMP Wed Dec 2 23:31:46 UTC 2020

cpuinfoみたり

$ sudo cat /proc/cpuinfo |head
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 85
model name      : Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
stepping        : 7
microcode       : 0x5002f01
cpu MHz         : 2499.998
cache size      : 36608 KB
physical id     : 0

meminfoみたり

$ sudo cat /proc/meminfo |head
MemTotal:        3977864 kB
MemFree:         2124868 kB
MemAvailable:    3503624 kB
Buffers:           52424 kB
Cached:          1451896 kB
SwapCached:            0 kB
Active:           498776 kB
Inactive:        1191192 kB
Active(anon):     147628 kB
Inactive(anon):      140 kB

日付はタイムゾーンを環境変数にセットして日本時間にできますね。

$ date
Fri Dec 25 13:51:46 UTC 2020
$ export TZ=Asia/Tokyo
$ date
Fri Dec 25 22:52:08 JST 2020

AWS CLIコマンド実行したり

$ 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
$ aws s3 ls
2020-12-22 07:20:34 *****

Python実行したり

$ python3 -V
Python 3.7.9
$ pip3 -V
pip 9.0.3 from /usr/lib/python3.7/site-packages (python 3.7)
$ python3 -m venv venv
$ . venv/bin/activate
$ pip3 install -U pip
Collecting pip
  Downloading pip-20.3.3-py2.py3-none-any.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB 24.7 MB/s 
...
Successfully installed pip-20.3.3
$ python -V
Python 3.7.9
$ pip -V
pip 20.3.3 from /home/cloudshell-user/venv/lib64/python3.7/site-packages/pip (python 3.7)
$ pip install boto3
Collecting boto3
  Downloading boto3-1.16.43-py2.py3-none-any.whl (130 kB)
     |████████████████████████████████| 130 kB 20.2 MB/s 
...
Installing collected packages: six, urllib3, python-dateutil, jmespath, botocore, s3transfer, boto3
Successfully installed boto3-1.16.43 botocore-1.19.43 jmespath-0.10.0 python-dateutil-2.8.1 s3transfer-0.3.3 six-1.15.0 urllib3-1.26.2
$ python
Python 3.7.9 (default, Aug 27 2020, 21:59:41) 
[GCC 7.3.1 20180712 (Red Hat 7.3.1-9)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto3
>>> client = boto3.client('s3')
>>> for bucket in client.list_buckets()['Buckets']:
...     print(bucket['Name'])
... 
*****
>>> exit()

samコマンドでLambdaの開発したり

$ sam init

        SAM CLI now collects telemetry to better understand customer needs.
...
-----------------------
Generating application:
-----------------------
Name: sam-app
Runtime: python3.7
Dependency Manager: pip
Application Template: hello-world
Output Directory: .

Next steps can be found in the README file at ./sam-app/README.md

$ ls -lA sam-app/
total 28
drwxrwxr-x 2 cloudshell-user cloudshell-user 4096 Dec 25 23:03 events
-rw-rw-r-- 1 cloudshell-user cloudshell-user 3730 Dec 25 23:03 .gitignore
drwxrwxr-x 2 cloudshell-user cloudshell-user 4096 Dec 25 23:03 hello_world
-rw-rw-r-- 1 cloudshell-user cloudshell-user    0 Dec 25 23:03 __init__.py
-rw-rw-r-- 1 cloudshell-user cloudshell-user 7490 Dec 25 23:03 README.md
-rw-rw-r-- 1 cloudshell-user cloudshell-user 1623 Dec 25 23:03 template.yaml
drwxrwxr-x 3 cloudshell-user cloudshell-user 4096 Dec 25 23:03 test

dockerが入ってないので、sam local invoke するとコケますね。

$ cd sam-app/
$ sam build
Building codeuri: hello_world/ runtime: python3.7 metadata: {} functions: ['HelloWorldFunction']
Running PythonPipBuilder:ResolveDependencies
Running PythonPipBuilder:CopySource

Build Succeeded
...
$ sam local invoke
Error: Running AWS SAM projects locally requires Docker. Have you got it installed and running?

右上のActionsでタブを開いたり、ファイルアップロード・ダウンロードなどが出来るようです。

いろいろいじってリセットしたくなったら「Delete AWS CloudShell home directory」でリセットできるみたいです。

いつもの削除確認が出るので、deleteを入力して削除します。

しばらく待つとターミナルが再度起動して、もろもろ消えてます。

$ ls -lA
total 20
-rw-r--r-- 1 cloudshell-user cloudshell-user   18 Dec 25 14:21 .bash_logout
-rw-r--r-- 1 cloudshell-user cloudshell-user  193 Dec 25 14:21 .bash_profile
-rw-r--r-- 1 cloudshell-user cloudshell-user  314 Dec 25 14:21 .bashrc
drwxr-xr-x 3 cloudshell-user cloudshell-user 4096 Dec 25 14:21 .config
-rw-r--r-- 1 cloudshell-user cloudshell-user  777 Dec 25 14:21 .zshrc

CloudShellからEC2にssh接続することも出来るようです。(リンク先にも書いてますがおそらく非推奨なやり方です)


まだ最初のさわり程度しかいじれてませんが、ブラウザ上のターミナルで操作もストレスなくさくさく動いてくれるので、いろいろ便利に使えそうです。

手順書の基本操作をCloudShellにするとか、ハンズオンセミナーとかでAWS CLIの操作が必要なときにCloudShellで実行してもらうとかにも使えそうですね。

こんなネタ的なものとかも出てましたが、早速こんなイベントも企画されてました。

これからどんどん使っていこうと思います。



弊社ではエンジニア募集してます。

https://www.wantedly.com/companies/company_6372758/projects

気になった方はお気軽にご連絡ください。(カジュアル面談でちょっと話が聞きたいとかも大丈夫です)

  • B!

おすすめ記事リンク