

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

# IIS から Elastic Beanstalk への移行マッピングを理解する
<a name="dotnet-migrating-applications-mapping"></a>

IIS から Elastic Beanstalk への移行には、オンプレミスの Windows サーバー設定を AWS クラウドリソースにマッピングする必要があります。このマッピングを理解することは、移行の成功と移行後の管理に不可欠です。

## Elastic Beanstalk 内の IIS サイトとアプリケーション
<a name="dotnet-migrating-applications-mapping-sites"></a>

IIS 内で、ウェブサイトはウェブアプリケーションと仮想ディレクトリのコレクションを表し、それぞれに独自の設定とコンテンツがあります。Elastic Beanstalk に移行すると、これらのコンポーネントは次のように変換されます。

**IIS ウェブサイト**  
IIS ウェブサイトは Elastic Beanstalk 内のアプリケーションになります。バインディング、アプリケーションプール、および認証設定を含む各ウェブサイトの設定は、Elastic Beanstalk のデプロイマニフェスト (`aws-windows-deployment-manifest.json`) を通じて保持されます。  
例えば、*Default Web Site* や *IntranetSite* などの複数のサイトがある場合、**eb migrate** は各サイトのコンテンツと設定をパッケージ化し、分離を維持します。  
コマンドは、アプリケーションへのルーティングリクエストを処理するための適切な Application Load Balancer (ALB) リスナールールを作成します。また、元の IIS バインディングに基づいて適切なポートアクセスを確保するようにセキュリティグループを設定します。

**アプリケーションプール**  
IIS アプリケーションプールは、アプリケーションのワーカープロセスの分離、ランタイム管理、およびリサイクル機能を提供します。Elastic Beanstalk では、これらは `aws:elasticbeanstalk:environment:process` 名前空間を通じて定義され、EC2 インスタンス上の IIS を介して設定される環境プロセスにマッピングされます。  
移行では、次のような重要なアプリケーションプール設定が保持されます。  
+ プロセスモデル設定 - アイデンティティ (ApplicationPoolIdentity、NetworkService、またはカスタムアカウント)、アイドルタイムアウト設定、およびプロセスリサイクル間隔
+ .NET CLR バージョン設定 - アプリケーションの互換性を確保するために、指定された .NET Framework バージョン (v2.0、v4.0、またはマネージドコードなし) を維持します
+ マネージドパイプラインモード - 統合パイプラインモードまたはクラシックパイプラインモードの設定を保持して、HTTP リクエスト処理アーキテクチャを維持します
+ 高度な設定 - キューの長さ、CPU 制限、迅速障害保護のしきい値、起動時間制限
**eb migrate** コマンドは、Elastic Beanstalk 環境への移行中にサイトとアプリケーションプール間のマッピングを保持します。  
アプリケーションプールがカスタムリサイクルスケジュール (特定の時間またはメモリしきい値) を使用している場合、これらは EC2 インスタンスで適切な IIS 設定を構成するデプロイパッケージ内の PowerShell スクリプトを通じて実装されます。

**ウェブサイトバインディング**  
クライアントがアプリケーションにアクセスする方法を定義する IIS ウェブサイトバインディングは、次の Application Load Balancer (ALB) 設定に変換されます。  
+ ポートバインディングは、対応する ALB リスナールールにマッピングされます
+ ホストヘッダー設定は ALB ルーティングルールに変換されます
+ SSL 対応サイトは証明書管理に AWS Certificate Manager (ACM) を使用します

## 仮想ディレクトリとアプリケーションパスの管理
<a name="dotnet-migrating-applications-mapping-virtual-dirs"></a>

IIS 仮想ディレクトリとアプリケーションは、物理ディレクトリへの URL パスマッピングを提供します。Elastic Beanstalk は次のコンストラクトを通じてこれらの関係を維持します。

**仮想ディレクトリ**  
移行プロセスでは、仮想ディレクトリの物理パスがデプロイパッケージに保持されます。  
パスマッピングは EC2 インスタンス上の IIS 設定で設定され、移行後も URL 構造がそのまま維持されます。

**システムドライブ以外の物理パス**  
デフォルトでは、Elastic Beanstalk Windows 環境は C:\\ ドライブ (ルートボリューム) のみをプロビジョニングします。現在のバージョンでは、非システムドライブ (D:\\、E:\\ など) のコンテンツを持つアプリケーションの移行はサポートされていません。
**eb migrate** コマンドは、システム以外のドライブにある物理パスを自動的に検出し、次の例のような潜在的な問題について警告します。  

```
ERROR: Detected physical paths on drive D:\ which are not supported in the current version:
  - D:\websites\intranet
  - D:\shared\images

Migration of content from non-system drives is not supported. Please relocate this content to the C:\ drive before migration. Otherwise, select only those sites that are on C:\.
```
アプリケーションがシステム以外のドライブに依存している場合は、移行前にアプリケーションを変更してすべてのコンテンツを C:\\ ドライブに保存する必要があります。

**ネストされたアプリケーション**  
ウェブサイトの下にネストされたアプリケーションは、正しいパス設定と適切なアプリケーションプール割り当てを使用してデプロイされます。移行プロセスにより、すべての ` web.config` 設定が保持されるため、アプリケーション固有の設定がクラウド環境で期待どおりに機能し続けます。

## URL 書き換えとアプリケーションリクエストルーティング (ARR)
<a name="dotnet-migrating-applications-mapping-url-rewrite"></a>

IIS デプロイで URL 書き換えまたはアプリケーションリクエストルーティング (ARR) を使用している場合、**eb migrate** は次のルールと設定を通じてこれらの設定を処理します。

**URL 書き換えルール**  
`web.config` ファイルからの URL 書き換えルールは、可能な場合は ALB ルーティングルールに変換されます。例えば、次のエントリは、ホストヘッダーとパスパターンに基づいてトラフィックの向きを指示する ALB リスナールールになります。  

```
<!-- Original IIS URL Rewrite Rule -->
<rule name="Redirect to WWW" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^example.com$" />
    </conditions>
    <action type="Redirect" url="http://www.example.com/{R:1}" />
</rule>
```


**アプリケーションリクエストのルーティング**  
ARR 設定は、EC2 インスタンスへの ARR 機能のインストールを通じて保持されます。移行プロセスは、次のタスクを完了します。  
+ ソース環境に合わせてプロキシ設定を構成する
+ ARR に関連付けられた URL 書き換えルールを維持する

## 移行アーティファクト構造
<a name="dotnet-migrating-applications-mapping-artifacts"></a>

**eb migrate** を実行すると、必要なすべてのデプロイコンポーネントを含む構造化ディレクトリが作成されます。次のリストでは、ディレクトリ構造について説明します。

```
C:\migration_workspace\
└── .\migrations\latest\
    └── upload_target\
        ├── [SiteName].zip                 # One ZIP per IIS site
        ├── aws-windows-deployment-manifest.json
        └── ebmigrateScripts\
            ├── site_installer.ps1         # Site installation scripts
            ├── arr_configuration.ps1      # ARR configuration scripts
            ├── permission_handler.ps1     # Permission management
            └── firewall_config.ps1        # Windows Firewall rules
```

`aws-windows-deployment-manifest.json` ファイルは、アプリケーションをデプロイする方法を Elastic Beanstalk に指示するコア設定ファイルです。次の例の構造を参照してください。

```
{
    "manifestVersion": 1,
    "deployments": {
        "msDeploy": [
            {
                "name": "Primary Site",
                "parameters": {
                    "appBundle": "DefaultWebSite.zip",
                    "iisPath": "/",
                    "iisWebSite": "Default Web Site"
                }
            }
        ],
        "custom": [
            {
                "name": "ConfigureARR",
                "scripts": {
                    "install": {
                        "file": "ebmigrateScripts\\arr_configuration.ps1"
                    },
                    "uninstall": {
                        "file": "ebmigrateScripts\\noop.ps1"
                    },
                    "restart": {
                        "file": "ebmigrateScripts\\noop.ps1"
                    }
                }
            }
        ]
    }
}
```

このマニフェストは、移行のためのこれらの結果を保証します。
+ アプリケーションは IIS パスを修正するためにデプロイされます
+ カスタム設定が適用されます
+ サイト固有の設定は保持されます
+ デプロイ順序が維持されています