での ASP.NET Web Forms アプリケーションのデプロイ AWS - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

での ASP.NET Web Forms アプリケーションのデプロイ AWS

NuGet パッケージの管理

NuGet は、.NET のコードパッケージを格納して管理するリポジトリです。アプリケーションには、nuget.org から公開されているパッケージと、内部リポジトリに公開されるカスタムビルドパッケージの 2 種類の NuGet パッケージをインストールできます。nuget.org からパッケージをプルダウンするには、アプリケーションを構築するインスタンスにアウトバウンドインターネットアクセスが必要です。一部のユーザーでは、セキュリティ上の懸念やネットワークの制限により、インターネットアクセスが望ましくない場合があります。

この問題を解決するには、マネージドアーティファクト (NuGet) リポジトリをプロビジョニングして、nuget.org などの外部ソースからパッケージをダウンロードします。フルマネージドアーティファクトリポジトリサービスである AWS CodeArtifactを NuGet パッケージリポジトリとして使用できます。詳細については、 AWS ブログ記事「Using NuGet with AWS CodeArtifact」を参照してください。その他の一般的なサードパーティーオプションには、NexusArtifactory などがあります。このアプローチにより、公開されているパッケージをプライベートリポジトリ内にキャッシュできるため、ビルドプロセス中に直接インターネットアクセスを行う必要がなくなります。ダウンロードできるパッケージをより詳細に制御したい場合は、外部アクセスを無効にすることができます。この場合、開発者は独自の NuGet パッケージと、必要なその他のサードパーティーパッケージの両方をリポジトリにプッシュする必要があります。

NuGet パッケージリポジトリを使用するようにアプリケーションを設定するには、プロジェクトルートまたはソリューションルートディレクトリに NuGet.config ファイルを作成します。このファイルは、NuGet がパッケージを復元するときに使用するパッケージソースを指定します。次の例は、CodeArtifact を使用するように NuGet.config ファイルを設定する方法を示しています。

<?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>

この例では、 を CodeArtifact リポジトリの実際の URL https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/nuget/my_repo/v3/index.jsonに置き換えます。この URL は、CodeArtifact コンソールまたは aws codeartifact get-repository-endpoint コマンドを実行して確認できます。

重要
  • NuGet.config ファイルを設定すると、同じディレクトリ構造内のすべてのプロジェクトに影響します。プロジェクトごとに異なるパッケージソースを使用する場合は、プロジェクトまたはソリューションごとに個別のNuGet.configファイルを作成します。

  • アプリケーションを構築するインスタンスに、NuGet パッケージリポジトリ (CodeArtifact など) に接続するために必要なアクセス許可とネットワークアクセスがあることを確認します。認証情報の取得の詳細については、CodeArtifact ドキュメントの「nuget または dotnet CLI で CodeArtifact を使用する」を参照してください。

アプリケーションの構築

レガシー ASP.NET Web Forms アプリケーションを に移行する場合 AWS、アプリケーションを構築するための中央ツールとして Microsoft Build Engine (MSBuild) を引き続き使用します。MSBuild は通常 Visual Studio にバンドルされていますが、Visual Studio をインストールしなくても、Microsoft からスタンドアロンの MSBuild 実行可能ファイルをダウンロードして使用できます。このアプローチは、MSBuild がインストールされた Windows AWSインスタンスまたは Docker コンテナを使用できる Web Forms アプリケーションを で構築する場合に特に役立ちます。

ASP.NET Web Forms アプリケーションを構築するには、NuGet パッケージの復元とアプリケーションの構築の 2 つの主要なステップが必要です。これらのステップの実行方法の詳細は、使用する 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 ブログ記事「Creating CI/CD pipelines for ASP.NET 4.x with AWS CodePipeline and AWS Elastic Beanstalk」を参照してください。

アプリケーションのデプロイ

Web Forms アプリケーションを構築したら、アーティファクトをターゲット環境にデプロイします AWS。ほとんどのシナリオでは、ビルドされたアーティファクトを圧縮して Amazon Simple Storage Service (Amazon S3) バケットにアップロードすることで、簡単に配布およびデプロイできます。手順については、Amazon S3 のドキュメントを参照してください。

アーティファクトを Amazon EC2 インスタンスにデプロイするには、手動と自動の 2 つの主なオプションがあります。

手動デプロイ

このオプションでは、EC2 インスタンスのユーザーデータを使用して、次のタスクを実行するスクリプトを含めます。

  • インターネットインフォメーションサービス (IIS) をインストールする

  • Amazon S3 バケットからビルドアーティファクトをプルして解凍する

  • IIS アプリケーションの作成と設定

このアプローチは柔軟性を提供しますが、手動による介入が必要であり、アプリケーションのスケーリングや頻繁な更新が行われると、管理が困難になる可能性があります。

自動化されたデプロイ

推奨されるアプローチは、自動デプロイと反復可能なデプロイAWS CodeDeployに を使用することです。CodeDeploy は AWS CodeBuild や AWS のサービス などの他の とシームレスに統合されるため AWS CodePipeline、ASP.NET Web Forms アプリケーションの完全な CI/CD パイプラインを作成できます。CodeDeploy を使用すると、ローリングやブルー/グリーン更新などのデプロイ戦略を定義して、ダウンタイムを最小限に抑え、アプリケーションバージョン間のスムーズな移行を確保できます。

CodePipeline、CodeBuild、および CodeDeploy を使用して ASP.NET Web Forms アプリケーションの CI/CD パイプラインを設定する方法の詳細と例については、 AWS ブログ記事「Creating CI/CD pipelines for ASP.NET 4.x with AWS CodePipeline and AWS Elastic Beanstalk」を参照してください。

CodeBuild、CodeDeploy、CodePipeline AWS のサービス などの を使用することで、移行された ASP.NET Web Forms アプリケーションのビルドとデプロイプロセスを合理化し、 AWS インフラストラクチャへの一貫性のある信頼性の高いデプロイを確保できます。

自動デプロイの詳細については、 AWS ブログ記事「Generate CI/CD Pipelines for Containerized ASP.NET Applications using AWS App2Container and the information about building a CI/CD pipeline for legacy .NET Framework applications in AWS re:Post」を参照してください。