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

初めて Cloud Shell を起動すると、ストレージ オプションを選択するようにダイアログが表示されます。 Cloud Shell を使用するたびに使用できるファイルを保存したい場合は、新規に作成するか、既存のストレージ リソースを選択する必要があります。 Cloud Shell では Microsoft Azure Files 共有を使用してセッション間でファイルを維持します。

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

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

  • $HOME ディレクトリの内容を格納するディスク イメージを作成します。 ディスク イメージは https://storageaccountname.file.core.windows.net/filesharename/.cloudconsole/acc_user.img に保存されます。 Cloud Shell によって、このディスク イメージ上の変更が自動的に同期されます。
  • ファイル共有を $HOME ディレクトリに clouddrive としてマウントします。 /home/<User>/clouddrive パスは storageaccountname.file.core.windows.net/filesharename にマッピングされます。

注記

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

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

Cloud Shellは、複数の主要リージョンでセッション マシンを運用しています。 永続ファイルは、以下の表に示されているように、プライマリリージョンまたはサポートされたセカンダリリージョンにあるストレージアカウントに保存することができます。

セッションは通常、ストレージアカウントに関連付けられた主要なリージョンで動作します。 二次ストレージ リージョンを使用する場合、またはエフェメラル セッションを使用する場合、Cloud Shell は最も近い主要リージョンを選択します。 配置は利用可能な容量によって異なるため、特定の地域が保証されているわけではありません。

ファイルはストレージアカウントのリージョン内で静止状態のままですが、セッションが実行される主なリージョンで処理されます。 例えば、カナダ東部に保存されたファイルはカナダでは静止状態のままですが、セッションが米国のプライマリリージョンで実行されている場合は米国で処理されます。

ストレージアカウントのプライマリージョンを選んでください。保存データを別のリージョンに保存する必要がある場合を除きます。 セカンダリストレージ領域を使うと、ファイルアクセスやCloud Shellの起動が遅くなることがあります。

現在のCloud Shellマシンの地域を調べるには、Bashでecho "$ACC_LOCATION"を実行し、PowerShellで$env:ACC_LOCATIONを実行してください。

プライマリ リージョン

Area 地域
アメリカ合衆国 イーストUS 2、サウスセントラルUS、ウエストセントラルUS、ウエストUS 2
ヨーロッパ フランス中央、ドイツ西中部、スウェーデン中央、西ヨーロッパ
アジア太平洋 オーストラリア東部、オーストラリア南東部、中央インド、東アジア、南インド、東南アジア
Azure Government アメリカ合衆国アリゾナ州政府、アメリカ合衆国バージニア州政府

二次記憶領域

Area 地域
南北アメリカ ブラジル南部、カナダ中部、カナダ東部、米国中部、米国東部、メキシコ中部、米国中北部、米国西部、米国西部 3
ヨーロッパ 北ヨーロッパ、ノルウェー東部、スペイン中部、スイス北部、イギリス南部、イギリス西部
アジア太平洋 オーストラリア中央、日本東部、日本西部、Jio インド西部、韓国中央部、韓国南部、西インド
中東およびアフリカ カタール中央部、南アフリカ北部、アラブ首長国連邦北部
Azure Government US Gov テキサス

ストレージ アクセスの保護

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

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

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

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

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

Cloud Shell で作成されたストレージ アカウントは ms-resource-usage:azure-cloud-shell でタグ付けされます。 ユーザーが Cloud Shell でストレージ アカウントを作成するのを禁止する必要がある場合は、この特定のタグによって適用される Azure リソース ポリシーを作成します。

Cloud Shell ストレージの管理

新しい clouddrive のマウント

前に Cloud Shell でエフェメラル セッションの使用を選んだ場合は、Cloud Shell で [設定]>[ユーザー設定のリセット] を選んで、ユーザー設定をリセットする必要があります。 手順に従って、既存のストレージ アカウントまたは新しいストレージ アカウントをマウントします。

注記

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

clouddrive のマウント解除

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

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

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

Command
  clouddrive unmount: Unmount an Azure file share from Cloud Shell.

    Unmount enables unmounting and disassociating a file share from Cloud Shell.
    All current sessions will be terminated. Machine state and non-persisted files will be lost.
    You will be prompted to create and mount a new file share on your next session.
    Your previously mounted file share will continue to exist.

    Note: This command does not unmount storage if the session is Ephemeral.

Arguments
  None

警告

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

PowerShell コマンドを使う

現在のファイル共有リソースに関する情報を取得する

PowerShell の Get-CloudDrive コマンドを使用して、ファイル共有をバッキングするリソースに関する情報を取得します。

PS /home/user> Get-CloudDrive

FileShareName      : cs-user-microsoft-com-xxxxxxxxxxxxxxx
FileSharePath      : //cs7xxxxxxxxxxxxxxx.file.core.windows.net/cs-user-microsoft-com-xxxxxxxxxxxxxxx
MountPoint         : /home/user/clouddrive
Name               : cs7xxxxxxxxxxxxxxx
ResourceGroupName  : cloud-shell-storage-southcentralus
StorageAccountName : cs7xxxxxxxxxxxxxxx
SubscriptionId     : aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e

ファイル共有のマウント解除

Dismount-CloudDrive コマンドレットを使用すると、Cloud Shell のファイル共有をいつでもマウント解除できます。 clouddrive をマウント解除すると、現在のセッションが終了します。

Dismount-CloudDrive
Do you want to continue
Dismounting clouddrive will terminate your current session. You will be prompted to create and
mount a new file share on your next session
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):

次のステップ