Cloudshell基本

2024年5月12日

Cloudshellとは、そもそも何か

通常はAzureをPowershellで操作しようとすると、手元のPCから操作することになると思います。

ただ、Azureへの操作を開始する前にAzureに接続するコマンドを打ったり、Azコマンドを使うためにコマンドツールをインストールする必要があります。

その点、Cloudshellでは、Azure Portal画面上から簡単にPowersellの操作ができます。

メリット

メリットとしては以下があります。

・Entra ID テナントにログインした状態でPowershellが開始される

・Az、Gitなどよく使うコマンドツールがインストールされている

実態は仮想マシン

このPowershell環境が、一体どこにあるのかイメージがわかなかったのですが、「Azure上の仮想マシンが作成されていて、そのPowershell画面がAzure Portal画面上に表示されているだけ」と考えるとイメージが湧きやすいです。

なぜストレージアカウントが必要なのか

Cloudshellを利用する前に、ストレージアカウントの作成(または、既存ストレージカウントの選択)が求められます。

これは、Powershell操作により、ファイルの作成や、インターネット上からファイルをダウンロードできるのですが、それらのファイルの保存先として使用されます。

Powershell環境の実態は、仮想マシンだと説明しましたが、この仮想マシンにはストレージがついておらず、ファイルの保存先がないため、ファイルの保存先としてストレージアカウント(ファイル共有)が使われるという仕組みになっています

ストレージアカウント(ファイル共有)がマウントされているディレクトリ

cloudshell画面起動後、「lsコマンド」を実行すると、以下の3つのディレクトリが表示されると思います。

clouddrive
dotnet-sqldb-tutorial
Microsoft

この中で、「clouddrive」ディレクトリにストレージアカウント(ファイル共有)がマウントされているため、「clouddrive」ディレクトリ内にファイルを保存すれば、ストレージアカウント(ファイル共有)にファイルが保存されることになります。

(参考)Azure Cloud Shell でファイルを永続化する
https://learn.microsoft.com/ja-jp/azure/cloud-shell/persisting-shell-storage
 
====抜粋====
$HOME ディレクトリの内容を格納するディスク イメージを作成します。 ディスク イメージは https://storageaccountname.file.core.windows.net/filesharename/.cloudconsole/acc_user.img に保存されます。
 
ファイル共有を $HOME ディレクトリに clouddrive としてマウントします。 /home/<User>/clouddrive パスは storageaccountname.file.core.windows.net/filesharename にマッピングされます。
===========

注意点

コマンド制限

利用できるコマンドに制限があるようです。

たとえば、Azureに接続するためによく使う「Connect-AzAccount」はCloudshellでは使えませんでした。

おそらく、Cloudshell自体が特定テナントのAzurePortal上で利用するものであるため、別テナントに接続したりすることを許容していないのだと思われます。

ローカルPC上のファイルは利用できない

CloudshellのPowershellの実行環境は、ローカルPC上とは別ですので、当然ローカルPC上のファイルを使うようなPowershellコマンドはCloudshellでは実現できません(と認識しています)。

★Cloudshellの「clouddrive」ディレクトにマウントされているストレージアカウント(ファイル共有)にファイルをアップロードすれば、そのファイルは、Cloudshellから操作可能となります。

Cloudshellはどのテナント、サブスクリプションに紐づいているか

Get-AzSubscription

当然、現在Cloudshellを使っている、AzurePortal画面のテナントID、サブスクリプションが表示されます。

Cloudshellに紐づいているストレージアカウントの確認方法

$env | grep ACC_STORAGE_PROFILE
$env:ACC_STORAGE_PROFILE

CloudshellのPowershell環境の実態である仮想マシンはどこにあるのか

仮想マシンのIPアドレスを調べれば何かヒントになるかなと思い、「ipconfig」を打ってみましたが、サポートされていませんでした。

ipconfig: The term 'ipconfig' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.