在 App Engine 彈性環境中建立 .NET 應用程式

區域 ID

REGION_ID 是 Google 根據您建立應用程式時選取的區域指派的縮寫代碼。即使部分區域 ID 看似常用國家/地區和省份代碼,但該代碼並不對應國家/地區或省份。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r。如果是 2020 年 2 月前建立的現有應用程式,網址中的區域 ID 則為選用。

進一步瞭解區域 ID。

本快速入門導覽課程說明如何建立及部署會顯示簡短訊息的應用程式。只要在 app.yaml 檔案中指定執行階段版本和作業系統,即可將本快速入門導覽課程中的範例應用程式,用於任何支援的 .NET 版本。如果您未在 app.yaml 檔案中指定執行階段版本,App Engine 預設會使用最新的可用 LTS .NET 版本。

事前準備

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. Enable the Cloud Build API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  4. Install the Google Cloud CLI.

  5. Configure the gcloud CLI to use your federated identity.

    For more information, see Sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

    gcloud init

必要的角色

如要取得完成本快速入門導覽課程所需的權限,請要求管理員授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

其他必要條件

  1. 使用您的專案將 App Engine 應用程式初始化,然後選擇地區:

    gcloud app create --project=[YOUR_PROJECT_ID]
    

    系統提示時,請選取要放置 App Engine 應用程式的區域。

  2. 在本機電腦上安裝下列項目:

    • 安裝 .NET Core SDK (LTS 版本)。

    • 如果您使用 Visual Studio,就必須安裝 2015 版或更新的版本。針對 .NET Core 1.0、1.1、2.0 和 2.1 編寫的 ASP.NET Core 應用程式,有映像檔可用。

App Engine 位置

App Engine 具有區域性,這表示執行您應用程式的基礎架構位於特定區域,並由 Google 負責管理,實現該區域內所有可用區之間的備援可用性。

選擇應用程式執行區域時,主要考量因素是滿足延遲時間、可用性或耐用性需求。原則上可以選擇距離應用程式使用者最近的區域,但也應考慮 App Engine 的可用地區,以及應用程式所用其他Google Cloud 產品和服務的位置。如果跨多個位置使用服務,可能會影響應用程式的延遲時間和定價。

應用程式的地區設定完成後即無法更改。

如果您已建立 App Engine 應用程式,可以透過下列任一方式查看其區域:

本快速入門導覽課程假設您熟悉如何使用 C# 建構網頁應用程式。

下載 Hello World 應用程式

我們已預先建立 App Engine 適用的 Hello World 應用程式,方便您快速瞭解如何在 Google Cloud部署應用程式。Hello World 應用程式與 Visual Studio 建立空白 ASP.NET Core 應用程式時建立的應用程式類似。範例應用程式會新增 app.yaml 檔案。app.yaml 檔案是 App Engine 設定檔,用於指定執行階段和其他 App Engine 設定。

  1. 將 Hello World 範例應用程式存放區複製到本機電腦。

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples
    

    您也可以下載 ZIP 檔案格式的範例,然後將檔案解壓縮。

  2. 變更為包含程式碼範例的目錄。

       cd dotnet-docs-samples/appengine/flexible/HelloWorld
    

在本機電腦上執行 Hello World

  1. 從 dotnet-docs-samples/appengine/flexible/HelloWorld/HelloWorld.Sample 目錄執行下列指令:

    dotnet restore
    dotnet run
    
  2. 在網路瀏覽器中前往 http://localhost:5000。 您可以在頁面中看到範例應用程式顯示的「Hello World」訊息。在終端機視窗中,按下 Ctrl+C 鍵退出網路伺服器。

在 App Engine 上部署並執行 Hello World

  1. 透過指令列執行 gcloud app deploy。
  2. 啟動瀏覽器,然後前往 https://PROJECT_ID.REGION_ID.r.appspot.com gcloud app browse 查看應用程式。

此時,顯示 Hello World 訊息的頁面是由在 App Engine 執行個體上運作的網路伺服器提供。

恭喜!您已將第一個 App Engine 應用程式部署至 App Engine 彈性環境!

如果在部署應用程式時發生任何錯誤,請參閱疑難排解提示。

請參閱下列各節,瞭解清除所用資源的資訊,並取得相關後續步驟的連結。

清除所用資源

如要避免產生費用,您可以刪除 Google Cloud 專案,停止對該專案中使用的所有資源計費。

  1. 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。

    前往「Manage resources」(管理資源)

  2. 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
  3. 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。

後續步驟

瞭解整個平台

您已瞭解如何開發及部署 App Engine 應用程式,現在可以探索 Google Cloud的其他功能。您已安裝 Google Cloud CLI,可透過這項工具與 Cloud SQL、Cloud Storage、Firestore 等產品互動。

瞭解 App Engine 彈性環境

以下是一些可協助您瞭解 App Engine 的主題:

Hello World 程式碼審查

Hello World 是再簡單不過的 App Engine 應用程式,只包含一項服務、只有一種版本,且所有程式碼都位於應用程式的根目錄中。本節將詳細說明應用程式的每個檔案。

Program.cs

Hello World 是簡單的 ASP.NET 應用程式:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => builder.Configuration["My:Greeting"]);

app.Run();

app.yaml

app.yaml 檔案說明應用程式的下列設定:

  • 設定 env: flex,指出應用程式使用 App Engine 彈性環境。
  • 指定應用程式使用的執行階段。

    runtime: aspnetcore
    env: flex
    
    runtime_config:
      operating_system: ubuntu22
    
    # This sample incurs costs to run on the App Engine flexible environment. 
    # The settings below are to reduce costs during testing and are not appropriate
    # for production use. For more information, see:
    # https://cloud.google.com/appengine/docs/flexible/dotnet/configuring-your-app-with-app-yaml
    manual_scaling:
      instances: 1
    resources:
      cpu: 1
      memory_gb: 0.5
      disk_size_gb: 10
    
    env_variables:
      # The __ in My__Greeting will be translated to a : by ASP.NET.
      My__Greeting: Hello AppEngine!