Cloud Shell の仕組み

Cloud Shell を起動すると、Debian ベースの Linux オペレーティング システムを実行するe2-small Google Compute Engine仮想マシンがプロビジョニングされます。Cloud Shell のインスタンスは、各ユーザーまたは各セッションにプロビジョニングされます。Cloud Shell セッションがアクティブである間、インスタンスは継続します。非アクティブな状態が 1 時間続くと、セッションは終了し、その VM は破棄されます。使用量の割り当てについて詳しくは、制限ガイドをご覧ください。

デフォルトの Cloud Shell エクスペリエンスでは、構成済みのエフェメラル VM が割り当てられます。使用する環境は、その VM 上で実行される Docker コンテナです。Cloud Shell インスタンスに使用するツールが含まれるように、VM の起動時に自動的に環境をカスタマイズすることもできます。

永続ディスク ストレージ

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

承認

Cloud Shell では、ブラウザへのログインに使用している Google アカウントで自動的に認証されます。つまり、アカウントで通常アクセスできる Google Cloud リソースへの完全なアクセス権が付与されます。これは、gcloud auth login を実行して Google アカウントを指定することと同じです。

事前構成された環境変数

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

ゾーンの選択

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

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

curl metadata/computeMetadata/v1/instance/zone

イメージのロールアウト

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

root ユーザー

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

使用可能なツール

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

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

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

言語サポート

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

言語 バージョン
Java JRE / JDK 1.8 と 1.11
Go 1.13
Python 2.7.13
Node.js v10.14.2
Ruby 2.6.0
PHP 7.0.33
.NET Core SDK 2.0.0 と 2.1.502
コアランタイム 2.0.0 と 2.1.6

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

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

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

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

いくつかのバイナリのバージョンが変更できなくなるというエラー メッセージは、無視してもかまいません。バージョンの変更は、Cloud Shell の仮想マシン インスタンスが終了するまで維持されます。Java 1.11 に永続的に切り替える場合は、上記の最初のコマンドを .bashrc ファイルに追加します。

ブーストモード

ブーストモードは、Cloud Shell VM の能力を、デフォルトで提供される e2-small マシンタイプから e2-medium VM インスタンスに一時的に向上させます。これは、Cloud Shell で作業を継続する際に、比較的短い間 CPU やメモリのリソースをより多く必要とする場合に便利です。

ブーストモードを有効にするには、[その他] メニュー(Cloud Shell の右上にある 3 つの点のアイコン)の下の [ブーストモードを有効にする] オプションを使います。 一度有効にすると、すべてのセッションがその後 24 時間ブーストされます。 ブーストモードを有効にすると、Cloud Shell が再起動され、すぐにセッションが終了します。 その後、新しい VM がプロビジョニングされますが、これには数分かかることがあります。ホーム ディレクトリのデータはそのまま残りますが、実行中のすべてのプロセスは失われます。

ブーストモードには、通常の使用制限が適用されます。 現在のところ、この機能は実験的なものであり、今後制限が追加される可能性があります。

セーフモード

.bashrc ファイルまたは .tmux.conf ファイルに問題があると、Cloud Shell は接続直後に終了します。この問題を解決するには、URL に cloudshellsafemode=true を追加して Cloud Shell をセーフモードで開きます。これによって、Cloud Shell が再起動して root としてログインできるため、ファイル内のあらゆる問題を解決できます。

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