.NET ランタイムは、アプリケーションのコードと依存関係をインストールして、フレキシブル環境でそのアプリケーションを実行する役割を果たすソフトウェア スタックです。
.NET のバージョン
.NET 8 は Buildpack を使用してビルドされます。サポートされている .NET のバージョンと、それに対応する Ubuntu のバージョンの完全なリストについては、ランタイム サポート スケジュールをご覧ください。
サポート対象の .NET バージョンを使用するには、次のことを行う必要があります。
使用する .NET バージョンでプロジェクト ファイルを更新します。
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup> <ItemGroup> <None Update="app.yaml"> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </None> </ItemGroup> </Project>
詳細については、ASP.NET Core 3.1 から 6.0 に移行するをご覧ください。
gcloud CLI バージョン 420.0.0 以降をインストールします。CLI ツールを更新するには、gcloud components update コマンドを実行します。インストールされているバージョンを表示するには、gcloud version コマンドを実行します。
app.yaml
ファイルでoperating_system
設定を指定します。runtime: aspnetcore env: flex runtime_config: operating_system: "ubuntu22"
必要に応じて、
app.yaml
ファイルにruntime_version
設定を含めると、ランタイム バージョンを指定できます。runtime_version
の設定が指定されていない場合、App Engine はデフォルトで使用可能な最新の LTS .NET バージョンを使用します。たとえば、Ubuntu 22 で .NET 8 を指定する場合、app.yaml
ファイルは次のようになります。runtime: aspnetcore env: flex runtime_config: runtime_version: "8" operating_system: "ubuntu22"
以前のランタイム バージョン
特定の .NET SDK バージョンをターゲットにするには、プロジェクト ファイルを更新します。詳細については、ASP.NET Core 3.1 から 6.0 に移行するをご覧ください。
GKE や他の Docker ホストを使用する場合は、アプリケーション コードをコピーして依存関係をインストールする Dockerfile を作成する必要があります。詳細については、カスタム ランタイムをご覧ください。
.NET アプリをデプロイするには、アプリが存在するルート ディレクトリから次のコマンドを実行します。
dotnet restore
dotnet publish -c Release
gcloud app deploy
他の .NET ランタイムのサポート
サポート対象外の .NET バージョンを使用する必要がある場合は、カスタム ランタイムを作成し、必要な .NET バージョンを含む有効なベースイメージを選択します。
Google 提供のベースイメージまたは Docker .NET ベースイメージについては、カスタム ランタイムのビルドをご覧ください。
HTTPS プロキシと転送プロキシ
App Engine はロードバランサで HTTPS 接続を終了し、リクエストをアプリケーションに転送します。アプリケーションで X-Forwarded-Proto
を調べると、元のプロトコルが HTTP か HTTPS かを確認できます。
一部のアプリケーションでは、ユーザーの IP アドレスの確認が必要になります。これは標準の X-Forwarded-For
ヘッダーで使用できます。
ランタイムの拡張
フレキシブル環境の .NET ランタイムを実行すると、カスタム ランタイムを作成できます。
カスタム ランタイムは Dockerfile
を介して構成されます。
必要に応じて、Dockerfile
と .dockerignore
をカスタマイズできます。最後に、app.yaml
で runtime: aspnetcore
の代わりに runtime: custom
を指定する必要があります。詳細については、.NET ランタイムのカスタマイズをご覧ください。
環境変数
次の環境変数が、ランタイム環境によって設定されます。
環境変数 | 説明 |
---|---|
GAE_INSTANCE |
現在のインスタンスの名前。 |
GAE_MEMORY_MB |
アプリケーション プロセスで使用可能なメモリ量。 |
GAE_SERVICE |
アプリケーションの app.yaml ファイルで指定されたサービス名。サービス名が指定されていない場合は、default に設定されます。 |
GAE_VERSION |
現在のアプリケーションのバージョン ラベル。 |
GOOGLE_CLOUD_PROJECT |
アプリケーションに関連付けられたプロジェクト ID。この ID は、Google Cloud コンソールに表示されます。 |
PORT |
HTTP リクエストを受信するポート。 |
appsettings.json
で、追加の構成変数を設定できます。
メタデータ サーバー
アプリケーションのインスタンスは、ホスト名、外部 IP アドレス、インスタンス ID、カスタム メタデータ、サービス アカウント情報など、インスタンスに関する情報を Compute Engine メタデータ サーバーから取得します。App Engine では、インスタンスごとにカスタム メタデータを設定することはできませんが、プロジェクト単位のカスタム メタデータを設定して、App Engine インスタンスや Compute Engine インスタンスから読み取ることができます。
次のサンプル関数では、メタデータ サーバーからインスタンスの外部 IP アドレスを取得します。