

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

# 了解 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 中，網站代表 Web 應用程式和虛擬目錄的集合，每個都有自己的組態和內容。遷移至 Elastic Beanstalk 時，這些元件的轉換方式如下：

**IIS 網站**  
您的 IIS 網站會成為 Elastic Beanstalk 內的應用程式。每個網站的組態，包括其繫結、應用程式集區和身分驗證設定，都會透過 Elastic Beanstalk 的部署資訊清單 () 保留`aws-windows-deployment-manifest.json`。  
例如，如果您有多個網站，例如*預設網站*和 *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 限制、快速失敗保護閾值和啟動時間限制
在遷移至 Elastic Beanstalk 環境期間， **eb migrate**命令會保留網站和應用程式集區之間的映射。  
如果您的應用程式集區使用自訂回收排程 （特定時間或記憶體閾值），這些會透過部署套件中的 PowerShell 指令碼實作，以在 EC2 執行個體上設定適當的 IIS 設定。

**網站繫結**  
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：\$1 磁碟機 （根磁碟區）。在目前版本中，不支援在非系統磁碟機 (D：\$1、E：\$1 等） 上具有內容的應用程式進行遷移。
**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：\$1 磁碟機上。

**巢狀應用程式**  
網站下巢狀的應用程式會使用其正確的路徑組態和適當的應用程式集區指派進行部署。遷移程序會保留所有` web.config`設定，確保應用程式特定的組態在雲端環境中繼續如預期般運作。

## URL 重寫和應用程式請求路由 (ARR)
<a name="dotnet-migrating-applications-mapping-url-rewrite"></a>

如果您的 IIS 部署使用 URL Rewrite 或 Application Request Routing (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>
```


**應用程式請求路由**  
在 EC2 執行個體上安裝 ARR 功能時，會保留 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 路徑
+ 套用自訂組態
+ 保留網站特定的設定
+ 部署順序已維護