Azure Cloud Shell入門:「Potalでコマンド実行できる」から一歩踏み込んでみる
前置き
Cloud Shellについては「Azure Potalでスクリプトを実行できて、ローカルに環境構築が不要だから便利だなー」というレベルの理解でした。
今回は一歩だけ踏み込んで
- Cloud Shellの状態は次のセッションでも保持できるのか、どこで保持されるのか
- 保持された情報を参照する方法はあるのか
などがわかる人を目指しました。
今回知った中での推しはエディターの存在です。
Azure Cloud Shell とは
- ポータルにさえアクセスできればAzureリソースをコマンドで操作できますよツール
- Powershell,Bashが使える
- インストールやバージョン管理が不要なシェル環境
- 要求ごとにマシンが割り当てられるのでセッション間ではマシンの状態が保持されない
- 保持したい場合はAzureファイル共有にアタッチする設定をする(後述)
- Azure CLI,Git,dotnetなどはデフォルトで入っている
- Azure Linux上で実行される
Cloud Shellを使用する下準備
私は設定不要でしたが、もし使えなかった場合は下記手順を実行してください。
- サブスクリプションを開き、リソースプロバイダー >
cloudshellで検索 - Microsoft.CloudShell が登録済み(Registered)になっていなければ選択して登録(上のバーにある「登録」を押す)
Cloud Shellを起動してみる

- ポータル上部のナビゲーションバーにあるCloud Shellボタンを押す
- Storageアカウントの作成を求められるので、実行したいサブスクリプションを選択して促されるままに作る
- 開いた!
Cloud Shellの永続化
特別設定は不要です。
上記手順2で作成したStorageアカウントのファイル共有 fileshare.storage.windows.net/fileshare/.cloudconsole/acc_<User>.img が保持されることでCloud Shellの状態を次のセッションにも引き継ぐことができます。
一度設定すれば勝手にファイル共有を clouddrive という名前でマウントして.imgファイルを参照、更新してくれます。
Cloud Shellの $HOME ディレクトリ内すべてのファイルが保持されます。
どのファイル共有に保存されているのか
促されるままにStorageアカウントを作成したので、どこに保存されているんだ?となります。
そんな時はCloud Shellでdf というコマンドを実行すると、どのファイル共有をマウントしているかを表示してくれます。
df
//{{ストレージアカウント名}}.file.core.windows.net/{{ファイル共有名}} のように表示されます。
PowerShellであれば Get-CloudDrive というコマンドを実行するとどのファイル共有をマウントしているかがさらにわかりやすく表示されます。
Get-CloudDrive
保持されているファイルの確認・更新方法
ファイル共有 fileshare.storage.windows.net/fileshare/.cloudconsole/acc_<User>.img で何が保持されているのか確認したいときはエディターを開いてみましょう。
画像のような形式でファイルを確認できます。

開き方は2パターンあり、それぞれで挙動が若干異なります。
エディターの開き方
1. Cloud Shell上部の{ }アイコンをクリックする

この場合はどの階層にいるときでも必ずルートからエディターが開かれます。
2. code . コマンドを実行する
Cloud Shellでcode . と打って実行します。
code .
すると今いる階層からエディターを開いてくれます。(.がなくても同じ挙動でした)
今の作業ディレクトリより一階層上を見たければcode ../になります。
また、下記コマンドで指定したファイルを直接開いてくれます。
code <filename>
エディターの閉じ方
ものすごくわかりにくいですが、エディターの右上のあたりをクリックすると「エディターを閉じる」という選択肢が出てきます。
もしくはエディターにフォーカスがある状態でCtrl+Q です。

エディター補足
上記で開いたのはオープンソースのMonaco Editorから構築された統合ファイルエディターです。
このエディターでファイルを編集することもできます(エディターなのでそれはそうですが)。
Cloud Shellの環境にファイルをアップロードする
2つの方法があります。
- マウントされているファイル共有に直接ファイルをアップロードする
- Cloud Shell セッションの上部のバーにある[ファイルのアップロード/ダウンロード] アイコンからファイルをアップロードする

特に2の場合に気になるのがどこにファイルがアップロードされるかですが、 $HOME フォルダーのルートにアップロードされます。
別のパスにアップロードしたい場合はアップロード後にコマンドで移動します。
移動する場合はファイル共有に直接上げてしまう方がわかりやすいかもしれません。
終わりに
今までちょっとAzure CLIのコマンドを実行したい、という時にしか利用していませんでしたが改めて調べてみるとかなりのポテンシャルでした。
Terraformをインストールして実行できたり、.NETのアプリケーションを実行できたりしますし、他の方がどう使っているのか気になるところです。
出先でスマホから色々できてしまいますね…。
Discussion