Go ランタイムは、ウェブサービスのコードとその依存関係をインストールしてサービスを実行する役割を果たすソフトウェア スタックです。
スタンダード環境の App Engine 用 Go ランタイムは、app.yaml
ファイルで宣言されています。
runtime: goVERSION
ここで、VERSION は Go の MAJOR
と MINOR
のバージョン番号です。たとえば、最新バージョンの Go(Go 1.22)を使用するには、122
を指定します。
サポートされているその他の Go バージョンと、Go バージョンに対応する Ubuntu のバージョンについては、ランタイム サポート スケジュールをご覧ください。
Go のバージョン
Go ランタイムでは、app.yaml
ファイルで指定されているバージョンの最新の安定版が使用されています。App Engine では、パッチ バージョンは新しいものに自動で更新されますが、メジャー バージョンの更新は自動的には行われません。
たとえば、アプリケーションをマイナー バージョン Go 1.13.1 にデプロイすると、次のデプロイでバージョン 1.13.2 に自動的に更新されますが、メジャー バージョンの Go 1.14 に自動的に更新されることはありません。
依存関係
依存関係の宣言と管理については、依存関係の指定をご覧ください。
環境変数
ランタイムは以下の環境変数を設定します。
環境変数 | 説明 |
---|---|
GAE_APPLICATION
|
App Engine アプリケーションの ID。この ID の先頭には「region code~」が付きます。たとえば、ヨーロッパでデプロイされたアプリケーションの場合は「e~」となります。 |
GAE_DEPLOYMENT_ID |
現在のデプロイの ID。 |
GAE_ENV |
App Engine の環境。standard に設定します。 |
GAE_INSTANCE |
現在サービスが実行されているインスタンスの ID。 |
GAE_MEMORY_MB |
アプリケーション プロセスで使用可能なメモリ量(MB)。 |
GAE_RUNTIME |
app.yaml ファイル内で指定したランタイム。 |
GAE_SERVICE |
app.yaml ファイル内で指定したサービス名。サービス名が指定されていない場合は、default に設定されます。 |
GAE_VERSION |
サービスの現在のバージョン ラベル。 |
GOOGLE_CLOUD_PROJECT |
アプリケーションに関連付けられた Google Cloud プロジェクト ID。 |
PORT |
HTTP リクエストを受信するポート。 |
NODE_ENV (Node.js ランタイムでのみ使用可能) |
サービスがデプロイされたとき production に設定。 |
app.yaml
ファイル内で追加の環境変数を定義できますが、上記の値は NODE_ENV
を除きオーバーライドできません。
HTTPS プロキシと転送プロキシ
App Engine は、ロードバランサにおいて HTTPS 接続を終了し、リクエストをアプリケーションに転送します。アプリケーションによっては、元のリクエストの IP とプロトコルが何か確認する必要があります。ユーザーの IP アドレスは、標準の X-Forwarded-For
ヘッダーで確認できます。この情報が必要なアプリケーションでは、プロキシを信頼するようにウェブ フレームワークを構成してください。
ファイルシステム
ランタイムは書き込み可能な /tmp
ディレクトリを持ち、それ以外のディレクトリはすべて読み取り専用です。/tmp
に書き込むとシステムメモリが消費されます。詳細については、TempDir
と TempFile
のドキュメントをご覧ください。
メタデータ サーバー
アプリケーションの各インスタンスは、App Engine メタデータ サーバーを使用してインスタンスとプロジェクトに関する情報を照会できます。
次のエンドポイントを介してメタデータ サーバーにアクセスできます。
http://metadata
http://metadata.google.internal
メタデータ サーバーに送信されるリクエストには、リクエスト ヘッダー Metadata-Flavor: Google
を挿入する必要があります。このヘッダーは、メタデータ値を取得する目的でリクエストが送信されたことを示します。
次の表に、特定のメタデータを取得するための HTTP リクエストの各エンドポイントを示します。
メタデータ エンドポイント | 説明 |
---|---|
/computeMetadata/v1/project/numeric-project-id |
プロジェクトに割り当てられているプロジェクト番号。 |
/computeMetadata/v1/project/project-id |
プロジェクトに割り当てられているプロジェクト ID。 |
/computeMetadata/v1/instance/region |
インスタンスが実行されているリージョン。 |
/computeMetadata/v1/instance/service-accounts/default/aliases |
|
/computeMetadata/v1/instance/service-accounts/default/email |
プロジェクトに割り当てられているデフォルトのサービス アカウントのメール。 |
/computeMetadata/v1/instance/service-accounts/default/ |
プロジェクトのすべてのデフォルトのサービス アカウントを一覧表示します。 |
/computeMetadata/v1/instance/service-accounts/default/scopes |
デフォルトのサービス アカウントでサポートされているすべてのスコープを一覧表示します。 |
/computeMetadata/v1/instance/service-accounts/default/token |
アプリケーションを他の Google Cloud APIs に認証させるための認証トークンを返します。 |
たとえば、プロジェクト ID を取得するには、リクエストを http://metadata.google.internal/computeMetadata/v1/project/project-id
に送信します。