在上部署 ASP.NET Web 表单应用程序 AWS - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在上部署 ASP.NET Web 表单应用程序 AWS

管理 NuGet 软件包

NuGet 是一个包含和管理.NET 代码包的存储库。应用程序可以安装两种类型的 NuGet 软件包:来自 nuget.org 的公开可用软件包或发布到内部存储库的定制软件包。从 nuget.org 中提取软件包要求构建应用程序的实例具有出站互联网访问权限。对于某些用户来说,由于安全问题或网络限制,可能不希望访问互联网。

要解决此问题,您可以配置托管工件 (NuGet) 存储库,以便从外部来源(例如 nuget.org)下载软件包。您可以将 AWS CodeArtifact(一种完全托管的工件存储库服务)用作 NuGet 包存储库。有关更多信息,请参阅 AWS 博客文章 Using w NuGet ith AWS CodeArtifact。其他受欢迎的第三方选项包括 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 配合使用

构建应用程序

将旧版 ASP.NET Web Forms 应用程序迁移到时 AWS,可以继续使用 Microsoft 构建引擎 (MSBuild) 作为构建应用程序的中心工具。 MSBuild 通常与 Visual Studio 捆绑在一起,但你无需安装 Visual Studio 即可从微软下载和使用独立 MSBuild 的可执行文件。当你在其上构建 Web 表单应用程序时,这种方法特别有用 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 博客文章使用和为 ASP.NET 4.x 创建 CI/CD 管道。 AWS CodePipeline AWS Elastic Beanstalk

部署应用程序

构建 Web Forms 应用程序后,将构件部署到上的目标环境 AWS。在大多数情况下,您可以将构建的项目压缩并上传到亚马逊简单存储服务 (Amazon S3) 存储桶,以便于分发和部署。有关说明,请参阅 Amazon S3 文档

将项目部署到 Amazon EC2 实例有两个主要选项:手动和自动。

手动部署

此选项涉及使用 EC2 实例用户数据来包含将执行以下任务的脚本:

  • 安装互联网信息服务 (IIS)

  • 从 Amazon S3 存储桶中提取并解压缩构建工件

  • 创建和配置 IIS 应用程序

尽管这种方法提供了灵活性,但它需要手动干预,并且随着应用程序的扩展或频繁的更新,管理起来可能会变得困难。

自动部署

推荐的方法是AWS CodeDeploy用于自动化和可重复的部署。 CodeDeploy 可与其他应用程序 AWS 服务 (例如 AWS CodeBuild 和)无缝集成 AWS CodePipeline,因此您可以创建完整的CI/CD pipeline for your ASP.NET Web Forms application. With CodeDeploy, you can define deployment strategies such as rolling and blue/green更新,以确保最大限度地减少停机时间,并在应用程序版本之间实现平稳过渡。

有关使用、和为 ASP.NET Web Forms 应用程序设置 CI/CD 管道的更多信息和示例 CodePipeline CodeBuild CodeDeploy,请参阅 AWS 博客文章使用和为 ASP.NET 4.x 创建 CI/CD 管道。 AWS CodePipeline AWS Elastic Beanstalk

通过使用 AWS 服务 诸如 CodeBuild CodeDeploy CodePipeline、和,您可以简化已迁移的 ASP.NET Web Forms 应用程序的构建和部署流程,并确保向 AWS 基础架构部署一致且可靠。

有关自动部署的更多信息,请参阅 re: Post 中的 AWS 博客文章使用为容器化 ASP.NET 应用程序生成 CI/CD 管道, AWS App2Container以及有关为传统.NET Framework 应用程序构建 CI/CD 管道的信息。 AWS