Go ランタイムは、アプリケーションのコードと依存関係をインストールして、フレキシブル環境でそのアプリケーションを実行する役割を果たすソフトウェア スタックです。
Go のバージョン
Go 1.23(プレビュー版)は buildpacks を使用します。サポートされている Go のバージョンと、それに対応する Ubuntu のバージョンの完全なリストについては、ランタイム サポート スケジュールをご覧ください。
サポート対象の Go バージョンを使用するには、次のことを行う必要があります。
gcloud CLI
バージョン 420.0.0 以降をインストールします。CLI ツールを更新するには、gcloud components update
コマンドを実行します。インストールされているバージョンを表示するには、gcloud version
コマンドを実行します。Go では、依存関係の管理に
go.mod
ファイルを使用することをおすすめしています。デプロイ中に依存関係をインストールするには、app.yaml
ファイルと同じフォルダにgo.mod
ファイルを置きます。たとえば、
go.mod
を使用するアプリのフォルダ構造は、次のように表現される必要があります。<application-root>/ --> app.yaml --> go.mod --> Other source files used in your application.
app.yaml
ファイルにruntime_config
とoperating_system
の設定を追加して、オペレーティング システムを指定します。必要に応じて、
app.yaml
にruntime_version
設定を含めると、ランタイム バージョンを指定できます。runtime_version
の設定が指定されていない場合は、デフォルトで最新の Go バージョンが使用されます。
例
Ubuntu 22 で Go 1.23(プレビュー版)を指定するには、次のようにします。
runtime: go env: flex runtime_config: operating_system: "ubuntu22" runtime_version: "1.23"
Ubuntu 22 でサポートされている最新の Go バージョンを指定するには、次の世にします。
runtime: go env: flex runtime_config: operating_system: "ubuntu22"
アプリは、app.yaml
ファイルで指定されているバージョンの最新の安定版を使用します。App Engine では、自動で新しいパッチ リビジョンに更新されますが、メジャー バージョンの更新は自動的には行われません。
たとえば、アプリケーションが Go 1.18.10 でデプロイされたとすると、その後、Go 1.18.11 には自動的に更新されますが、自動的にメジャー バージョン Go 1.19 へ更新されることはありません。
app.yaml
ファイルで Go 1.23(プレビュー版)を選択すると、Go 1.23(プレビュー版)の最新の patch
バージョンが使用可能になります。
runtime: go
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: "1.23"
詳細については、app.yaml
のリファレンスをご覧ください。
以前のランタイム バージョン
Go バージョン 1.15 以前を使用するには、app.yaml
ファイルの runtime
設定にバージョンを go1.x
形式で指定します。例:
runtime: go1.14 env: flex
バージョンが指定されていない場合は、go1.11
のデフォルト バージョンが自動的に選択されます。
アプリは、app.yaml
ファイルで指定されているバージョンの最新の安定版を使用します。App Engine では、自動で新しいパッチ リビジョンに更新されますが、メジャー バージョンの更新は自動的には行われません。
たとえば、アプリケーションが Go 1.14.10 でデプロイされたとすると、その後、Go 1.14.11 には自動的に更新されますが、自動的にメジャー バージョン Go 1.15 へ更新されることはありません。
app.yaml
ファイルで Go ランタイム バージョン go1.15
を選択すると、1.15 の最新バージョン(1.15.15 など)が使用可能になります。
runtime: go1.15 env: flex
他の Go ランタイムのサポート
サポート対象外の Go バージョンを使用する必要がある場合は、カスタム ランタイムを作成し、必要な Go バージョンを含む有効なベースイメージを選択します。
Google 提供のベースイメージまたは Docker Go ベースイメージについては、カスタム ランタイムのビルドをご覧ください。
パッケージをインポートする
アプリを App Engine にデプロイすると、コードがコンパイルされます。デプロイ コマンドを実行すると、まず、アプリの依存関係がローカルの GOPATH
から収集され、すべてビルドサーバーに送信されます。サードパーティのライブラリなど、依存関係がない場合はビルドに失敗します。
ビルドの失敗を回避し、アプリのすべての依存関係がコードと一緒にデプロイされるようにするには、デプロイ前にアプリをローカルでテストする必要があります。
ランタイムの拡張
Go ランタイムを拡張してカスタマイズする方法については、GitHub の Go ランタイム ビルダーをご覧ください。
メタデータ サーバー
アプリケーションのインスタンスは、ホスト名、外部 IP アドレス、インスタンス ID、カスタム メタデータ、サービス アカウント情報など、インスタンスに関する情報を Compute Engine メタデータ サーバーからを取得します。App Engine では、インスタンスごとにカスタム メタデータを設定することはできませんが、プロジェクト単位のカスタム メタデータを設定して、App Engine インスタンスや Compute Engine インスタンスから読み取ることができます。
cloud.google.com/go/compute/metadata
パッケージを使用してメタデータ サーバーにアクセスします。