在 上部署 ASP.NET Web Forms 應用程式 AWS - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 上部署 ASP.NET Web Forms 應用程式 AWS

管理 NuGet 套件

NuGet 是包含和管理 .NET 程式碼套件的儲存庫。應用程式可以安裝兩種類型的 NuGet 套件:來自 nuget.org 的公開可用套件或發佈至內部儲存庫的自訂建置套件。從 nuget.org 提取套件需要建置應用程式的執行個體具有傳出網際網路存取權。對於某些使用者,由於安全問題或網路限制,可能不需要網際網路存取。

若要解決此問題,您可以佈建受管成品 (NuGet) 儲存庫,從外部來源下載套件,例如 nuget.org。您可以使用 AWS CodeArtifact做為 NuGet 套件儲存庫,這是全受管成品儲存庫服務。如需詳細資訊,請參閱使用 NuGet 搭配 AWS CodeArtifact 的 AWS 部落格文章。其他熱門的第三方選項包括 NexusArtifactory。此方法可讓您在私有儲存庫中快取公開可用的套件,並減少在建置過程中直接存取網際網路的需求。如果您想要進一步控制可下載的套件,您可以停用外部存取。在這種情況下,開發人員必須同時將自己的 NuGet 套件和他們需要的任何其他第三方套件推送至儲存庫。

若要將您的應用程式設定為使用 NuGet 套件儲存庫,請在專案根目錄或解決方案根目錄中建立 NuGet.config 檔案。此檔案指定 NuGet 在還原套件時應使用的套件來源。下列範例示範如何設定 NuGet.config 檔案以使用 CodeArtifact:

<?xml version="1.0" encoding="utf-8"?> <configuration> <packageRestore> <!-- Allow NuGet to download missing packages --> <add key="enabled" value="True" /> <!-- Automatically check for missing packages during build in Visual Studio --> <add key="automatic" value="True" /> </packageRestore> <packageSources> <add key="MyRepo" value="https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/nuget/my_repo/v3/index.json" /> </packageSources> </configuration>

在此範例中,將 取代https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/nuget/my_repo/v3/index.json為 CodeArtifact 儲存庫的實際 URL。您可以在 CodeArtifact 主控台或執行 aws codeartifact get-repository-endpoint命令找到此 URL。

重要
  • 設定 NuGet.config 檔案會影響相同目錄結構中的所有專案。如果您想要將不同的套件來源用於不同的專案,請為每個專案或解決方案建立個別NuGet.config的檔案。

  • 確定建置應用程式的執行個體具有必要的許可和網路存取,以連線至 NuGet 套件儲存庫 (例如 CodeArtifact)。如需取得登入資料的詳細資訊,請參閱 CodeArtifact 文件中的搭配使用 CodeArtifact 與 nuget 或 dotnet CLI。 CodeArtifact

建置應用程式

當您將舊版 ASP.NET Web Forms 應用程式遷移至 時 AWS,您會繼續使用 Microsoft Build Engine (MSBuild) 做為建置應用程式的中心工具。MSBuild 通常會與 Visual Studio 綁定,但您可以從 Microsoft 下載並使用獨立的 MSBuild 可執行檔,而無需安裝 Visual Studio。當您在其中建置 Web Forms 應用程式時 AWS,此方法特別有用,您可以在安裝 MSBuild 的情況下使用 Windows 執行個體或 Docker 容器。

建置 ASP.NET Web Forms 應用程式需要兩個主要步驟:還原 NuGet 套件和建置應用程式。如何執行這些步驟的詳細資訊可能會因您選擇使用的 CI/CD 工具而有所不同。例如,如果您使用 AWS CodeBuild,建置程序會在 Docker 容器內執行。

還原 NuGet 套件

建置應用程式之前,您必須還原專案所需的 NuGet 套件。您可以使用在專案根目錄中執行的 MSBuild 或 NuGet 命令列界面 (CLI) 命令來執行此操作。

使用 MSBuild:

msbuild -t:restore

使用 NuGet CLI:

nuget restore

使用 MSBuild 建置

還原 NuGet 套件之後,您可以繼續執行產生部署成品的主建置命令。命令通常會指定專案檔案、建置組態 (例如 Release),以及建置成品的輸出目錄。

msbuild <ProjectName>.csproj /p:Configuration=Release /p:OutDir=<OutDir>

如需 MSBuild 選項的詳細資訊,請參閱 Microsoft 文件中的 MSBuild 命令列參考

如需使用 建置 ASP.NET 應用程式的詳細資訊 AWS CodeBuild,請參閱 AWS 部落格文章使用 AWS CodePipeline 和 為 ASP.NET 4.x 建立 CI/CD 管道 AWS Elastic Beanstalk

部署應用程式

建置 Web Forms 應用程式之後,您可以將成品部署到目標環境 AWS。在大多數情況下,您可以將建置的成品壓縮並上傳至 Amazon Simple Storage Service (Amazon S3) 儲存貯體,以便於分發和部署。如需說明,請參閱 Amazon S3 文件

有兩種主要選項可將成品部署到 Amazon EC2 執行個體:手動和自動。

手動部署

此選項涉及使用 EC2 執行個體使用者資料來包含將執行下列任務的指令碼:

  • 安裝網際網路資訊服務 (IIS)

  • 從 Amazon S3 儲存貯體提取和解壓縮建置成品

  • 建立和設定 IIS 應用程式

雖然這種方法提供靈活性,但它需要手動介入,並且隨著應用程式擴展或頻繁更新而變得難以管理。

自動化部署

建議的方法為使用 AWS CodeDeploy 進行自動化和可重複的部署。CodeDeploy 與其他 AWS 服務 如 AWS CodeBuild 和 無縫整合 AWS CodePipeline,因此您可以為 ASP.NET Web Forms 應用程式建立完整的 CI/CD 管道。使用 CodeDeploy,您可以定義部署策略,例如滾動和藍/綠更新,以確保最短的停機時間和應用程式版本之間的順暢轉換。

如需使用 CodePipeline、CodeBuild 和 CodeDeploy 為 ASP.NET Web Forms 應用程式設定 CI/CD 管道的詳細資訊和範例,請參閱 AWS 部落格文章使用 AWS CodePipeline 和 為 ASP.NET 4.x 建立 CI/CD 管道。 AWS Elastic Beanstalk

透過使用 CodeBuild、CodeDeploy 和 CodePipeline AWS 服務 等 ,您可以簡化遷移 ASP.NET Web Forms 應用程式的建置和部署程序,並確保 AWS 基礎設施的部署一致且可靠。

如需自動化部署的詳細資訊,請參閱 AWS 部落格文章使用 產生容器化 ASP.NET 應用程式的 CI/CD 管道 AWS App2Container,以及在 AWS re:Post 中為舊版 .NET Framework 應用程式建置 CI/CD 管道的相關資訊。