Azure Cloud Shell でファイルを永続化する

Cloud Shell では Azure File を使用してセッション間でファイルを維持します。 Cloud Shell の初回起動時に、セッション間でファイルを維持するために新しいまたは既存のファイル共有を関連付けることを求められます。

注意

Bash と PowerShell は、同じファイル共有を共有します。 Cloud Shell で自動マウントと関連付けることができるのは、1 つのファイル共有のみです。

Cloud Shell ストレージ アカウントでは Azure Storage ファイアウォールはサポートされません。

新しいストレージの作成

基本設定を使用し、サブスクリプションのみを選択すると、Cloud Shell では、最寄りのサポートされるリージョンに 3 つのリソースが自動的に作成されます。

  • リソース グループ: cloud-shell-storage-<region>
  • ストレージ アカウント: cs<uniqueGuid>
  • ファイル共有: cs-<user>-<domain>-com-<uniqueGuid>

ストレージ アカウントのサブスクリプションを選択するスクリーンショット。

ファイル共有は $HOME ディレクトリに clouddrive としてマウントされます。 これは 1 度限りのアクションであり、ファイル共有は以降のセッションで自動的にマウントされます。

また、5 GB のイメージを含むファイル共有によって $HOME ディレクトリに自動的にデータが維持されます。 このファイル共有は、Bash と PowerShell の両方に使用されます。

既存のリソースの使用

詳細設定オプションを使用すると、既存のリソースを関連付けることができます。 Cloud Shell リージョンを選択する場合、同じリージョンに併置されたバッキング ストレージ アカウントを選択する必要があります。 たとえば、割り当てリージョンが米国西部である場合、同様に米国西部に存在するファイル共有を関連付ける必要があります。

ストレージのセットアップを促す画面が表示されたら、[詳細設定の表示] を選択して、詳細オプションを表示します。 設定されているストレージ オプションは、ローカル冗長ストレージ (LRS)、geo 冗長ストレージ (GRS)、ゾーン冗長ストレージ (ZRS) のアカウントをフィルター処理します。

Note

バッキング ファイル共有の回復性を強化するには、GRS または ZRS のストレージ アカウントの使用をお勧めします。 どちらの種類の冗長性を選ぶかは、実際の目標と価格の希望により異なります。 詳細については、Azure Storage アカウントのレプリケーションのオプションを参照してください

ストレージ アカウントの構成のスクリーンショット。

ストレージ アクセスのセキュリティ保護

セキュリティのために、各ユーザーが自分のストレージ アカウントを作成する必要があります。 Azure ロールベースのアクセス制御 (Azure RBAC) では、ユーザーはストレージ アカウント レベルで共同作成者以上のアクセス権を持つ必要があります。

Cloud Shell では、指定されたサブスクリプション内のストレージ アカウントで Azure ファイル共有が使用されます。 アクセス許可が継承されるため、サブスクリプションに対する十分なアクセス権を持つユーザーは、サブスクリプションに含まれるすべてのストレージ アカウントとファイル共有にアクセスできます。

ユーザーは、ストレージ アカウントまたはサブスクリプション レベルでアクセス許可を設定することによって、各自のファイルへのアクセスをロックダウンする必要があります。

Cloud Shell のストレージ アカウントには、Cloud Shell のユーザーがホーム ディレクトリで作成したファイルが格納され、これにはアクセス トークンや資格情報などの機密情報が含まれる場合があります。

サポートされているストレージ リージョン

現在のリージョンを確認するには、Bash で env を実行して変数 ACC_LOCATION を見つけるか、PowerShell から $env:ACC_LOCATION を実行します。 ファイル共有には、$HOME ディレクトリの永続化に使用できる 5 GB のイメージが割り当てられます。

Cloud Shell マシンは、次の各リージョンに存在します。

領域 リージョン
アメリカ 米国東部、米国中南部、米国西部
ヨーロッパ 北ヨーロッパ、西ヨーロッパ
アジア太平洋 インド中部、東南アジア

お客様は、保存データを特定のリージョンに格納するという要件がない限り、プライマリ リージョンを選択する必要があります。 このような要件がある場合は、セカンダリ ストレージ リージョンを使用する必要があります。

セカンダリ ストレージ リージョン

セカンダリ ストレージ リージョンが使用される場合、関連付けられている Azure ストレージ アカウントの配置場所は、マウント先の Cloud Shell マシンとは別のリージョンになります。 たとえば、自分のストレージ アカウントをカナダ東部 (セカンダリ リージョン) に配置するように設定できますが、お使いの Cloud Shell マシンは依然としてプライマリ リージョンにあります。 保存データはカナダにありますが、処理は北米で行われます。

Note

セカンダリ リージョンが使用される場合、Cloud Shell のファイル アクセスと起動時間が遅くなる可能性があります。

ユーザーは、PowerShell で (Get-CloudDrive | Get-AzStorageAccount).Location を実行して、ファイル共有の場所を確認できます。

Azure リソース ポリシーによるリソース作成の制限

Cloud Shell で作成したストレージ アカウントは ms-resource-usage:azure-cloud-shell でタグ付けされます。 Cloud Shell からストレージ アカウントを作成できないようにするには、この固有のタグによってトリガーされるタグの Azure リソース ポリシーを作成します。

Cloud Shell のストレージのしくみ

Cloud Shell は、次の両方の方法を使用してファイルを永続化します。

  • $HOME ディレクトリのディスク イメージを作成してディレクトリ内のすべてのコンテンツを永続化します。 このディスク イメージは、指定されたファイル共有の fileshare.storage.windows.net/fileshare/.cloudconsole/acc_<User>.imgacc_<User>.img として保存され、変更が自動的に反映されます。
  • ファイル共有を直接操作できるように、指定されたファイル共有を $HOME ディレクトリに clouddrive としてマウントします。 /Home/<User>/clouddrivefileshare.storage.windows.net/fileshare にマッピングされます。

Note

SSH キーなど、$HOME ディレクトリ内のすべてのファイルが、マウントされたファイル共有に格納されたユーザー ディスク イメージに永続化されます。 $HOME ディレクトリおよびマウントされたファイル共有への情報の保存時に、ベスト プラクティスを適用してください。

clouddrive コマンド

clouddrive コマンドを使用する

Cloud Shell では、clouddrive というコマンドを実行できます。このコマンドを使用すると、Cloud Shell にマウントされているファイル共有を手動で更新できます。

bash で clouddrive コマンドを実行しているスクリーンショット。

clouddrive の一覧取得

clouddrive としてマウントされているファイル共有を検出するには、df コマンドを実行します。

clouddrive へのファイル パスの URL に、お使いのストレージ アカウント名とファイル共有が表示されます。 たとえば、//storageaccountname.file.core.windows.net/filesharename のように指定します。

justin@Azure:~$ df
Filesystem                                          1K-blocks   Used  Available Use% Mounted on
overlay                                             29711408 5577940   24117084  19% /
tmpfs                                                 986716       0     986716   0% /dev
tmpfs                                                 986716       0     986716   0% /sys/fs/cgroup
/dev/sda1                                           29711408 5577940   24117084  19% /etc/hosts
shm                                                    65536       0      65536   0% /dev/shm
//mystoragename.file.core.windows.net/fileshareName 5368709120    64 5368709056   1% /home/justin/clouddrive

新しい clouddrive のマウント

手動マウントの前提条件

clouddrive mount コマンドを使用して、Cloud Shell と関連付けられているファイル共有を更新することができます。

既存のファイル共有をマウントする場合、ストレージ アカウントは選択した Cloud Shell リージョンにある必要があります。 場所を取得するには、env を実行し、ACC_LOCATION をチェックします。

clouddrive mount コマンド

Note

新しいファイル共有をマウントすると、新しいユーザー イメージが $HOME ディレクトリ用に作成されます。 前回の $HOME イメージは、前のファイル共有に保持されます。

次のパラメーターを指定して clouddrive mount コマンドを実行します。

clouddrive mount -s mySubscription -g myRG -n storageAccountName -f fileShareName

詳細情報を表示するには、次のように clouddrive mount -h を実行します。

bash で clouddrive マウント コマンドを実行しているスクリーンショット。

clouddrive のマウント解除

Cloud Shell にマウントされたファイル共有は、いつでもマウントを解除することができます。 Cloud Shell ではマウントされたファイル共有を使う必要があるため、次回のセッション時に、Cloud Shell により別のファイル共有を作成してマウントするように求められます。

  1. clouddrive unmount を実行します。
  2. プロンプトに同意して確定します。

マウントされていないファイル共有は、手動で削除するまで存在し続けます。 マウントを解除すると、Cloud Shell では後続のセッションでこのファイル共有を検索しなくなります。 詳細情報を表示するには、次のように clouddrive unmount -h を実行します。

bash で clouddrive マウント解除のコマンドを実行しているスクリーンショット。

警告

このコマンドを実行してもリソースは削除されませんが、Cloud Shell にマップされているリソース グループ、ストレージ アカウント、またはファイル共有を手動で削除すると、ファイル共有内にある $HOME ディレクトリ ディスク イメージとすべてのファイルは削除されます。 この削除操作は元に戻すことができません。

PowerShell 固有のコマンド

clouddrive Azure ファイル共有の一覧表示

Get-CloudDrive コマンドレットは、Cloud Shell の clouddrive によって現在マウントされている Azure ファイル共有の情報を取得します。

PowerShell で Get-CloudDrive コマンドを実行しているスクリーンショット。

clouddrive のマウントを解除する

Cloud Shell にマウントされた Azure ファイル共有は、いつでもマウントを解除することができます。 Dismount-CloudDrive コマンドレットは、現在のストレージ アカウントから Azure ファイル共有をマウント解除します。 clouddrive をマウント解除すると、現在のセッションが終了します。

Azure ファイル共有が削除された場合は、次回のセッション時に新しい Azure ファイル共有を作成してマウントするように求められます。

PowerShell で Dismount-CloudDrive コマンドを実行しているスクリーンショット。

Cloud Shell にローカル ファイルを転送する

clouddrive ディレクトリは、Azure Portal ストレージ ブレードと同期します。 このブレードを使用して、ファイル共有との間でローカル ファイルを移動できます。 Cloud Shell 内からファイルを更新すると、ブレードを更新するときにファイル ストレージ GUI に反映されます。

Azure portal からファイルをダウンロードする

Azure portal 内のローカル ファイルを一覧表示するスクリーンショット。

  1. Azure Portal で、マウントされているファイル共有に移動します。
  2. 対象のファイルを選択します。
  3. [ダウンロード] ボタンを選択します。

Azure Cloud Shell でファイルをダウンロードする

  1. Azure Cloud Shell セッションで、[ファイルのアップロード/ダウンロード] アイコンを選択し、[ダウンロード] オプションを選択します。

  2. [ファイルのダウンロード] ダイアログで、ダウンロードするファイルのパスを入力します。

    Cloud Shell の [ダウンロード] ダイアログ ボックスのスクリーンショット。

    $HOME フォルダーにあるファイルのみをダウンロードできます。

  3. [ダウンロード] ボタンをクリックします。

ファイルをアップロードする

Azure portal でファイルをアップロードする方法を示すスクリーンショット。

  1. マウントされているファイル共有に移動します。
  2. [アップロード] ボタンを選択します。
  3. アップロードする 1 つまたは複数のファイルを選択します。
  4. アップロードを確認します。

Cloud Shell の clouddrive ディレクトリでファイルにアクセスできるようになったことがわかります。

注意

ファイル内に関数を定義して、PowerShell コマンドレットから呼び出す必要がある場合は、ドット演算子が含まれていることが要件になります。 例: . .\MyFunctions.ps1

Azure Cloud Shell でファイルをアップロードする

  1. Azure Cloud Shell セッションで、[ファイルのアップロード/ダウンロード] アイコンを選択し、[アップロード] オプションを選択します。
  2. ブラウザーでファイル ダイアログが開きます。 アップロードするファイルを選択し、[開く] ボタンをクリックします。

ファイルは $HOME フォルダーのルートにアップロードされます。 ファイルはアップロード後に移動できます。

次のステップ