.NET ランタイム

概要

.NET ランタイムは、アプリケーション コードと依存関係をインストールして実行するソフトウェア スタックです。フレキシブル ランタイムは、app.yaml ファイルで宣言されます。

runtime: aspnetcore
env: flex

フレキシブル環境のランタイムは、Docker を使用してビルドされています。

プロジェクトに app.yaml ファイルと Dockerfile が存在しない場合、Google Cloud Tools for Visual Studio はビルドの出力ディレクトリに、これらのファイルを生成します。

GKE または別の Docker ホストを使用する場合は、このイメージに基づいて、アプリケーション コードのコピーと依存関係のインストールを行う Dockerfile ファイルを作成する必要があります。例:

FROM gcr.io/google-appengine/aspnetcore:2.1
COPY . /app
WORKDIR /app
EXPOSE 8080
ENV ASPNETCORE_URLS=http://*:8080
ENTRYPOINT ["dotnet", "Metadata.dll"]

.NET コンテナのビルド用に Google が提供するベースイメージの一覧を確認します。

HTTPS プロキシと転送プロキシ

App Engine はロードバランサで HTTPS 接続を終了し、リクエストをアプリケーションに転送します。アプリケーションで X-Forwarded-Proto を調べると、元のプロトコルが HTTP か HTTPS かを確認できます。

一部のアプリケーションでは、ユーザーの IP アドレスの確認が必要になります。これは標準の X-Forwarded-For ヘッダーで使用できます。

ランタイムの拡張

フレキシブル環境の .NET ランタイムを実行すると、カスタム ランタイムを作成できます。 カスタム ランタイムは Dockerfile を介して構成されます。

必要に応じて、Dockerfile.dockerignore をカスタマイズできます。最後に、app.yamlruntime: aspnetcore の代わりに runtime: custom を指定する必要があります。詳細については、.NET ランタイムのカスタマイズをご覧ください。

環境変数

次の環境変数が、ランタイム環境によって設定されます。

環境変数 説明
GAE_INSTANCE 現在のインスタンスの名前。
GAE_MEMORY_MB アプリケーション プロセスで使用可能なメモリ量。
GAE_SERVICE アプリケーションの app.yaml ファイルで指定されたサービス名。サービス名が指定されていない場合は、default に設定されます。
GAE_VERSION 現在のアプリケーションのバージョン ラベル。
GOOGLE_CLOUD_PROJECT アプリケーションに関連付けられたプロジェクト ID。この ID は、Google Cloud Console に表示されます。
PORT HTTP リクエストを受信するポート。

appsettings.json で、追加の構成変数を設定できます。

メタデータ サーバー

アプリケーションのインスタンスは、ホスト名、外部 IP アドレス、インスタンス ID、カスタム メタデータ、サービス アカウント情報など、インスタンスに関する情報を Compute Engine メタデータ サーバーから取得します。App Engine では、インスタンスごとにカスタム メタデータを設定することはできませんが、プロジェクト単位のカスタム メタデータを設定して、App Engine インスタンスや Compute Engine インスタンスから読み取ることができます。

次のサンプル関数では、メタデータ サーバーからインスタンスの外部 IP アドレスを取得します。

var metadataClient = Google.Cloud.Metadata.V1.MetadataClient.Create();
var result = await metadataClient.GetMetadataAsync(
    "instance/network-interfaces/0/access-configs/0/external-ip");
return result.Content.ToString();