AWS CloudShell を早速使ってみました

こんにちは。
本記事は、株式会社日立システムズのアドベントカレンダーの12/17の記事です。

2020/12/16に公開になった、AWS CloudShell を早速使ってみました。

https://aws.amazon.com/jp/blogs/aws/aws-cloudshell-command-line-access-to-aws-resources/

現時点で利用可能なリージョンは以下の通りです。

* US East (N. Virginia)
* US East (Ohio)
* US West (Oregon)
* Europe (Ireland)
* Asia Pacific (Tokyo)

AWS マネージメントコンソールへログインし、上記のリージョンを指定すると、画面右上あたりに以下のようなアイコンが表示されていると思います。これが、AWS CloudShell を起動するためのボタンです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/2fc2ba32-fb65-0c7d-5e12-e9283012109a.png)

このアイコンをクリックすると、ブラウザタブが新しく開き、初期設定が行われます。
そして、以下のようなガイドが表示されるので、適宜「Do not show again」にチェックを入れるなどして、Closeボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/4021ad9f-3549-ac1d-537a-3265b9a2d7ae.png)

利用可能な状態になると以下の画像のような状態になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/09db3808-739e-ee42-4773-9608b95f792c.png)

右上にある Actions はドロップダウンメニューになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/51235dbe-f28f-2eb7-40c9-cb2cc16535ac.png)
タブレイアウトを整えたり、ファイルのダウンロードやアップロードが行えます。
また、CloudShellの再起動や、ホームディレクトリの削除もここから行えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/8e44abd3-cd6d-de4f-d8a3-1ddf4cfb0f89.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/4f630d1a-ec3e-a008-8cb6-18222ec083cd.png)

歯車アイコンでは、画面表示やコピペ時の注意表示をするかどうかの設定も行えますので、適宜設定をするとよいでしょう。
また、CloudShellの再起動や、ホームディレクトリの削除もここから行えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/4691560f-af70-d467-4fcd-377dd61dd130.png)

## というわけで、つかってみた。
まずは基本的な使い方であると思われる、AWS CLI を確認、実行してみます。

### AWS CLI のバージョンを確認する
```sh
[cloudshell-user@ip-10-0-15-222 ~]$ 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 CLI バージョン2系がインストールされていることがわかります。

### AWS CLI を実行してみる
```sh
[cloudshell-user@ip-10-0-182-67 ~]$ aws ec2 describe-instances
{
    "Reservations": [
        {
            "Groups": [],
            "Instances": [
                {
                    "AmiLaunchIndex": 0,
                    "ImageId": "ami-00f045aed21a55240",
(以下省略)
```

この試してみた環境に存在しているEC2インスタンスの情報が取得できました。

## その他、環境回りの確認やちょっと特殊？な使い方をしてみた。
### カーネルなどの確認
まずは、 system-release を確認します。

```sh
[cloudshell-user@ip-10-0-92-23 ~]$ cat /etc/system-release
Amazon Linux release 2 (Karoo)
```

つづいて、 uname コマンドでも確認します。

```sh
[cloudshell-user@ip-10-0-15-222 ~]$ 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
```

サービスリリースの記事の通り、Amazon Linux 2 ベースで動いていることがわかりました。

### ストレージの確認
df コマンドでストレージ容量などを確認します。

```sh
[cloudshell-user@ip-10-0-15-222 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          30G   11G   17G  40% /
tmpfs            64M     0   64M   0% /dev
shm             2.0G     0  2.0G   0% /dev/shm
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/xvdcz       30G   11G   17G  40% /aws/mde
/dev/loop0      976M  2.6M  907M   1% /home
tmpfs           2.0G     0  2.0G   0% /proc/acpi
tmpfs           2.0G     0  2.0G   0% /sys/firmware
tmpfs           2.0G     0  2.0G   0% /proc/scsi
```

/home が約 1GB なので記事にある up to 1GB のとおりですね。

### その他いろいろ
#### sudo はできるか

```sh
[cloudshell-user@ip-10-0-92-23 ~]$ sudo date
Wed Dec 16 04:27:04 UTC 2020
```
できますね。

以下のようにやれば、半ば無理やりですが、 root にもなれます。

```sh
[cloudshell-user@ip-10-0-92-23 ~]$ sudo su -
-bash-4.2# whoami
root
-bash-4.2# 
```

#### インスタンスメタデータは取得できるか

```sh
[cloudshell-user@ip-10-0-92-23 ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
> && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/
curl: (7) Couldn't connect to server
```

接続できず、取得できないようです。

#### 既にインストールされているパッケージ
yum list installed コマンドで確認できます。

```sh
[cloudshell-user@ip-10-0-92-23 ~]$ yum list installed
```

詳細は長いので、以下開いてください。

<details><summary>詳細を開く</summary><div>

```sh
Installed Packages
acl.x86_64                           2.2.51-14.amzn2                 @amzn2-core
amazon-linux-extras.noarch           1.6.12-1.amzn2                  @amzn2-core
audit-libs.x86_64                    2.8.1-3.amzn2.1                 @amzn2-core
basesystem.noarch                    10.0-7.amzn2.0.1                installed  
bash.x86_64                          4.2.46-34.amzn2                 @amzn2-core
bzip2-libs.x86_64                    1.0.6-13.amzn2.0.2              installed  
ca-certificates.noarch               2019.2.32-76.amzn2.0.3          @amzn2-core
chkconfig.x86_64                     1.7.4-1.amzn2.0.2               installed  
coreutils.x86_64                     8.22-24.amzn2                   installed  
cpio.x86_64                          2.11-28.amzn2                   @amzn2-core
cracklib.x86_64                      2.9.0-11.amzn2.0.2              @amzn2-core
cracklib-dicts.x86_64                2.9.0-11.amzn2.0.2              @amzn2-core
cryptsetup-libs.x86_64               1.7.4-4.amzn2                   @amzn2-core
curl.x86_64                          7.61.1-12.amzn2.0.2             @amzn2-core
cyrus-sasl-lib.x86_64                2.1.26-23.amzn2                 installed  
dbus.x86_64                          1:1.10.24-7.amzn2               @amzn2-core
dbus-libs.x86_64                     1:1.10.24-7.amzn2               @amzn2-core
device-mapper.x86_64                 7:1.02.146-4.amzn2.0.2          @amzn2-core
device-mapper-libs.x86_64            7:1.02.146-4.amzn2.0.2          @amzn2-core
diffutils.x86_64                     3.3-5.amzn2                     installed  
elfutils-default-yama-scope.noarch   0.176-2.amzn2                   @amzn2-core
elfutils-libelf.x86_64               0.176-2.amzn2                   installed  
elfutils-libs.x86_64                 0.176-2.amzn2                   @amzn2-core
emacs-filesystem.noarch              1:25.3-3.amzn2.0.2              @amzn2-core
expat.x86_64                         2.1.0-12.amzn2                  @amzn2-core
file-libs.x86_64                     5.11-36.amzn2.0.1               @amzn2-core
filesystem.x86_64                    3.2-25.amzn2.0.4                installed  
findutils.x86_64                     1:4.5.11-6.amzn2                installed  
fipscheck.x86_64                     1.4.1-6.amzn2.0.2               @amzn2-core
fipscheck-lib.x86_64                 1.4.1-6.amzn2.0.2               @amzn2-core
gawk.x86_64                          4.0.2-4.amzn2.1.2               installed  
gdbm.x86_64                          1:1.13-6.amzn2.0.2              installed  
git.x86_64                           2.23.3-1.amzn2.0.1              @amzn2-core
git-core.x86_64                      2.23.3-1.amzn2.0.1              @amzn2-core
git-core-doc.noarch                  2.23.3-1.amzn2.0.1              @amzn2-core
glib2.x86_64                         2.56.1-5.amzn2.0.1              @amzn2-core
glibc.x86_64                         2.26-37.amzn2                   @amzn2-core
glibc-common.x86_64                  2.26-37.amzn2                   @amzn2-core
glibc-langpack-en.x86_64             2.26-37.amzn2                   @amzn2-core
glibc-minimal-langpack.x86_64        2.26-37.amzn2                   @amzn2-core
gmp.x86_64                           1:6.0.0-15.amzn2.0.2            installed  
gnupg2.x86_64                        2.0.22-5.amzn2.0.4              installed  
gpgme.x86_64                         1.3.2-5.amzn2.0.2               installed  
gpm-libs.x86_64                      1.20.7-15.amzn2.0.2             @amzn2-core
grep.x86_64                          2.20-3.amzn2.0.2                installed  
groff-base.x86_64                    1.22.2-8.amzn2.0.2              @amzn2-core
gzip.x86_64                          1.5-10.amzn2                    @amzn2-core
info.x86_64                          5.1-5.amzn2                     installed  
iputils.x86_64                       20160308-10.amzn2.0.2           @amzn2-core
jq.x86_64                            1.5-1.amzn2.0.2                 @amzn2-core
keyutils-libs.x86_64                 1.5.8-3.amzn2.0.2               installed  
kmod.x86_64                          25-3.amzn2.0.2                  @amzn2-core
kmod-libs.x86_64                     25-3.amzn2.0.2                  @amzn2-core
krb5-libs.x86_64                     1.15.1-37.amzn2.2.2             installed  
less.x86_64                          458-9.amzn2.0.2                 @amzn2-core
libacl.x86_64                        2.2.51-14.amzn2                 installed  
libassuan.x86_64                     2.1.0-3.amzn2.0.2               installed  
libattr.x86_64                       2.4.46-12.amzn2.0.2             installed  
libblkid.x86_64                      2.30.2-2.amzn2.0.4              installed  
libcap.x86_64                        2.22-9.amzn2.0.2                installed  
libcap-ng.x86_64                     0.7.5-4.amzn2.0.4               @amzn2-core
libcom_err.x86_64                    1.42.9-19.amzn2                 @amzn2-core
libcrypt.x86_64                      2.26-37.amzn2                   @amzn2-core
libcurl.x86_64                       7.61.1-12.amzn2.0.2             @amzn2-core
libdb.x86_64                         5.3.21-24.amzn2.0.3             installed  
libdb-utils.x86_64                   5.3.21-24.amzn2.0.3             installed  
libedit.x86_64                       3.0-12.20121213cvs.amzn2.0.2    @amzn2-core
libevent.x86_64                      2.0.21-4.amzn2.0.3              @amzn2-core
libfdisk.x86_64                      2.30.2-2.amzn2.0.4              @amzn2-core
libffi.x86_64                        3.0.13-18.amzn2.0.2             installed  
libgcc.x86_64                        7.3.1-9.amzn2                   @amzn2-core
libgcrypt.x86_64                     1.5.3-14.amzn2.0.2              installed  
libgpg-error.x86_64                  1.12-3.amzn2.0.3                installed  
libicu.x86_64                        50.2-4.amzn2                    @amzn2-core
libidn.x86_64                        1.28-4.amzn2.0.2                @amzn2-core
libidn2.x86_64                       2.3.0-1.amzn2                   installed  
libmetalink.x86_64                   0.1.3-13.amzn2                  @amzn2-core
libmount.x86_64                      2.30.2-2.amzn2.0.4              installed  
libnghttp2.x86_64                    1.41.0-1.amzn2                  @amzn2-core
libpipeline.x86_64                   1.2.3-3.amzn2.0.2               @amzn2-core
libpwquality.x86_64                  1.2.3-5.amzn2                   @amzn2-core
libsecret.x86_64                     0.18.5-2.amzn2.0.2              @amzn2-core
libselinux.x86_64                    2.5-12.amzn2.0.2                installed  
libsemanage.x86_64                   2.5-11.amzn2                    @amzn2-core
libsepol.x86_64                      2.5-8.1.amzn2.0.2               installed  
libsmartcols.x86_64                  2.30.2-2.amzn2.0.4              @amzn2-core
libssh2.x86_64                       1.4.3-12.amzn2.2.3              @amzn2-core
libstdc++.x86_64                     7.3.1-9.amzn2                   @amzn2-core
libtasn1.x86_64                      4.10-1.amzn2.0.2                installed  
libtirpc.x86_64                      0.2.4-0.16.amzn2                @amzn2-core
libunistring.x86_64                  0.9.3-9.amzn2.0.2               installed  
libutempter.x86_64                   1.1.6-4.amzn2.0.2               @amzn2-core
libuuid.x86_64                       2.30.2-2.amzn2.0.4              installed  
libverto.x86_64                      0.2.5-4.amzn2.0.2               installed  
libxml2.x86_64                       2.9.1-6.amzn2.5.1               @amzn2-core
lua.x86_64                           5.1.4-15.amzn2.0.2              installed  
lz4.x86_64                           1.7.5-2.amzn2.0.1               @amzn2-core
make.x86_64                          1:3.82-24.amzn2                 @amzn2-core
man-db.x86_64                        2.6.3-9.amzn2.0.3               @amzn2-core
mariadb.x86_64                       1:5.5.68-1.amzn2                @amzn2-core
mariadb-libs.x86_64                  1:5.5.68-1.amzn2                @amzn2-core
ncurses.x86_64                       6.0-8.20170212.amzn2.1.3        installed  
ncurses-base.noarch                  6.0-8.20170212.amzn2.1.3        installed  
ncurses-libs.x86_64                  6.0-8.20170212.amzn2.1.3        installed  
nodejs.x86_64                        2:12.18.4-1nodesource           installed  
nspr.x86_64                          4.21.0-1.amzn2.0.2              installed  
nss.x86_64                           3.44.0-7.amzn2                  installed  
nss-pem.x86_64                       1.0.3-5.amzn2                   installed  
nss-softokn.x86_64                   3.44.0-8.amzn2                  installed  
nss-softokn-freebl.x86_64            3.44.0-8.amzn2                  installed  
nss-sysinit.x86_64                   3.44.0-7.amzn2                  installed  
nss-tools.x86_64                     3.44.0-7.amzn2                  installed  
nss-util.x86_64                      3.44.0-4.amzn2                  installed  
oniguruma.x86_64                     5.9.6-1.amzn2.0.3               @amzn2-core
openldap.x86_64                      2.4.44-22.amzn2                 @amzn2-core
openssh.x86_64                       7.4p1-21.amzn2.0.1              @amzn2-core
openssh-clients.x86_64               7.4p1-21.amzn2.0.1              @amzn2-core
openssl-libs.x86_64                  1:1.0.2k-19.amzn2.0.3           installed  
p11-kit.x86_64                       0.23.21-2.amzn2.0.1             @amzn2-core
p11-kit-trust.x86_64                 0.23.21-2.amzn2.0.1             @amzn2-core
pam.x86_64                           1.1.8-23.amzn2.0.1              @amzn2-core
pcre.x86_64                          8.32-17.amzn2.0.2               installed  
pcre2.x86_64                         10.23-2.amzn2.0.2               @amzn2-core
perl.x86_64                          4:5.16.3-294.amzn2              @amzn2-core
perl-Carp.noarch                     1.26-244.amzn2                  @amzn2-core
perl-Encode.x86_64                   2.51-7.amzn2.0.2                @amzn2-core
perl-Error.noarch                    1:0.17020-2.amzn2               @amzn2-core
perl-Exporter.noarch                 5.68-3.amzn2                    @amzn2-core
perl-File-Path.noarch                2.09-2.amzn2                    @amzn2-core
perl-File-Temp.noarch                0.23.01-3.amzn2                 @amzn2-core
perl-Filter.x86_64                   1.49-3.amzn2.0.2                @amzn2-core
perl-Getopt-Long.noarch              2.40-3.amzn2                    @amzn2-core
perl-Git.noarch                      2.23.3-1.amzn2.0.1              @amzn2-core
perl-HTTP-Tiny.noarch                0.033-3.amzn2                   @amzn2-core
perl-PathTools.x86_64                3.40-5.amzn2.0.2                @amzn2-core
perl-Pod-Escapes.noarch              1:1.04-294.amzn2                @amzn2-core
perl-Pod-Perldoc.noarch              3.20-4.amzn2                    @amzn2-core
perl-Pod-Simple.noarch               1:3.28-4.amzn2                  @amzn2-core
perl-Pod-Usage.noarch                1.63-3.amzn2                    @amzn2-core
perl-Scalar-List-Utils.x86_64        1.27-248.amzn2.0.2              @amzn2-core
perl-Socket.x86_64                   2.010-4.amzn2.0.2               @amzn2-core
perl-Storable.x86_64                 2.45-3.amzn2.0.2                @amzn2-core
perl-TermReadKey.x86_64              2.30-20.amzn2.0.2               @amzn2-core
perl-Text-ParseWords.noarch          3.29-4.amzn2                    @amzn2-core
perl-Time-HiRes.x86_64               4:1.9725-3.amzn2.0.2            @amzn2-core
perl-Time-Local.noarch               1.2300-2.amzn2                  @amzn2-core
perl-constant.noarch                 1.27-2.amzn2.0.1                @amzn2-core
perl-libs.x86_64                     4:5.16.3-294.amzn2              @amzn2-core
perl-macros.x86_64                   4:5.16.3-294.amzn2              @amzn2-core
perl-parent.noarch                   1:0.225-244.amzn2.0.1           @amzn2-core
perl-podlators.noarch                2.5.1-3.amzn2.0.1               @amzn2-core
perl-threads.x86_64                  1.87-4.amzn2.0.2                @amzn2-core
perl-threads-shared.x86_64           1.43-6.amzn2.0.2                @amzn2-core
pinentry.x86_64                      0.8.1-17.amzn2.0.2              installed  
popt.x86_64                          1.13-16.amzn2.0.2               installed  
powershell.x86_64                    7.0.3-1.rhel.7                  installed  
procps-ng.x86_64                     3.3.10-26.amzn2                 @amzn2-core
pth.x86_64                           2.0.7-23.amzn2.0.2              installed  
pygpgme.x86_64                       0.3-9.amzn2.0.2                 installed  
pyliblzma.x86_64                     0.5.3-11.amzn2.0.2              installed  
python.x86_64                        2.7.18-1.amzn2.0.2              @amzn2-core
python-iniparse.noarch               0.4-9.amzn2                     installed  
python-libs.x86_64                   2.7.18-1.amzn2.0.2              @amzn2-core
python-pycurl.x86_64                 7.19.0-19.amzn2.0.2             installed  
python-urlgrabber.noarch             3.10-9.amzn2.0.1                installed  
python2-rpm.x86_64                   4.11.3-40.amzn2.0.5             @amzn2-core
python3.x86_64                       3.7.9-1.amzn2.0.1               @amzn2-core
python3-libs.x86_64                  3.7.9-1.amzn2.0.1               @amzn2-core
python3-pip.noarch                   9.0.3-1.amzn2.0.2               @amzn2-core
python3-setuptools.noarch            38.4.0-3.amzn2.0.6              @amzn2-core
pyxattr.x86_64                       0.5.1-5.amzn2.0.2               installed  
qrencode-libs.x86_64                 3.4.1-3.amzn2.0.2               @amzn2-core
readline.x86_64                      6.2-10.amzn2.0.2                installed  
rpm.x86_64                           4.11.3-40.amzn2.0.5             @amzn2-core
rpm-build-libs.x86_64                4.11.3-40.amzn2.0.5             @amzn2-core
rpm-libs.x86_64                      4.11.3-40.amzn2.0.5             @amzn2-core
sed.x86_64                           4.2.2-5.amzn2.0.2               installed  
setup.noarch                         2.8.71-10.amzn2.0.1             installed  
shadow-utils.x86_64                  2:4.1.5.1-24.amzn2.0.2          @amzn2-core
shared-mime-info.x86_64              1.8-4.amzn2                     installed  
sqlite.x86_64                        3.7.17-8.amzn2.1.1              installed  
sudo.x86_64                          1.8.23-4.amzn2.2                @amzn2-core
system-release.x86_64                1:2-12.amzn2                    @amzn2-core
systemd.x86_64                       219-57.amzn2.0.12               @amzn2-core
systemd-libs.x86_64                  219-57.amzn2.0.12               @amzn2-core
tar.x86_64                           2:1.26-35.amzn2                 @amzn2-core
tmux.x86_64                          1.8-4.amzn2.0.1                 @amzn2-core
tzdata.noarch                        2020a-1.amzn2                   @amzn2-core
unzip.x86_64                         6.0-21.amzn2                    @amzn2-core
ustr.x86_64                          1.0.4-16.amzn2.0.3              @amzn2-core
util-linux.x86_64                    2.30.2-2.amzn2.0.4              @amzn2-core
vim-common.x86_64                    2:8.1.1602-1.amzn2              @amzn2-core
vim-enhanced.x86_64                  2:8.1.1602-1.amzn2              @amzn2-core
vim-filesystem.noarch                2:8.1.1602-1.amzn2              @amzn2-core
vim-minimal.x86_64                   2:8.1.1602-1.amzn2              installed  
wget.x86_64                          1.14-18.amzn2.1                 @amzn2-core
which.x86_64                         2.20-7.amzn2.0.2                @amzn2-core
xz-libs.x86_64                       5.2.2-1.amzn2.0.2               installed  
yum.noarch                           3.4.3-158.amzn2.0.4             @amzn2-core
yum-metadata-parser.x86_64           1.1.4-10.amzn2.0.2              installed  
yum-plugin-ovl.noarch                1.1.31-46.amzn2.0.1             installed  
yum-plugin-priorities.noarch         1.1.31-46.amzn2.0.1             installed  
zip.x86_64                           3.0-11.amzn2.0.2                @amzn2-core
zlib.x86_64                          1.2.7-18.amzn2                  installed  
zsh.x86_64                           5.7.1-6.amzn2.0.1               @amzn2-core

```

</div></details>

記事にある通り、jq や pip、 npm などがインストールされています。powershell もありました。
試しに PowerShell を実行してみました。

```sh
[cloudshell-user@ip-10-0-92-23 ~]$ /opt/microsoft/powershell/7/pwsh 
PowerShell 7.0.3
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/powershell
Type 'help' to get help.

   A new PowerShell stable release is available: v7.1.0 
   Upgrade now, or check out the release page at:       
     https://aka.ms/PowerShell-Release?tag=v7.1.0       

PS /home/cloudshell-user> 

```

#### 牛に何かつぶやかせる
cowsay というコマンドをインストールして、引数に与えた文字列をつぶやく牛のアスキーアートを表示するコマンドを実行してみます。

```sh
[cloudshell-user@ip-10-0-92-23 ~]$ git clone https://github.com/schacon/cowsay.git
Cloning into 'cowsay'...
remote: Enumerating objects: 64, done.
remote: Total 64 (delta 0), reused 0 (delta 0), pack-reused 64
Unpacking objects: 100% (64/64), done.
[cloudshell-user@ip-10-0-92-23 ~]$ cd cowsay/
[cloudshell-user@ip-10-0-92-23 cowsay]$ sudo ./install.sh 
===================
cowsay Installation
===================

(中略)

[cloudshell-user@ip-10-0-92-23 cowsay]$ cowsay "AWSCloudShell"
 _______________ 
< AWSCloudShell >
 --------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

```

#### emacs を使うぞ！
vi ではなく、 emacs 勢のための確認です。筆者が初めてテキストエディタに触れたのは emacs でした。

```sh
[cloudshell-user@ip-10-0-92-23 ~]$ sudo yum install emacs-nox

(中略)

[cloudshell-user@ip-10-0-92-23 ~]$ emacs

```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/b7bfbdd2-57f8-6a52-0d6a-810f6f0837e3.png)

さらに、　Exit + x を入力し、 hanoi と入力すると。。。
[ハノイの塔](https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94)を眺めることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/5b4af88f-0374-39c3-352c-5916054a4d09.png)

同様に、Exit + x を入力し、　gomoku とすると。。。
五目並べで遊ぶことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/66efe4ff-b6f3-b343-835b-434bbe5f53a4.png)

矢印キーで移動し、スペースキーで石を置く場所を決めますが、全然勝てません。



### おまけ
現状は[FAQ](https://aws.amazon.com/jp/cloudshell/faqs/)にもある通り、 VPC 上のリソース(プライベートサブネットで稼働している EC2 インスタンスや RDS の DB インスタンスなど)に直接アクセスすることはできません。
しかし、以下の通り実行すると(半ば無理やりですが) EC2 インスタンスへ接続することができました。
このやり方を推奨するものではございません。
このやり方を参考にしていかなる損害等が発生しても筆者や当社は責任を負いません。ご了承ください。

<details><summary>上記を承知して詳細を開く</summary><div>
準備：

* 接続したい EC2 インスタンスにパブリックIPアドレスを割り当てる
* いうまでもなく、EC2 インスタンスが稼働する VPC に インターネットゲートウェイがアタッチされている
* AWS CloudShell 上で「curl http://checkip.amazonaws.com/」を実行し、AWS CloudShellのグローバルIPアドレスを確認する
* EC2 インスタンスに割り当てているセキュリティグループのインバウンドとして、上記で確認したグローバルIPアドレスに対してSSHのポートを開けるように設定する
 * 確認したIPアドレスが 11.22.33.44 なら 11.22.33.44/32 とする 
* EC2 インスタンスにログインする際、鍵を使うのであれば、 AWS CloudShell へアップロードし、適宜権限設定を行う

AWS CloudShell 上で ssh コマンドを実行する

```sh
[cloudshell-user@ip-10-0-182-67 ~]$ ssh -i key-file-name.pem ec2-user@***.***.***.***
The authenticity of host '***.***.***.*** (***.***.***.***)' can't be established.
ECDSA key fingerprint is SHA256:*********************************************.
ECDSA key fingerprint is MD5:*********************************************.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '***.***.***.***' (ECDSA) to the list of known hosts.

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
7 package(s) needed for security, out of 19 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-***-***-***-*** ~]$ 
```

と、このようにつなぐことはできました。
セキュリティ的にもよろしくないので技術的興味を満たす以外に実施するのをお勧めしません。
繰り返しになりますが、このやり方を推奨するものではございません。
繰り返しになりますが、このやり方を参考にしていかなる損害等が発生しても筆者や当社は責任を負いません。ご了承ください。
</div></details>

## まとめ
ささっと AWS CLI や API を実行したい場合、これまでは　ES2 インスタンスをささと作って SSM でつないだり、たたきたい API を実行するためだけの Lambda 関数を作るなどしていました。
この AWS CloudShell を使うことでこういった作業からも解放され、インスタンスや関数の管理や始末をしなくてもよくなりました。
しかも、追加費用なしで利用可能なんて、驚きです。

この機能、待ってました！

記載されている会社名、製品名、サービス名、ロゴ等は各社の商標または登録商標です。