

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

# での ASP.NET Web Forms アプリケーションのデプロイ AWS
<a name="deploying"></a>

## NuGet パッケージの管理
<a name="nuget-manage"></a>

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

この問題を解決するには、マネージドアーティファクト (NuGet) リポジトリをプロビジョニングして、nuget.org などの外部ソースからパッケージをダウンロードします。フルマネージドアーティファクトリポジトリサービスである AWS CodeArtifactを NuGet パッケージリポジトリとして使用できます。詳細については、 AWS ブログ記事[「Using NuGet with AWS CodeArtifact](https://aws.amazon.com/blogs/devops/using-nuget-with-aws-codeartifact/)」を参照してください。その他の一般的なサードパーティーオプションには、[Nexus](https://help.sonatype.com/repomanager2/.net-package-repositories-with-nuget) や [Artifactory](https://www.jfrog.com/confluence/display/JFROG/NuGet+Repositories) などがあります。このアプローチにより、公開されているパッケージをプライベートリポジトリ内にキャッシュできるため、ビルドプロセス中に直接インターネットアクセスを行う必要がなくなります。ダウンロードできるパッケージをより詳細に制御したい場合は、外部アクセスを無効にすることができます。この場合、開発者は独自の 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 コンソール](https://console.aws.amazon.com/codesuite/codeartifact/start)または `aws codeartifact get-repository-endpoint` コマンドを実行して確認できます。

**重要**  
`NuGet.config` ファイルを設定すると、同じディレクトリ構造内のすべてのプロジェクトに影響します。プロジェクトごとに異なるパッケージソースを使用する場合は、プロジェクトまたはソリューションごとに個別の`NuGet.config`ファイルを作成します。
アプリケーションを構築するインスタンスに、NuGet パッケージリポジトリ (CodeArtifact など) に接続するために必要なアクセス許可とネットワークアクセスがあることを確認します。認証情報の取得の詳細については、[CodeArtifact ドキュメントの「nuget または dotnet CLI で](https://docs.aws.amazon.com/codeartifact/latest/ug/nuget-cli.html) CodeArtifact を使用する」を参照してください。

## アプリケーションの構築
<a name="nuget-build"></a>

レガシー 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 パッケージを復元する
<a name="restore-package"></a>

アプリケーションを構築する前に、プロジェクトに必要な NuGet パッケージを復元する必要があります。これを行うには、プロジェクトのルートディレクトリで実行される MSBuild または NuGet コマンドラインインターフェイス (CLI) コマンドを使用します。

MSBuild の使用：

```
msbuild -t:restore
```

NuGet CLI の使用：

```
nuget restore
```

### MSBuild を使用してビルドする
<a name="msbuild"></a>

NuGet パッケージを復元したら、デプロイアーティファクトを生成するメインビルドコマンドに進むことができます。コマンドは通常、プロジェクトファイル、ビルド設定 ( など`Release`）、およびビルドされたアーティファクトの出力ディレクトリを指定します。

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

MSBuild オプションの詳細については、Microsoft ドキュメントの[MSBuild コマンドラインリファレンス](https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild-command-line-reference)」を参照してください。

で ASP.NET アプリケーションを構築する方法の詳細については AWS CodeBuild、 AWS ブログ記事[「Creating CI/CD pipelines for ASP.NET 4.x with AWS CodePipeline and AWS Elastic Beanstalk](https://aws.amazon.com/blogs/devops/creating-ci-cd-pipelines-for-asp-net-4-x-with-aws-codepipeline-and-aws-elastic-beanstalk/)」を参照してください。

## アプリケーションのデプロイ
<a name="nuget-deploy"></a>

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

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

### 手動デプロイ
<a name="manual"></a>

このオプションでは、EC2 インスタンスのユーザーデータを使用して、次のタスクを実行するスクリプトを含めます。
+ インターネットインフォメーションサービス (IIS) をインストールする
+ Amazon S3 バケットからビルドアーティファクトをプルして解凍する
+ IIS アプリケーションの作成と設定

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

### 自動化されたデプロイ
<a name="automated"></a>

推奨されるアプローチは、自動デプロイと反復可能なデプロイ[AWS CodeDeploy](https://aws.amazon.com/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](https://aws.amazon.com/blogs/devops/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](https://aws.amazon.com/blogs/modernizing-with-aws/generating-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](https://repost.aws/questions/QUqSD-rVsFQBKYcrJGQt754w/net-4-7-application-on-ec2-windows) in AWS re:Post」を参照してください。