Cloud Shell の仕組み

Cloud Shell は、Debian ベースの Linux オペレーティング システムを実行している Compute Engine 仮想マシンを一時的な使用のためにプロビジョニングします。この仮想マシンは Google Cloud によって所有、管理されているため、どの Google Cloud プロジェクトにも表示されません。

Cloud Shell のインスタンスは、各ユーザーまたは各セッションにプロビジョニングされます。Cloud Shell セッションがアクティブである間、インスタンスは継続します。非アクティブな状態が 1 時間続くと、セッションは終了し、その VM は破棄されます。使用量の割り当てについて詳しくは、制限ガイドをご覧ください。

デフォルトの Cloud Shell エクスペリエンスでは、事前構成済みの一時的な VM が割り当てられ、作業環境はその VM 上で動作する Docker コンテナになります。VM の起動時に自動的に環境をカスタマイズし、Cloud Shell インスタンスに好みのツールが含まれるようにすることもできます。

永続ディスク ストレージ

Cloud Shell は、仮想マシン インスタンスの $HOME ディレクトリとしてマウントされた 5 GB の無料の永続ディスク ストレージをプロビジョニングします。このストレージは、ユーザーごとに割り当てられ、複数のプロジェクトを横断して使用することができます。インスタンスとは異なり、このストレージは非アクティブな状態であっても、タイムアウトすることはありません。インストールされたソフトウェア、スクリプト、.bashrc.vimrc のようなユーザー構成ファイルなど、ホーム ディレクトリに保存されているファイルはすべて、セッションを横断して維持されます。$HOME ディレクトリは、ユーザー専用であり、他のユーザーがアクセスすることはできません。

ストレージの永続性をより細かく制御するには、Cloud Workstations を使用します。

Cloud Shell には、永続ディスク ストレージがない Cloud Shell エクスペリエンスである一時的ログインモードも用意されています。一時的ログインモードでは、起動時間は短くなりますが、セッションで作成したファイルはすべてセッション終了時に失われます。

承認

Cloud Shell で初めて Google Cloud API 呼び出しを行うか、認証情報を必要とするコマンドライン ツール(Google Cloud CLI など)を使用する場合は、Cloud Shell で 承認が促されます。[認可] をクリックして、呼び出しを行うために使用する認証情報を、ツールで使用できるようにします。

詳細については、Cloud Shell での認可をご覧ください。

事前構成された環境変数

Cloud Shell を起動すると、Google Cloud コンソール内のアクティブなプロジェクトが Cloud Shell 内の gcloud 構成に伝播され、すぐに使用できるようになります。GOOGLE_CLOUD_PROJECT は、プロジェクト ID を定義するアプリケーションのデフォルト認証情報ライブラリ サポートで使用される環境変数で、Google Cloud コンソール内のアクティブなプロジェクトを指定するようにも設定されます。環境変数 WEB_HOST は、環境に HTTPS リクエストを送信できる Cloud Shell VM のホスト名を指します。

ゾーンの選択

Cloud Shell は、複数の Google Cloudのリージョンにまたがってグローバルに分散しています。最初に Cloud Shell に接続したときに、利用可能なリージョンの中で最も近いところが自動的に割り当てられます。自分でリージョンを選択することはできません。Cloud Shell が選んだリージョンが最も近いリージョンでない場合、Cloud Shell は Cloud Shell VM が使用されていないときに Cloud Shell VM をより近いリージョンに移行しようとします。

現在のリージョンを表示するには、Cloud Shell セッションから次のコマンドを実行します。

curl metadata/computeMetadata/v1/instance/zone

イメージのロールアウト

Cloud Shell コンテナ イメージは毎週更新され、あらかじめパッケージ化されたツールが最新の状態に保たれます。つまり、Cloud Shell には、常に gcloud CLI、Docker、およびその他のユーティリティの最新バージョンが付属しています。

root ユーザー

Cloud Shell セッションを設定すると、メールアドレスに基づくユーザー名が付いた通常の Unix ユーザー アカウントが付与されます。このアクセス権があれば、割り当てられた VM に対して完全な root 権限を持ち、必要に応じて sudo コマンドを実行することもできます。

使用可能なツール

Cloud Shell の仮想マシン インスタンスには、次のツールがプレインストールされています。

タイプ ツール
Linux シェル インタープリタ bash
sh
Linux ユーティリティ Debian 用の標準的なシステム ユーティリティ
gcloud CLI とツール App Engine SDK
Google Cloud CLI (gcloud CLI を含む)
gsutil(Cloud Storage の場合)
テキスト エディタ Emacs
Vim
Nano
ビルドとパッケージのためのツール Gradle
Helm
Make
Maven
Bazel
npm
nvm
pip
Composer
ソース コントロール ツール Git
Mercurial
追加ツール Docker
iPython
MySQL クライアント
gRPC コンパイラ
TensorFlow
Terraform

仮想マシン インスタンスに追加のソフトウェア パッケージをインストールできますが、$HOME ディレクトリにソフトウェアをインストールするか、カスタム環境を作成しない限り、インスタンスの終了後にインストールは維持されません。

言語サポート

Cloud Shell の仮想マシン インスタンスには、次の言語サポートがプレインストールされています。

言語 バージョン
Java JRE / JDK 17.0.6(OpenJDK)
Go 1.20.4
Python 3.9.2
Node.js v18.12.1
Ruby 2.7.8
PHP 7.4.33
.NET Core SDKs 2.1、3.1、5.0、6.0
コアランタイム 2.1.30、3.1.32、5.0.17、6.0.16

Java 環境のデフォルトのバージョンは、11 です。使用中の Cloud Shell のセッションを変更し、JRE と JDK のバージョン 1.8 を使うには、Cloud Shell コマンド プロンプトで次のように入力します。

sudo update-java-alternatives -s java-1.8.0-openjdk-amd64 && export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

11 に戻すには、次のように入力します。

sudo update-java-alternatives -s java-1.11.0-openjdk-amd64 && export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/jre

セーフモード

.bashrc ファイルまたは .tmux.conf ファイルに問題があると、Cloud Shell は接続直後に終了します。セーフモードにより、Cloud Shell インスタンスを再起動して root としてログインし、ファイルの問題を修正できます。

Cloud Shell をセーフモードで開くには:

  • cloudshellsafemode=true を URL に追加します。
  • Cloud Shell で [] をクリックし、[セーフモード] をクリックしてから [再起動] をクリックします。

ホーム ディレクトリ内のすべてのファイルを完全に削除し、Cloud Shell ホーム ディレクトリをクリーンな状態に復元するには、Cloud Shell VM をリセットします。