

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 배포 매니페스트 스키마 참조
<a name="dotnet-manifest-schema"></a>

배포 매니페스트는 Elastic Beanstalk이 Windows 애플리케이션을 어떻게 배포하고 구성해야 하는지를 정의하는 JSON 파일입니다. 이 섹션은 매니페스트 스키마에서 지원되는 모든 속성과 구성 옵션에 대한 종합적인 참조를 제공합니다.

## 매니페스트 구조
<a name="dotnet-manifest-schema-structure"></a>

배포 매니페스트는 다음과 같은 최상위 구조를 가진 특정 JSON 스키마를 따릅니다.

**Example 기본 매니페스트 구조**  

```
{
  "manifestVersion": 1,
  "skipIISReset": false,
  "iisConfig": {
    "websites": [...],
    "appPools": [...]
  },
  "deployments": {
    "msDeploy": [...],
    "aspNetCoreWeb": [...],
    "custom": [...]
  }
}
```

### 최상위 속성
<a name="dotnet-manifest-schema-top-level"></a>

`manifestVersion`(필수)  
*형식*: 숫자  
*기본값*: 1  
*유효한 값:* 1  
매니페스트 스키마 버전을 지정합니다. 현재는 버전 1만 지원됩니다.

`skipIISReset` (선택 사항)  
*유형*: 부울  
*기본값:* false  
애플리케이션 배포 중 IIS를 재설정할지 여부를 제어합니다. 이 플래그는 `msDeploy` 및 `aspNetCoreWeb` 배포 유형 모두에 영향을 미칩니다.  
*동작:*  
+ *지정되지 않음 또는 `false`(기본값):* 설치, 제거, 업데이트 작업 중 IIS 재설정이 수행됩니다. 이는 기존의 동작입니다.
+ *`true`:* 배포 작업 중에는 IIS 재설정을 건너뜁니다.
*이점:*  
+ *가동 중지 시간 단축* - 배포 과정에서 애플리케이션의 서비스 중단 시간이 단축됩니다.
+ *더 빠른 배포* - IIS가 완전히 다시 시작되고 재초기화되는 데 필요한 시간을 제거합니다.
`skipIISReset`를 사용할 때 [RestartAppServer](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RestartAppServer.html) 작업은 이 플래그 설정과 관계없이 IIS 재설정을 수행합니다.
*예:*  

```
{
  "manifestVersion": 1,
  "skipIISReset": true,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "my-dotnet-core-app",
        "parameters": {
          "archive": "dotnet-core-app.zip",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

`deployments`(필수)  
*유형:* 객체  
애플리케이션의 배포 구성이 포함되어 있습니다. 이 객체는 `msDeploy`, `aspNetCoreWeb` 및 `custom` 배포 유형을 포함할 수 있습니다.

`iisConfig` (선택 사항)  
*유형:* 객체  
애플리케이션을 배포하기 전에 적용할 IIS 구성 설정을 정의합니다. 웹 사이트 및 애플리케이션 풀 구성을 모두 지원합니다.

## IIS 구성
<a name="dotnet-manifest-schema-iis-config"></a>

`iisConfig` 섹션에서는 애플리케이션을 배포하기 전에 IIS 설정을 구성할 수 있습니다. 여기에는 특정 구성으로 애플리케이션 풀을 설정하고, 사용자 지정 바인딩으로 IIS 웹 사이트를 구성하는 작업이 포함됩니다.

### IIS 웹 사이트
<a name="dotnet-manifest-schema-websites"></a>

IIS 웹 사이트에서는 애플리케이션을 배포하기 전에 물리적 경로 및 네트워크 바인딩을 포함한 사용자 지정 웹 사이트 설정을 구성할 수 있습니다.

**서로 다른 IIS 웹 사이트를 생성할 때 고려해야 할 주요 사항입니다.**  
*웹 사이트 설정 순서:* `websites` 배열에 나열된 순서대로 웹 사이트가 순차적으로 구성됩니다. 플랫폼은 각 웹 사이트 구성을 순차적으로 처리하므로, 웹사이트 간 종속성이 있는 경우 올바른 순서를 설정해야 합니다.
*방화벽 및 포트 액세스:* 기본 Elastic Beanstalk Windows 방화벽 구성에서는 포트 80만 자동으로 노출됩니다. 웹 사이트를 비표준 포트를 사용하도록 구성하는 경우, 이러한 포트에 대한 외부 액세스를 허용하기 위해 ebextensions 또는 사용자 지정 배포 스크립트를 통해 사용자 지정 방화벽 규칙을 정의해야 합니다.

**Example 웹 사이트 구성**  

```
{
  "iisConfig": {
    "websites": [
      {
        "name": "MyCustomSite",
        "physicalPath": "C:\inetpub\wwwroot\mysite",
        "bindings": [
          {
            "protocol": "http",
            "port": 8080,
            "hostName": "mysite.local"
          },
          {
            "protocol": "https",
            "port": 8443
          }
        ]
      }
    ]
  }
}
```웹 사이트 속성

`name`(필수)  
*유형*: 문자열  
IIS 웹 사이트의 이름입니다. 이 이름은 IIS Manager에서 웹 사이트를 식별하는 데 사용되며, IIS 구성 내에서 고유해야 합니다.

`physicalPath`(필수)  
*유형*: 문자열  
웹 사이트 파일이 저장되는 서버의 물리적 경로입니다. 이 경로는 IIS 작업자 프로세스에서 액세스할 수 있어야 합니다.

`bindings`(필수)  
*유형*: 배열  
*최소 항목:* 1  
웹 사이트가 네트워크 요청에 어떻게 응답할지 정의하는 바인딩 구성 배열입니다. 각 바인딩은 프로토콜, 포트, 선택적 호스트 이름을 지정합니다.

#### 웹 사이트 바인딩
<a name="dotnet-manifest-schema-bindings"></a>

웹 사이트 바인딩은 IIS 웹 사이트가 수신 요청을 수신하는 네트워크 엔드포인트를 정의합니다.

`protocol`(필수)  
*유형*: 문자열  
*유효한 값:* "http", "https"  
바인딩에 사용되는 프로토콜입니다.

`port`(필수)  
*유형*: 정수  
*유효 범위:* 1-65535  
웹 사이트가 요청을 수신하는 포트 번호입니다.

`hostName` (선택 사항)  
*유형*: 문자열  
바인딩의 호스트 이름(도메인 이름)입니다.

### 애플리케이션 풀
<a name="dotnet-manifest-schema-app-pools"></a>

애플리케이션 풀은 애플리케이션 간 격리를 제공하며, 애플리케이션 그룹에 대한 런타임 설정을 구성할 수 있도록 합니다.

**Example 애플리케이션 풀 구성**  

```
{
  "iisConfig": {
    "appPools": [
      {
        "name": "MyAppPool",
        "enable32Bit": false,
        "managedPipelineMode": "Integrated",
        "managedRuntimeVersion": "v4.0",
        "queueLength": 1000,
        "cpu": {
          "limitPercentage": 80,
          "limitAction": "Throttle",
          "limitMonitoringInterval": 5
        },
        "recycling": {
          "regularTimeInterval": 1440,
          "requestLimit": 10000,
          "memory": 1048576,
          "privateMemory": 524288
        }
      }
    ]
  }
}
```애플리케이션 풀 속성

`name`(필수)  
*유형*: 문자열  
애플리케이션 풀의 이름입니다. 이 이름은 배포 구성에서 풀을 참조하는 데 사용됩니다.

`enable32Bit` (선택 사항)  
*유형*: 부울  
32비트 애플리케이션이 64비트 Windows에서 실행되도록 활성화합니다. 32비트 호환성이 필요한 레거시 애플리케이션의 경우 `true`로 설정합니다.

`managedPipelineMode` (선택 사항)  
*유형*: 문자열  
*유효한 값:* "Integrated", "Classic"  
애플리케이션 풀의 요청 처리 모드를 지정합니다.

`managedRuntimeVersion` (선택 사항)  
*유형*: 문자열  
*유효한 값:* "관리형 코드 없음", "v2.0", "v4.0"  
애플리케이션 풀에 사용할 .NET Framework 버전을 지정합니다.

`queueLength` (선택 사항)  
*유형*: 정수  
HTTP.sys가 추가 요청을 거부하기 전에 애플리케이션 풀을 위해 대기열에 넣을 수 있는 최대 요청 수입니다.

#### CPU 구성
<a name="dotnet-manifest-schema-cpu-config"></a>

`cpu` 객체는 애플리케이션 풀의 CPU 사용 한도 및 모니터링을 구성합니다.

`limitPercentage` (선택 사항)  
*형식*: 숫자  
애플리케이션 풀의 작업자 프로세스가 사용할 수 있는 CPU 시간의 최대 비율입니다.

`limitAction` (선택 사항)  
*유형*: 문자열  
*유효한 값:* "NoAction", "KillW3wp", "Throttle", "ThrottleUnderLoad"  
CPU 한도에 도달했을 때 수행할 조치입니다.

`limitMonitoringInterval` (선택 사항)  
*형식*: 숫자  
CPU 모니터링 및 스로틀링 조정을 위한 재설정 주기(분 단위)입니다.

#### 재활용 구성
<a name="dotnet-manifest-schema-recycling-config"></a>

`recycling` 객체는 애플리케이션 풀 작업자 프로세스를 언제, 어떤 방식으로 재활용할지 구성합니다.

`regularTimeInterval` (선택 사항)  
*유형*: 정수  
애플리케이션 풀이 재활용되는 시간 간격(분 단위)입니다. 시간 기반 재활용을 비활성화하려면 0으로 설정합니다.

`requestLimit` (선택 사항)  
*유형*: 정수  
애플리케이션 풀이 재활용되기 전에 처리하는 최대 요청 수입니다.

`memory` (선택 사항)  
*유형*: 정수  
작업자 프로세스 재활용을 트리거하는 가상 메모리 용량(킬로바이트 기준)입니다.

`privateMemory` (선택 사항)  
*유형*: 정수  
작업자 프로세스 재활용을 트리거하는 프라이빗 메모리 용량(킬로바이트 기준)입니다.

## 배포 유형
<a name="dotnet-manifest-schema-deployments"></a>

`deployments` 객체에는 서로 다른 애플리케이션 유형에 대한 배포 구성 배열이 포함됩니다. 각 배포 유형에는 고유한 속성과 사용 사례가 있습니다.

### MSDeploy 배포
<a name="dotnet-manifest-schema-msdeploy"></a>

MSDeploy 배포는 Web Deploy(MSDeploy)를 사용해 배포할 수 있는 기존 .NET Framework 애플리케이션에 사용됩니다.

**Example MSDeploy 배포 구성**  

```
{
  "deployments": {
    "msDeploy": [
      {
        "name": "WebApp",
        "description": "Main web application",
        "parameters": {
          "appBundle": "webapp.zip",
          "iisPath": "/",
          "appPool": "DefaultAppPool"
        }
      }
    ]
  }
}
```MSDeploy 배포 속성

`name`(필수)  
*유형*: 문자열  
배포의 고유 이름입니다. 이 이름은 매니페스트의 모든 배포에서 고유해야 합니다.

`description` (선택 사항)  
*유형*: 문자열  
사람이 읽을 수 있는 배포 설명

`parameters`(필수)  
*유형:* 객체  
MSDeploy 작업에 대한 구성 파라미터입니다.

`scripts` (선택 사항)  
*유형:* 객체  
배포 수명 주기의 다양한 단계에서 실행되는 PowerShell 스크립트입니다.

#### MSDeploy 파라미터
<a name="dotnet-manifest-schema-msdeploy-parameters"></a>

`appBundle`(필수)  
*유형*: 문자열  
매니페스트 파일을 기준으로 한 애플리케이션 번들(ZIP 파일)의 경로입니다. 이 번들은 배포할 애플리케이션 파일을 포함합니다.

`iisWebSite` (선택 사항)  
*유형*: 문자열  
*기본값:* "기본 웹 사이트"  
애플리케이션을 배포할 IIS 웹 사이트입니다. 기본적으로 애플리케이션은 "기본 웹 사이트"에 배포됩니다. 또는 `iisConfig.websites` 섹션에 구성된 웹 사이트 이름과 같이 다른 웹 사이트 이름을 지정할 수 있습니다.

`iisPath` (선택 사항)  
*유형*: 문자열  
*기본값:* "/"  
애플리케이션이 배포될 IIS의 가상 디렉터리 경로입니다. 루트 경로에는 "/"를 사용하고 하위 디렉터리에는 "/api"를 사용하세요.

`appPool` (선택 사항)  
*유형*: 문자열  
이 애플리케이션을 실행할 애플리케이션 풀의 이름입니다.

### ASP.NET Core 배포
<a name="dotnet-manifest-schema-aspnetcore"></a>

ASP.NET Core 배포는 .NET Core 및 .NET 5\$1 애플리케이션을 위해 특별히 설계되었습니다.

**Example ASP.NET Core 배포 구성**  

```
{
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "CoreAPI",
        "description": "ASP.NET Core Web API",
        "parameters": {
          "appBundle": "coreapi.zip",
          "iisPath": "/api",
          "appPool": "CoreAppPool"
        }
      }
    ]
  }
}
```

ASP.NET Core 배포는 MSDeploy 배포와 동일한 속성 구조를 사용하며, 핵심 차이점은 애플리케이션에 사용되는 런타임 환경과 호스팅 모델입니다.ASP.NET Core 배포 파라미터

`appBundle`(필수)  
*유형*: 문자열  
매니페스트 파일을 기준으로 한 애플리케이션 번들의 경로입니다. 이는 ZIP 아카이브이거나, 게시된 ASP.NET Core 애플리케이션이 포함된 디렉터리 경로일 수 있습니다.

`iisWebSite` (선택 사항)  
*유형*: 문자열  
*기본값:* "기본 웹 사이트"  
ASP.NET Core 애플리케이션을 배포할 IIS 웹 사이트입니다. 기본적으로 애플리케이션은 "기본 웹 사이트"에 배포됩니다. 또는 `iisConfig.websites` 섹션에 구성된 웹 사이트 이름과 같이 다른 웹 사이트 이름을 지정할 수 있습니다.

`iisPath` (선택 사항)  
*유형*: 문자열  
*기본값:* "/"  
ASP.NET Core 애플리케이션용 IIS 가상 디렉터리 경로입니다.

`appPool` (선택 사항)  
*유형*: 문자열  
ASP.NET Core 애플리케이션의 애플리케이션 풀입니다. 이 풀은 ASP.NET Core 호스팅에 적합하도록 구성됩니다.

### 사용자 지정 배포
<a name="dotnet-manifest-schema-custom"></a>

사용자 지정 배포에서는 PowerShell 스크립트를 통해 배포 프로세스를 완전히 제어할 수 있습니다. 이 배포 유형은 사용자 지정 설치, 구성 또는 배포 로직이 필요한 복잡한 시나리오에 유용합니다.

**Example 사용자 지정 배포 구성**  

```
{
  "deployments": {
    "custom": [
      {
        "name": "CustomService",
        "description": "Custom Windows service deployment",
        "architecture": 32,
        "scripts": {
          "install": {
            "file": "install-service.ps1"
          },
          "restart": {
            "file": "restart-service.ps1"
          },
          "uninstall": {
            "file": "uninstall-service.ps1",
            "ignoreErrors": true
          }
        }
      }
    ]
  }
}
```사용자 지정 배포 속성

`name`(필수)  
*유형*: 문자열  
사용자 지정 배포의 고유 이름입니다.

`description` (선택 사항)  
*유형*: 문자열  
사용자 지정 배포에 대한 설명입니다.

`architecture` (선택 사항)  
*유형*: 정수  
*기본값:* 32  
*유효한 값:* 32, 64  
PowerShell 스크립트 실행 모드에 대한 아키텍처 사양

`scripts`(필수)  
*유형:* 객체  
배포 동작을 정의하는 PowerShell 스크립트입니다. 사용자 지정 배포는 다른 배포 유형과 달리 추가적인 스크립트 유형을 지원합니다.

## 배포 스크립트
<a name="dotnet-manifest-schema-scripts"></a>

배포 스크립트는 배포 수명 주기의 특정 시점에 실행되는 PowerShell 스크립트입니다. 배포 유형에 따라 지원되는 스크립트 이벤트가 다릅니다.

### 스크립트 이벤트
<a name="dotnet-manifest-schema-script-events"></a>

배포 유형에 따라 다음 스크립트 이벤트를 사용할 수 있습니다.표준 배포 스크립트(msDeploy 및 aspNetCoreWeb)

`preInstall`  
애플리케이션을 설치하거나 업데이트하기 전에 실행됩니다.

`postInstall`  
애플리케이션을 설치하거나 업데이트한 후에 실행됩니다.

`preRestart`  
애플리케이션을 다시 시작하기 전에 실행됩니다.

`postRestart`  
애플리케이션을 다시 시작한 후 실행됩니다.

`preUninstall`  
애플리케이션을 제거하기 전에 실행됩니다.

`postUninstall`  
애플리케이션을 제거한 후 실행됩니다.사용자 지정 배포 스크립트(사용자 지정 배포만 해당)

`install`  
사용자 지정 배포를 위한 기본 설치 스크립트입니다. 이 스크립트는 애플리케이션 또는 서비스를 설치하는 역할을 합니다.

`restart`  
애플리케이션 또는 서비스를 다시 시작하는 스크립트입니다. 환경이 재시작될 때 직접적으로 호출됩니다.

`uninstall`  
애플리케이션 또는 서비스를 제거하는 스크립트입니다. 환경 종료 또는 애플리케이션 제거 시 직접적으로 호출됩니다.

### 스크립트 속성
<a name="dotnet-manifest-schema-script-properties"></a>

각 스크립트는 다음 속성을 가진 객체로 정의됩니다.

`file`(필수)  
*유형*: 문자열  
매니페스트 파일 기준 PowerShell 스크립트 파일의 상대 경로입니다. 스크립트에는 `.ps1` 확장자가 있어야 합니다.

`ignoreErrors` (선택 사항)  
*유형*: 부울  
*기본값:* false  
`true`로 설정하면 스크립트가 실패하더라도 배포가 계속 진행됩니다. 중요하지 않은 스크립트나 정리 작업에 이 옵션을 사용하세요.

**Example 스크립트 구성 예제**  

```
{
  "scripts": {
    "preInstall": {
      "file": "backup-config.ps1",
      "ignoreErrors": true
    },
    "postInstall": {
      "file": "configure-app.ps1"
    }
  }
}
```