

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

# App Mesh 개념
<a name="concepts"></a>

**중요**  
지원 종료 알림: 2026년 9월 30일에에 대한 지원을 중단할 AWS 예정입니다 AWS App Mesh. 2026년 9월 30일 이후에는 AWS App Mesh 콘솔 또는 AWS App Mesh 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은이 블로그 게시물 [에서 Amazon ECS Service Connect AWS App Mesh 로 마이그레이션](https://aws.amazon.com/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect)을 참조하세요.

**Topics**
+ [

# 서비스 메시
](meshes.md)
+ [

# 가상 서비스
](virtual_services.md)
+ [

# 가상 게이트웨이
](virtual_gateways.md)
+ [

# 가상 노드
](virtual_nodes.md)
+ [

# 가상 라우터
](virtual_routers.md)

# 서비스 메시
<a name="meshes"></a>

**중요**  
지원 종료 알림: 2026년 9월 30일에에 대한 지원을 중단할 AWS 예정입니다 AWS App Mesh. 2026년 9월 30일 이후에는 AWS App Mesh 콘솔 또는 AWS App Mesh 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은이 블로그 게시물 [에서 Amazon ECS Service Connect AWS App Mesh 로 마이그레이션](https://aws.amazon.com/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect)을 참조하세요.

서비스 메시는 내부에 있는 서비스 간의 네트워크 트래픽에 대한 논리적 경계입니다. 서비스 메시를 생성한 후에는 메시의 애플리케이션 간에 트래픽을 분산하는 가상 서비스, 가상 노드, 가상 라우터 및 라우팅을 생성할 수 있습니다.

## 서비스 메시 생성
<a name="create-mesh"></a>

**참고**  
메시를 생성할 때 네임스페이스 선택기를 추가해야 합니다. 네임스페이스 선택기가 비어 있는 경우 모든 네임스페이스를 선택합니다. 네임스페이스를 제한하려면 레이블을 사용하여 App Mesh 리소스를 생성된 메시에 연결합니다.

------
#### [ AWS Management Console ]

**를 사용하여 서비스 메시를 생성하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. **메시 생성**을 선택합니다.

1. **메시 이름**에서 서비스 메시의 이름을 지정합니다.

1. (선택 사항) **외부 트래픽 허용**을 선택합니다. 기본적으로 메시의 프록시는 서로 간의 트래픽만 전달합니다. 외부 트래픽을 허용하는 경우 메시의 프록시는 메시에 정의된 프록시와 함께 배포되지 않은 서비스에 TCP 트래픽을 직접 전달하기도 합니다.
**참고**  
`ALLOW_ALL`을 사용할 때 가상 노드에 백엔드를 지정하는 경우 해당 가상 노드에 대한 모든 송신을 백엔드로 지정해야 합니다. 그렇지 않으면 `ALLOW_ALL`이 해당 가상 노드에서는 더 이상 작동하지 않습니다.

1. 

**IP 버전 기본 설정**

   **기본 IP 버전 동작 재정의**를 켜서 메시 내 트래픽에 사용해야 하는 IP 버전을 제어할 수 있습니다. 기본적으로 App Mesh는 다양한 IP 버전을 사용합니다.
**참고**  
메시는 메시 내의 모든 가상 노드와 가상 게이트웨이에 IP 기본 설정을 적용합니다. 노드를 생성하거나 편집할 때 IP 기본 설정을 지정하여 개별 가상 노드에서 이 동작을 재정의할 수 있습니다. IPv4 및 IPv6 트래픽을 모두 수신할 수 있도록 하는 가상 게이트웨이의 구성은 메시에 설정된 기본 설정에 관계없이 동일하기 때문에 가상 게이트웨이에서는 IP 기본 설정을 재정의할 수 없습니다.
   + Default
     + Envoy의 DNS 확인자는 `IPv6`를 선호하고 `IPv4`로 대체합니다.
     + 가능한 경우 AWS Cloud Map 에서 반환한 `IPv4` 주소를 사용하고 대신 `IPv6` 주소를 사용합니다.
     + 로컬 앱용으로 생성된 엔드포인트는 `IPv4` 주소를 사용합니다.
     + Envoy 리스너는 모든 `IPv4` 주소에 바인딩됩니다.
   + IPv6 선호
     + Envoy의 DNS 확인자는 `IPv6`를 선호하고 `IPv4`로 대체합니다.
     + 가능한 경우 AWS Cloud Map 에서 반환한 `IPv6` 주소가 사용되고 `IPv4` 주소를 사용하도록 대체합니다.
     + 로컬 앱용으로 생성된 엔드포인트는 `IPv6` 주소를 사용합니다.
     + Envoy 리스너는 모든 `IPv4` 및 `IPv6` 주소에 바인딩됩니다.
   + IPv4 선호
     + Envoy의 DNS 확인자는 `IPv4`를 선호하고 `IPv6`로 대체합니다.
     + 가능한 경우 AWS Cloud Map 에서 반환한 `IPv4` 주소를 사용하고 대신 `IPv6` 주소를 사용합니다.
     + 로컬 앱용으로 생성된 엔드포인트는 `IPv4` 주소를 사용합니다.
     + Envoy 리스너는 모든 `IPv4` 및 `IPv6` 주소에 바인딩됩니다.
   + IPv6 전용
     + Envoy의 DNS 확인자는 `IPv6`만 사용합니다.
     +  AWS Cloud Map 에서 반환한 `IPv6` 주소만 사용됩니다. 가 `IPv4` 주소를 AWS Cloud Map 반환하면 IP 주소가 사용되지 않고 빈 결과가 Envoy로 반환됩니다.
     + 로컬 앱용으로 생성된 엔드포인트는 `IPv6` 주소를 사용합니다.
     + Envoy 리스너는 모든 `IPv4` 및 `IPv6` 주소에 바인딩됩니다.
   + IPv4 전용
     + Envoy의 DNS 확인자는 `IPv4`만 사용합니다.
     +  AWS Cloud Map 에서 반환한 `IPv4` 주소만 사용됩니다. 가 `IPv6` 주소를 AWS Cloud Map 반환하면 IP 주소가 사용되지 않고 빈 결과가 Envoy로 반환됩니다.
     + 로컬 앱용으로 생성된 엔드포인트는 `IPv4` 주소를 사용합니다.
     + Envoy 리스너는 모든 `IPv4` 및 `IPv6` 주소에 바인딩됩니다.

1. **메시 생성**을 선택하여 완료합니다.

1. (선택 사항) 메시를 다른 계정과 공유합니다. 공유 메시를 사용하면 다른 계정에서 생성한 리소스가 동일한 메시에서 서로 통신할 수 있습니다. 자세한 내용은 [공유 메시 작업](sharing.md) 단원을 참조하십시오.

------
#### [ AWS CLI ]

 AWS CLI를 사용하여 메시를 생성하려면****

다음 명령을 사용하여 서비스 메시를 생성합니다(*빨간색* 값을 원하는 값으로 대체).

1. 

   ```
   aws appmesh create-mesh --mesh-name meshName
   ```

1. 출력 예시:

   ```
   {
       "mesh":{
           "meshName":"meshName",
           "metadata":{
               "arn":"arn:aws:appmesh:us-west-2:123456789012:mesh/meshName",
               "createdAt":"2022-04-06T08:45:50.072000-05:00",
               "lastUpdatedAt":"2022-04-06T08:45:50.072000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "123456789012",
               "uid":"a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version":1
           },
           "spec":{},
           "status":{
               "status":"ACTIVE"
           }
       }
   }
   ```

for App Mesh를 사용하여 메시를 생성하는 AWS CLI 방법에 대한 자세한 내용은 AWS CLI 참조의 [create-mesh](https://docs.aws.amazon.com/cli/latest/reference/appmesh/create-mesh.html) 명령을 참조하세요.

------

## 메시 삭제
<a name="delete-mesh"></a>

------
#### [ AWS Management Console ]

**를 사용하여 가상 게이트웨이를 삭제하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 삭제하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 확인 상자에 **delete**를 입력한 다음, **삭제**를 클릭합니다.

------
#### [ AWS CLI ]

**를 사용하여 메시를 삭제하려면 AWS CLI**

1. 다음 명령을 사용하여 메시를 삭제합니다(*빨간색* 값을 원하는 값으로 대체).

   ```
   aws appmesh delete-mesh \
        --mesh-name meshName
   ```

1. 출력 예시:

   ```
   {
       "mesh": {
           "meshName": "meshName",
           "metadata": {
               "arn":"arn:aws:appmesh:us-west-2:123456789012:mesh/meshName",
               "createdAt": "2022-04-06T08:45:50.072000-05:00",
               "lastUpdatedAt": "2022-04-07T11:06:32.795000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "123456789012",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 1
           },
           "spec": {},
           "status": {
               "status": "DELETED"
           }
       }
   }
   ```

for App Mesh를 사용하여 메시를 삭제하는 방법에 AWS CLI 대한 자세한 내용은 AWS CLI 참조의 [delete-mesh](https://docs.aws.amazon.com/cli/latest/reference/appmesh/delete-mesh.html) 명령을 참조하세요.

------

# 가상 서비스
<a name="virtual_services"></a>

**중요**  
지원 종료 알림: 2026년 9월 30일에에 대한 지원을 중단할 AWS 예정입니다 AWS App Mesh. 2026년 9월 30일 이후에는 AWS App Mesh 콘솔 또는 AWS App Mesh 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은이 블로그 게시물 [에서 Amazon ECS Service Connect AWS App Mesh 로 마이그레이션](https://aws.amazon.com/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect)을 참조하세요.

가상 서비스는 가상 노드가 가상 라우터를 통해 직접 또는 간접적으로 제공하는 실제 서비스의 추상화입니다. 종속 서비스는 `virtualServiceName`으로 가상 서비스를 호출하고, 이러한 요청은 가상 서비스의 공급자로 지정된 가상 노드 또는 가상 라우터로 라우팅됩니다.

## 가상 서비스 생성
<a name="create-virtual-service"></a>

------
#### [ AWS Management Console ]

**를 사용하여 가상 서비스를 생성하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 가상 서비스를 생성하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 왼쪽 탐색 창에서 **Virtual services(가상 서비스)**를 선택합니다.

1. **Create virtual service(가상 서비스 생성)**를 선택합니다.

1. **Virtual service name(가상 서비스 이름)**에서 가상 서비스의 이름을 선택합니다. 원하는 이름을 선택할 수 있지만 가상 서비스를 실제 서비스와 쉽게 연관시킬 수 있도록 대상으로 하는 실제 서비스의 서비스 검색 이름(예: `my-service.default.svc.cluster.local`)을 사용하는 것이 좋습니다. 이렇게 하면 코드에서 현재 참조하는 이름과 다른 이름을 참조하도록 코드를 변경할 필요가 없습니다. 요청이 Envoy 프록시로 전송되기 전에 앱 컨테이너가 이름을 성공적으로 확인할 수 있어야 하므로 지정하는 이름은 루프백이 아닌 IP 주소로 확인되어야 합니다. 앱이나 프록시 컨테이너 모두 이 IP 주소와 통신하지 않으므로 루프백이 아닌 모든 IP 주소를 사용할 수 있습니다. 프록시는 이름이 확인되는 IP 주소를 통하지 않고 App Mesh에서 구성한 이름을 통해 다른 가상 서비스와 통신합니다.

1. **Provider(공급자)**에서 가상 서비스의 공급자 유형을 선택합니다.
   + 가상 서비스에서 여러 가상 노드로 트래픽을 분산시키려면 **Virtual router(가상 라우터)**를 선택한 다음, 드롭다운 메뉴에서 사용할 가상 라우터를 선택합니다.
   + 가상 라우터 없이 가상 서비스를 직접 가상 노드에 연결하려면 **가상 노드**를 선택한 다음, 드롭다운 메뉴에서 사용할 가상 노드를 선택합니다.
**참고**  
App Mesh는 2020년 7월 29일 또는 그 이후에 정의한 각 가상 노드 공급자에 대해 기본 Envoy 경로 재시도 정책을 자동으로 생성할 수 있습니다. App Mesh API를 통해 이러한 정책을 정의할 수 없더라도 마찬가지입니다. 자세한 내용은 [기본 경로 재시도 정책](envoy-defaults.md#default-retry-policy) 단원을 참조하십시오.
   + 가상 서비스가 지금 트래픽을 라우팅하지 않게 하려면(예: 가상 노드 또는 가상 라우터가 아직 없는 경우) **None(없음)**을 선택합니다. 나중에 이 가상 서비스의 공급자를 업데이트할 수 있습니다.

1. **Create virtual service(가상 서비스 생성)**를 선택하여 완료합니다.

------
#### [ AWS CLI ]

** AWS CLI를 사용하여 가상 서비스를 생성하려면**

다음 명령과 입력 JSON 파일을 사용하여 가상 노드 공급자로 가상 서비스를 생성합니다(*빨간색* 값을 원하는 값으로 대체).

1. 

   ```
   aws appmesh create-virtual-service \ 
   --cli-input-json file://create-virtual-service-virtual-node.json
   ```

1. **예제** create-virtual-service-virtual-node.json의 내용은 다음과 같습니다.

   ```
   {
       "meshName": "meshName",
       "spec": {
           "provider": {
               "virtualNode": {
                   "virtualNodeName": "nodeName"
               }
           }
       },
       "virtualServiceName": "serviceA.svc.cluster.local"
   }
   ```

1. 출력 예시:

   ```
   {
       "virtualService": {
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualService/serviceA.svc.cluster.local",
               "createdAt": "2022-04-06T09:45:35.890000-05:00",
               "lastUpdatedAt": "2022-04-06T09:45:35.890000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "210987654321",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 1
           },
           "spec": {
               "provider": {
                   "virtualNode": {
                       "virtualNodeName": "nodeName"
                   }
               }
           },
           "status": {
               "status": "ACTIVE"
           },
           "virtualServiceName": "serviceA.svc.cluster.local"
       }
   }
   ```

App Mesh AWS CLI 용를 사용하여 가상 서비스를 생성하는 방법에 대한 자세한 내용은 AWS CLI 참조의 [create-virtual-service](https://docs.aws.amazon.com/cli/latest/reference/appmesh/create-virtual-service.html) 명령을 참조하세요.

------

## 가상 서비스 삭제
<a name="delete-virtual-service"></a>

**참고**  
게이트웨이 경로에서 참조하는 가상 서비스는 삭제할 수 없습니다. 먼저 게이트웨이 경로를 삭제해야 합니다.

------
#### [ AWS Management Console ]

**를 사용하여 가상 서비스를 삭제하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 가상 서비스를 삭제하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 왼쪽 탐색 창에서 **Virtual services(가상 서비스)**를 선택합니다.

1. 삭제하려는 가상 서비스를 선택하고 오른쪽 상단 구석에서 **삭제**를 클릭합니다. 계정이 **리소스 소유자**로 나열된 경우에만 가상 게이트웨이를 삭제할 수 있습니다.

1. 확인 상자에 **delete**를 입력한 다음, **삭제**를 클릭합니다.

------
#### [ AWS CLI ]

**를 사용하여 가상 서비스를 삭제하려면 AWS CLI**

1. 다음 명령을 사용하여 가상 서비스를 삭제합니다(*빨간색* 값을 원하는 값으로 대체).

   ```
   aws appmesh delete-virtual-service \
        --mesh-name meshName \
        --virtual-service-name serviceA.svc.cluster.local
   ```

1. 출력 예시:

   ```
   {
       "virtualService": {
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualService/serviceA.svc.cluster.local",
               "createdAt": "2022-04-06T09:45:35.890000-05:00",
               "lastUpdatedAt": "2022-04-07T10:39:42.772000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "210987654321",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 2
           },
           "spec": {
               "provider": {
                   "virtualNode": {
                       "virtualNodeName": "nodeName"
                   }
               }
           },
           "status": {
               "status": "DELETED"
           },
           "virtualServiceName": "serviceA.svc.cluster.local"
       }
   }
   ```

for App Mesh를 사용하여 가상 서비스를 삭제하는 AWS CLI 방법에 대한 자세한 내용은 AWS CLI 참조의 [delete-virtual-service](https://docs.aws.amazon.com/cli/latest/reference/appmesh/delete-virtual-service.html) 명령을 참조하세요.

------

# 가상 게이트웨이
<a name="virtual_gateways"></a>

**중요**  
지원 종료 알림: 2026년 9월 30일에에 대한 지원을 중단할 AWS 예정입니다 AWS App Mesh. 2026년 9월 30일 이후에는 AWS App Mesh 콘솔 또는 AWS App Mesh 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은이 블로그 게시물 [에서 Amazon ECS Service Connect AWS App Mesh 로 마이그레이션](https://aws.amazon.com/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect)을 참조하세요.

가상 게이트웨이를 사용하면 메시 외부의 리소스가 메시 내부에 있는 리소스와 통신할 수 있습니다. 가상 게이트웨이는 Amazon ECS 서비스, Kubernetes 서비스 또는 Amazon EC2 인스턴스에서 실행되는 Envoy 프록시를 나타냅니다. 애플리케이션과 함께 실행되는 Envoy를 나타내는 가상 노드와 달리 가상 게이트웨이는 자체적으로 배포된 Envoy를 나타냅니다.

외부 리소스는 DNS 이름을 Envoy를 실행하는 서비스 또는 인스턴스에 할당된 IP 주소로 확인할 수 있어야 합니다. 그러면 Envoy는 메시 내에 있는 리소스의 모든 App Mesh 구성에 액세스할 수 있습니다. 가상 게이트웨이에서 들어오는 요청을 처리하기 위한 구성은 [게이트웨이 경로](https://docs.aws.amazon.com/app-mesh/latest/userguide/gateway-routes.html)를 사용하여 지정됩니다.

**중요**  
HTTP 또는 HTTP2 리스너가 있는 가상 게이트웨이는 들어오는 요청의 호스트 이름을 게이트웨이 경로 대상 가상 서비스의 이름에 다시 쓰고, 게이트웨이 경로의 일치하는 접두사가 기본적으로 `/`로 다시 작성됩니다. 예를 들어 게이트웨이 경로 일치 접두사를 `/chapter`로 구성한 경우, 수신 요청이 `/chapter/1`인 경우 요청이 `/1`로 다시 작성됩니다. 재작성을 구성하려면 게이트웨이 경로의 [게이트웨이 경로 생성](https://docs.aws.amazon.com/app-mesh/latest/userguide/gateway-routes.html#create-gateway-route) 섹션을 참조하세요.  
가상 게이트웨이를 생성할 때는 `proxyConfiguration` 및 `user`를 구성하지 않아야 합니다.

전체적인 과정 연습을 완료하려면 [인바운드 게이트웨이 구성](https://github.com/aws/aws-app-mesh-examples/tree/main/walkthroughs/howto-ingress-gateway)을 참조하세요.

## 가상 게이트웨이 생성
<a name="create-virtual-gateway"></a>

**참고**  
가상 게이트웨이를 생성할 때는 게이트웨이 경로를 생성된 가상 게이트웨이에 연결할 네임스페이스 목록을 식별할 수 있도록 레이블이 있는 네임스페이스 선택기를 추가해야 합니다.

------
#### [ AWS Management Console ]

**를 사용하여 가상 게이트웨이를 생성하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 가상 게이트웨이를 생성하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 왼쪽 탐색 창에서 **가상 게이트웨이**를 선택합니다.

1. **가상 게이트웨이 생성**을 선택합니다.

1. **가상 게이트웨이 이름**에 가상 게이트웨이의 이름을 입력합니다.

1. (선택 사항이지만 권장됨) **클라이언트 정책 기본값**을 구성합니다.

   1. (선택 사항) 게이트웨이가 전송 계층 보안(TLS)을 사용하여 가상 서비스와만 통신하도록 하려면 **TLS 적용**을 선택합니다.

   1. (선택 사항) **포트**에는 가상 서비스와의 TLS 통신을 적용하려는 하나 이상의 포트를 지정합니다.

   1. **검증 방법**에서 다음 옵션 중 하나를 선택합니다. 지정하는 인증서는 이미 존재하고 특정 요구 사항을 충족해야 합니다. 자세한 내용은 [인증서 요구 사항](tls.md#virtual-node-tls-prerequisites) 단원을 참조하십시오.
      + **AWS Private Certificate Authority** 호스팅 - 기존 **인증서**를 하나 이상 선택합니다.
      + **Envoy 보안 암호 검색 서비스(SDS)** 호스팅 - Envoy가 보안 암호 검색 서비스를 사용하여 가져오는 보안 암호의 이름을 입력합니다.
      + **로컬 파일 호스팅** - Envoy가 배포되는 파일 시스템의 **인증서 체인** 파일 경로를 지정합니다.

   1. (선택 사항) **주체 대체 이름**을 입력합니다. SAN을 더 추가하려면 **SAN 추가**를 선택합니다. SAN은 FQDN 또는 URI 형식이어야 합니다.

   1. (선택 사항) **클라이언트 인증서 제공**과 아래 옵션 중 하나를 선택하여 서버가 요청할 때 클라이언트 인증서를 제공하고 상호 TLS 인증을 활성화합니다. 상호 TLS에 대해 자세히 알아보려면 App Mesh [상호 TLS 인증](https://docs.aws.amazon.com/app-mesh/latest/userguide/mutual-tls.html) 설명서를 참조하세요.
      + **Envoy 보안 암호 검색 서비스(SDS)** 호스팅 - Envoy가 보안 암호 검색 서비스를 사용하여 가져오는 보안 암호의 이름을 입력합니다.
      + **로컬 파일 호스팅** - Envoy가 배포되는 파일 시스템의 **프라이빗 키** 뿐만 아니라 **인증서 체인** 파일의 경로를 지정합니다. 로컬 파일에 암호화를 사용하여 샘플 애플리케이션으로 메시를 배포하는 과정을 전체적으로 자세히 알아보려면 GitHub에서 [파일 제공 TLS 인증서를 사용하여 TLS 구성](https://github.com/aws/aws-app-mesh-examples/tree/main/walkthroughs/howto-tls-file-provided)을 참조하세요.

1. (선택 사항) 로깅을 구성하려면 **로깅**을 선택합니다. Envoy에서 사용할 **HTTP 액세스 로그 경로**를 입력합니다. Docker 로그 드라이버를 사용하여 Envoy 로그를 Amazon CloudWatch Logs와 같은 서비스로 내보낼 수 있도록 `/dev/stdout` 경로를 사용하는 것이 좋습니다.
**참고**  
로그는 계속 애플리케이션의 에이전트에 의해 수집되어 대상으로 전송되어야 합니다. 이 파일 경로는 로그를 보낼 위치만 Envoy에 지시합니다.

1. **리스너**를 구성합니다.

   1. **프로토콜**을 선택하고 Envoy가 트래픽을 수신하는 **포트**를 지정합니다. **http** 리스너는 웹 소켓으로의 연결 전환을 허용합니다. **리스너 추가**를 클릭하여 리스너를 여러 개 추가할 수 있습니다. **제거** 버튼을 누르면 해당 리스너가 제거됩니다.

   1. (선택 사항) **연결 풀 활성화** 

      연결 풀링은 가상 게이트웨이 Envoy가 동시에 설정할 수 있는 연결 수를 제한합니다. 이 작업은 Envoy 인스턴스의 연결 과부하를 방지하고 애플리케이션 요구 사항에 맞게 트래픽 셰이핑을 조정할 수 있도록 하기 위한 것입니다.

      가상 게이트웨이 리스너의 대상 측 연결 풀 설정을 구성할 수 있습니다. App Mesh는 기본적으로 클라이언트 측 연결 풀 설정을 무제한으로 설정하여 메시 구성을 단순화합니다.
**참고**  
`connectionPool` 및 `connectionPool` portMapping 프로토콜은 동일해야 합니다. 리스너 프로토콜이 `grpc` 또는 `http2`인 경우 `maxRequests`만 지정합니다. 리스너 프로토콜이 `http`인 경우 `maxConnections` 및 `maxPendingRequests`를 모두 지정할 수 있습니다.
      + **최대 연결 수**에는 최대 아웃바운드 연결 수를 지정합니다.
      + **최대 요청 수**에는 가상 게이트웨이 Envoy에 대해 설정할 수 있는 최대 병렬 요청 수를 지정합니다.
      + (선택 사항) **대기 중인 최대 요청 수**에는 Envoy가 대기하는 **최대 연결 수** 이후에 오버플로되는 요청 수를 지정합니다. 기본값은 `2147483647`입니다.

   1. (선택 사항) 리스너에 대한 상태 확인을 구성하려면 **상태 확인 사용**을 선택합니다.

      상태 확인 정책은 선택 사항이지만 상태 정책에 대한 값을 지정한 경우 **정상 임계 값**, **상태 확인 간격**, **상태 확인 프로토콜**, **제한 시간** 및 **비정상 임계값**에 대해 값을 지정해야 합니다.
      + **상태 확인 프로토콜**에 대해 프로토콜을 선택합니다. **grpc**를 선택한 경우 서비스는 [GRPC 상태 확인 프로토콜](https://github.com/grpc/grpc/blob/master/doc/health-checking.md)을 준수해야 합니다.
      + **Health check port(상태 확인 포트)**에서 상태 확인을 실행해야 할 포트를 지정합니다.
      + **Healthy threshold(정상 임계 값)**에서 리스너를 정상으로 선언하기 전까지 발생해야 하는 연속적인 상태 확인 성공 횟수를 지정합니다.
      + **Health check interval(상태 확인 간격)**에서 각 상태 확인 실행 사이의 시간 간격을 밀리초 단위로 지정합니다.
      + **Path(경로)**에서 상태 확인 요청에 대한 대상 경로를 지정합니다. 이 값은 **상태 확인 프로토콜**이 `http` 또는 `http2`인 경우에만 사용됩니다. 다른 프로토콜에서는 이 값이 무시됩니다.
      + **제한 시간**에서 상태 확인으로부터 응답을 받을 때까지 대기할 시간을 밀리초 단위로 지정합니다.
      + **비정상 임계값**에서 리스너를 비정상으로 선언하기 전까지 발생해야 하는 연속적인 상태 확인 실패 횟수를 지정합니다.

   1. (선택 사항) 클라이언트가 TLS를 사용하여 이 가상 게이트웨이와 통신할지 여부를 지정하려면 **TLS 종료 활성화**를 선택합니다.
      + **모드**의 경우 리스너에서 TLS를 구성할 모드를 선택합니다.
      + **인증서 방법**에서 다음 옵션 중 하나를 수행합니다. 인증서는 특정 요구 사항을 충족해야 합니다. 자세한 내용은 [인증서 요구 사항](tls.md#virtual-node-tls-prerequisites) 단원을 참조하십시오.
        + **AWS Certificate Manager 호스팅** - 기존 **인증서를** 선택합니다.
        + **Envoy 보안 암호 검색 서비스(SDS)** 호스팅 - Envoy가 보안 암호 검색 서비스를 사용하여 가져오는 보안 암호의 이름을 입력합니다.
        + **로컬 파일 호스팅** - Envoy가 배포된 파일 시스템의 **인증서 체인** 및 **프라이빗 키** 파일 경로를 지정합니다.
      + (선택 사항) 클라이언트가 인증서를 제공하는 경우 **클라이언트 인증서 필요** 및 아래 옵션 중 하나를 선택하여 상호 TLS 인증을 활성화합니다. 상호 TLS에 대해 자세히 알아보려면 App Mesh [상호 TLS 인증](https://docs.aws.amazon.com/app-mesh/latest/userguide/mutual-tls.html) 설명서를 참조하세요.
        + **Envoy 보안 암호 검색 서비스(SDS)** 호스팅 - Envoy가 보안 암호 검색 서비스를 사용하여 가져오는 보안 암호의 이름을 입력합니다.
        + **로컬 파일 호스팅** - Envoy가 배포되는 파일 시스템의 **인증서 체인** 파일 경로를 지정합니다.
      + (선택 사항) **주체 대체 이름**을 입력합니다. SAN을 더 추가하려면 **SAN 추가**를 선택합니다. SAN은 FQDN 또는 URI 형식이어야 합니다.

1. **가상 게이트웨이 생성**을 선택하여 완료합니다.

------
#### [ AWS CLI ]

** AWS CLI를 사용하여 가상 게이트웨이를 생성하려면**

다음 명령을 사용하여 가상 게이트웨이를 생성하고 JSON을 입력합니다(*빨간색* 값을 원하는 값으로 대체).

1. 

   ```
   aws appmesh create-virtual-gateway \ 
   --mesh-name meshName \ 
   --virtual-gateway-name virtualGatewayName \ 
   --cli-input-json file://create-virtual-gateway.json
   ```

1. **예제** create-virtual-gateway.json의 내용은 다음과 같습니다.

   ```
   {
       "spec": {
         "listeners": [
           {
             "portMapping": {
               "port": 9080,
               "protocol": "http"
             }
           }
         ]
       }
   }
   ```

1. 출력 예시:

   ```
   {
       "virtualGateway": {
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/meshName/virtualGateway/virtualGatewayName",
               "createdAt": "2022-04-06T10:42:42.015000-05:00",
               "lastUpdatedAt": "2022-04-06T10:42:42.015000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "123456789012",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 1
           },
           "spec": {
               "listeners": [
                   {
                       "portMapping": {
                           "port": 9080,
                           "protocol": "http"
                       }
                   }
               ]
           },
           "status": {
               "status": "ACTIVE"
           },
           "virtualGatewayName": "virtualGatewayName"
       }
   }
   ```

App Mesh AWS CLI 용를 사용하여 가상 게이트웨이를 생성하는 방법에 대한 자세한 내용은 AWS CLI 참조의 [create-virtual-gateway](https://docs.aws.amazon.com/cli/latest/reference/appmesh/create-virtual-gateway.html) 명령을 참조하세요.

------

## 가상 게이트웨이 배포
<a name="deploy-virtual-gateway"></a>

[Envoy 컨테이너](envoy.md)만 포함하는 Amazon ECS 또는 Kubernetes 서비스를 배포합니다. 또한 Amazon EC2 인스턴스의 Envoy 컨테이너를 배포할 수도 있습니다. 자세한 내용은 [App Mesh 및 Amazon EC2 시작하기](https://docs.aws.amazon.com/app-mesh/latest/userguide/getting-started-ec2.html)를 참조하세요. [App Mesh 및 Amazon ECS 시작하기](https://docs.aws.amazon.com/app-mesh/latest/userguide/getting-started-ecs.html) 또는 [AWS App Mesh 및 Kubernetes 시작하기](https://docs.aws.amazon.com/app-mesh/latest/userguide/getting-started-kubernetes.html)에서 Amazon ECS에 배포하는 방법에 대한 자세한 내용을 참조하여 Kubernetes에 배포하세요. 프록시의 트래픽이 자체적으로 리디렉션되지 않도록 `APPMESH_RESOURCE_ARN` 환경 변수를 `mesh/mesh-name/virtualGateway/virtual-gateway-name`로 설정하고 프록시 구성을 지정하지 않아야 합니다. 기본적으로 App Mesh는 Envoy가 지표 및 트레이스에서 자신을 참조할 때 `APPMESH_RESOURCE_ARN`에서 지정한 리소스의 이름을 사용합니다. `APPMESH_RESOURCE_CLUSTER ` 환경 변수를 사용자 고유의 이름으로 설정하여 이 동작을 재정의할 수 있습니다.

컨테이너의 여러 인스턴스를 배포하고 인스턴스에 대한 트래픽을 로드 밸런싱하도록 Network Load Balancer를 설정하는 것이 좋습니다. 로드 밸런서의 서비스 검색 이름은 외부 서비스가 메시에 있는 리소스에 액세스하는 데 사용하려는 이름(예: *myapp.example.com*)입니다. 자세한 내용은 [Network Load Balancer 생성](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-network-load-balancer.html)(Amazon ECS), [외부 로드 밸런서 생성](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/)(Kubernetes) 또는 [자습서: Amazon EC2에서 애플리케이션의 가용성 향상](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-increase-availability.html)을 참조하세요. 또한 [App Mesh 예제](https://docs.aws.amazon.com/app-mesh/latest/userguide/examples.html)에서 더 많은 예제와 연습을 찾을 수 있습니다.

Envoy에 대한 프록시 권한 부여를 활성화합니다. 자세한 내용은 [Envoy 프록시 권한 부여](proxy-authorization.md) 단원을 참조하십시오.

## 가상 게이트웨이 삭제
<a name="delete-virtual-gateway"></a>

------
#### [ AWS Management Console ]

**를 사용하여 가상 게이트웨이를 삭제하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 가상 게이트웨이를 삭제하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 왼쪽 탐색 창에서 **가상 게이트웨이**를 선택합니다.

1. 삭제하려는 가상 게이트웨이를 선택하고 **삭제**를 선택합니다. 연결된 게이트웨이 경로가 있는 가상 게이트웨이는 삭제할 수 없습니다. 연결된 게이트웨이 경로를 먼저 삭제해야 합니다. 계정이 **리소스 소유자**로 나열된 경우에만 가상 게이트웨이를 삭제할 수 있습니다.

1. 확인 상자에 **delete**를 입력한 다음, **삭제**를 선택합니다.

------
#### [ AWS CLI ]

**를 사용하여 가상 게이트웨이를 삭제하려면 AWS CLI**

1. 다음 명령을 사용하여 가상 게이트웨이를 삭제합니다(*빨간색* 값을 원하는 값으로 대체).

   ```
   aws appmesh delete-virtual-gateway \
        --mesh-name meshName \
        --virtual-gateway-name virtualGatewayName
   ```

1. 출력 예시:

   ```
   {
       "virtualGateway": {
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/meshName/virtualGateway/virtualGatewayName",
               "createdAt": "2022-04-06T10:42:42.015000-05:00",
               "lastUpdatedAt": "2022-04-07T10:57:22.638000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "123456789012",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 2
           },
           "spec": {
               "listeners": [
                   {
                       "portMapping": {
                           "port": 9080,
                           "protocol": "http"
                       }
                   }
               ]
           },
           "status": {
               "status": "DELETED"
           },
           "virtualGatewayName": "virtualGatewayName"
       }
   }
   ```

App Mesh용를 사용하여 가상 게이트웨이를 삭제하는 방법에 AWS CLI 대한 자세한 내용은 AWS CLI 참조의 [delete-virtual-gateway](https://docs.aws.amazon.com/cli/latest/reference/appmesh/delete-virtual-gateway.html) 명령을 참조하세요.

------

# 게이트웨이 경로
<a name="gateway-routes"></a>

**중요**  
지원 종료 알림: 2026년 9월 30일에에 대한 지원을 중단할 AWS 예정입니다 AWS App Mesh. 2026년 9월 30일 이후에는 AWS App Mesh 콘솔 또는 AWS App Mesh 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은이 블로그 게시물 [에서 Amazon ECS Service Connect AWS App Mesh 로 마이그레이션](https://aws.amazon.com/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect)을 참조하세요.

게이트웨이 라우팅은 가상 게이트웨이에 연결되며 기존 가상 서비스로 트래픽을 라우팅합니다. 라우팅이 요청과 일치하는 경우 대상 가상 서비스에 트래픽을 분산할 수 있습니다. 이 주제는 서비스 메시의 게이트웨이 경로를 사용하는 데 도움이 됩니다.

## 게이트웨이 경로 생성
<a name="create-gateway-route"></a>

------
#### [ AWS Management Console ]

**를 사용하여 게이트웨이 경로를 생성하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 게이트웨이 경로를 생성하려는 메시를 선택합니다. 소유하고 있는 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 왼쪽 탐색 창에서 **가상 게이트웨이**를 선택합니다.

1. 새 게이트웨이 경로를 연결할 가상 게이트웨이를 선택합니다. 목록에 항목이 없는 경우 먼저 [가상 게이트웨이를 생성](virtual_gateways.md#create-virtual-gateway)해야 합니다. 사용자 계정이 **리소스 소유자**로 나열된 가상 게이트웨이에 대해서만 게이트웨이 경로를 생성할 수 있습니다.

1. **게이트웨이 경로** 테이블에서 **게이트웨이 경로 생성**을 선택합니다.

1. **게이트웨이 경로 이름**에서 게이트웨이 경로에 사용할 이름을 지정합니다.

1. **게이트웨이 경로 유형**으로는 **http**, **http2** 또는 **grpc**를 선택합니다.

1. 기존 **가상 서비스 이름**을 선택합니다. 목록에 항목이 없는 경우 먼저 [가상 서비스](virtual_services.md#create-virtual-service)를 생성해야 합니다.

1. **가상 서비스 공급자 포트**의 대상에 해당하는 포트를 선택합니다. 선택한 가상 서비스의 공급자(라우터 또는 노드)에 리스너가 여러 개 있는 경우 가상 서비스 공급자 포트가 **필수**입니다.

1. (선택 사항) **우선순위**에서 이 게이트웨이 경로의 우선순위를 지정합니다.

1. **일치** 구성의 경우 다음을 지정합니다.
   + 

     **http/http2**가 선택된 유형인 경우:
     + **(선택 사항) **메서드** - 들어오는 **http**/http2** 요청에서 일치시킬 메서드 헤더를 지정합니다.
     + (선택 사항) **포트 일치** ‐ 들어오는 트래픽에 맞는 포트를 찾습니다. 이 가상 게이트웨이에 여러 리스너가 있는 경우 포트 일치가 **필수**입니다.
     + (선택 사항) **정확한/접미사 호스트 이름** - 수신 요청에서 대상 가상 서비스로 라우팅하기 위해 일치시켜야 하는 호스트 이름을 지정합니다.
     + (선택 사항) **접두사/정확한/정규식 경로** ‐ URL 경로를 일치시키는 방법입니다.
       + **접두사 일치** - 기본적으로 게이트웨이 경로의 일치하는 요청이 대상 가상 서비스 이름에 다시 쓰여지고 일치하는 접두사가 다시 작성됩니다(기본값 `/`). 가상 서비스를 구성하는 방법에 따라 가상 라우터를 사용하여 특정 접두사 또는 헤더를 기준으로 요청을 다른 가상 노드로 라우팅할 수 있습니다.
**중요**  
**접두사 일치**에 대해 `/aws-appmesh*` 및 `/aws-app-mesh*` 둘 다 지정할 수 없습니다. 이러한 접두사는 향후 App Mesh 내부 사용을 위해 예약되어 있습니다.
게이트웨이 경로를 여러 개 정의하면 요청은 접두사가 가장 긴 경로와 일치됩니다. 예를 들어 두 개의 게이트웨이 경로가 존재하는데 하나는 접두사가 `/chapter`이고 다른 하나는 접두사가 `/`인 경우 `www.example.com/chapter/`에 대한 요청은 접두사 `/chapter`인 게이트웨이 경로와 일치합니다.
**참고**  
**경로**/**접두사** 기반 일치를 활성화하면 App Mesh는 경로 정규화([normalize\$1path](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-normalize-path) 및 [merge\$1slashes](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-merge-slashes))를 활성화하여 경로 혼동 취약성이 발생할 가능성을 최소화합니다.  
요청에 참여하는 당사자가 서로 다른 경로 표현을 사용하는 경우 경로 혼동 취약성이 발생합니다.
       + **정확한 일치** ‐ exact 파라미터는 경로의 부분 일치를 비활성화하고 경로가 현재 URL에 대해 **EXACT** 일치인 경우에만 경로를 반환하도록 합니다.
       + **정규식 일치** ‐ 여러 URL이 실제로 웹 사이트의 단일 페이지를 식별할 수 있는 패턴을 설명하는 데 사용됩니다.
     + (선택 사항) **쿼리 파라미터** - 이 필드를 사용하면 쿼리 파라미터를 일치시킬 수 있습니다.
     + **(선택 사항) **헤더** - **http** 및 http2**에 대한 헤더를 지정합니다. ㅁ대상 가상 서비스로 라우팅하려면 들어오는 요청과 일치해야 합니다.
   + 

     **grpc**가 선택된 유형인 경우:
     + **호스트 이름 일치 유형** 및 (선택 사항) **정확한/접미사 일치** - 수신 요청에서 대상 가상 서비스로 라우팅하기 위해 일치시켜야 하는 호스트 이름을 지정합니다.
     + **grpc 서비스 이름** ‐ **grpc** 서비스는 애플리케이션의 API 역할을 하며 ProtoBuf로 정의됩니다.
**중요**  
**서비스 이름**에는 `/aws.app-mesh*` 또는 `aws.appmesh`를 지정할 수 없습니다. 이러한 서비스 이름은 향후 App Mesh 내부 사용을 위해 예약되어 있습니다.
     + (선택 사항) **메타데이터** - **grpc**의 메타데이터를 지정합니다. 대상 가상 서비스로 라우팅하려면 들어오는 요청과 일치해야 합니다.

1. (선택 사항) **다시 작성** 구성의 경우:
   + 

     **http/http2**가 선택된 유형인 경우:
     + 

       **접두사**가 선택된 일치 유형인 경우:
       + **호스트 이름 자동 다시 작성 재정의** - 기본적으로 호스트 이름은 대상 가상 서비스의 이름으로 다시 작성됩니다.
       + **접두사 자동 다시 작성 재정의** - 켜져 있는 경우 **접두사 다시 작성**이 다시 작성된 접두사 값을 지정합니다.
     + 

       **정확한 경로**가 선택된 일치 유형인 경우:
       + **호스트 이름 자동 다시 작성 재정의** - 기본적으로 호스트 이름은 대상 가상 서비스의 이름으로 다시 작성됩니다.
       + **경로 다시 작성** - 다시 작성된 경로의 값을 지정합니다. 기본 경로는 없습니다.
     + 

       **접두사 경로**가 선택된 일치 유형인 경우:
       + **호스트 이름 자동 다시 작성 재정의** - 기본적으로 호스트 이름은 대상 가상 서비스의 이름으로 다시 작성됩니다.
       + **경로 다시 작성** - 다시 작성된 경로의 값을 지정합니다. 기본 경로는 없습니다.
   + 

     **grpc**가 선택된 유형인 경우:
     + **호스트 이름 자동 다시 작성 재정의** - 기본적으로 호스트 이름은 대상 가상 서비스의 이름으로 다시 작성됩니다.

1. **게이트웨이 경로 생성**을 선택하여 완료합니다.

------
#### [ AWS CLI ]

 AWS CLI를 사용하여 게이트웨이 경로를 생성하려면****

다음 명령을 사용하여 게이트웨이 경로를 생성하고 JSON을 입력합니다(*빨간색* 값을 원하는 값으로 대체).

1. 

   ```
   aws appmesh create-virtual-gateway \ 
   --mesh-name meshName \ 
   --virtual-gateway-name virtualGatewayName \
   --gateway-route-name gatewayRouteName \ 
   --cli-input-json file://create-gateway-route.json
   ```

1. **예제** create-gateway-route.json의 내용은 다음과 같습니다.

   ```
   {
       "spec": {
           "httpRoute" : {
               "match" : {
                   "prefix" : "/"
               },
               "action" : {
                   "target" : {
                       "virtualService": {
                           "virtualServiceName": "serviceA.svc.cluster.local"
                       }
                   }
               }
           }
       }
   }
   ```

1. 출력 예시:

   ```
   {
       "gatewayRoute": {
           "gatewayRouteName": "gatewayRouteName",
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualGateway/virtualGatewayName/gatewayRoute/gatewayRouteName",
               "createdAt": "2022-04-06T11:05:32.100000-05:00",
               "lastUpdatedAt": "2022-04-06T11:05:32.100000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "210987654321",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 1
           },
           "spec": {
               "httpRoute": {
                   "action": {
                       "target": {
                           "virtualService": {
                               "virtualServiceName": "serviceA.svc.cluster.local"
                           }
                       }
                   },
                   "match": {
                       "prefix": "/"
                   }
               }
           },
           "status": {
               "status": "ACTIVE"
           },
           "virtualGatewayName": "gatewayName"
       }
   }
   ```

App Mesh용를 사용하여 게이트웨이 경로를 생성하는 AWS CLI 방법에 대한 자세한 내용은 AWS CLI 참조의 [create-gateway-route](https://docs.aws.amazon.com/cli/latest/reference/appmesh/create-gateway-route.html) 명령을 참조하세요.

------

## 게이트웨이 경로 삭제
<a name="delete-gateway-route"></a>

------
#### [ AWS Management Console ]

**를 사용하여 게이트웨이 경로를 삭제하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 게이트웨이 경로를 삭제하려는 메시를 선택합니다. 소유하고 있는 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 왼쪽 탐색 창에서 **가상 게이트웨이**를 선택합니다.

1. 게이트웨이 경로를 삭제하려는 가상 게이트웨이를 선택합니다.

1. **게이트웨이 경로** 테이블에서 삭제하려는 게이트웨이 경로를 선택하고 **삭제**를 선택합니다. 계정이 **리소스 소유자**로 나열된 경우에만 게이트웨이 경로를 삭제할 수 있습니다.

1. 확인 상자에 **delete**를 입력한 다음, **삭제**를 클릭합니다.

------
#### [ AWS CLI ]

**를 사용하여 게이트웨이 경로를 삭제하려면 AWS CLI**

1. 다음 명령을 사용하여 게이트웨이 경로를 삭제합니다(*빨간색* 값을 원하는 값으로 대체).

   ```
   aws appmesh delete-gateway-route \
        --mesh-name meshName \
        --virtual-gateway-name virtualGatewayName \
        --gateway-route-name gatewayRouteName
   ```

1. 출력 예시:

   ```
   {
       "gatewayRoute": {
           "gatewayRouteName": "gatewayRouteName",
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualGateway/virtualGatewayName/gatewayRoute/gatewayRouteName",
               "createdAt": "2022-04-06T11:05:32.100000-05:00",
               "lastUpdatedAt": "2022-04-07T10:36:33.191000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "210987654321",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 2
           },
           "spec": {
               "httpRoute": {
                   "action": {
                       "target": {
                           "virtualService": {
                               "virtualServiceName": "serviceA.svc.cluster.local"
                           }
                       }
                   },
                   "match": {
                       "prefix": "/"
                   }
               }
           },
           "status": {
               "status": "DELETED"
           },
           "virtualGatewayName": "virtualGatewayName"
       }
   }
   ```

App Mesh용를 사용하여 게이트웨이 경로를 삭제하는 방법에 AWS CLI 대한 자세한 내용은 AWS CLI 참조의 [delete-gateway-route](https://docs.aws.amazon.com/cli/latest/reference/appmesh/delete-gateway-route.html) 명령을 참조하세요.

------

# 가상 노드
<a name="virtual_nodes"></a>

**중요**  
지원 종료 공지: 2026년 9월 30일에 AWS 는에 대한 지원을 중단합니다 AWS App Mesh. 2026년 9월 30일 이후에는 AWS App Mesh 콘솔 또는 AWS App Mesh 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은이 블로그 게시물 [Migrating from to Amazon ECS Service Connect를 참조 AWS App Mesh 하세요](https://aws.amazon.com/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect).

가상 노드는 Amazon ECS 서비스 또는 Kubernetes 배포와 같은 특정 작업 그룹에 대한 논리 포인터 역할을 합니다. 가상 노드를 생성할 때 작업 그룹에 대한 서비스 검색 방법을 지정해야 합니다. 가상 노드에서 예상되는 인바운드 트래픽은 *리스너*로 지정해야 합니다. 가상 노드에서 아웃바운드 트래픽을 보내는 모든 가상 서비스는 *백엔드*로 지정됩니다.

새로운 가상 노드에 대한 응답 메타 데이터에는 가상 노드와 연결된 Amazon 리소스 이름(ARN)이 들어 있습니다. Amazon ECS 태스크 정의 또는 Kubernetes 포드 사양에서 이 값을 태스크 그룹의 Envoy 프록시 컨테이너에 대한 `APPMESH_RESOURCE_ARN` 환경 변수로 설정합니다. 예를 들어 값이 `arn:aws:appmesh:us-west-2:111122223333:mesh/myMesh/virtualNode/myVirtualNode`일 수 있습니다. 그러면 `node.id` 및 `node.cluster` Envoy 파라미터로 매핑됩니다. 이 변수를 설정할 때는 Envoy 이미지 `1.15.0` 이상을 사용하고 있어야 합니다. App Mesh Envoy 변수에 대한 자세한 내용은 [Envoy 이미지](envoy.md) 섹션을 참조하세요.

**참고**  
기본적으로 App Mesh는 Envoy가 지표 및 트레이스에서 자신을 참조할 때 `APPMESH_RESOURCE_ARN`에서 지정한 리소스의 이름을 사용합니다. `APPMESH_RESOURCE_CLUSTER` 환경 변수를 사용자 고유의 이름으로 설정하여 이 동작을 재정의할 수 있습니다.

## 가상 노드 생성
<a name="vn-create-virtual-node"></a>

------
#### [ AWS Management Console ]

**를 사용하여 가상 노드를 생성하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 가상 노드를 생성하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 왼쪽 탐색 창에서 **가상 노드**를 선택합니다.

1. **가상 노드 생성**을 선택한 다음, 가상 노드에 대한 설정을 지정합니다.

1. **가상 노드 이름**에서 가상 노드의 이름을 입력합니다.

1. **서비스 검색 방법**에서 다음 옵션 중 하나를 선택합니다.
   + **DNS** – 가상 노드가 나타내는 실제 서비스의 **DNS 호스트 이름**을 지정합니다. Envoy 프록시는 Amazon VPC에 배포됩니다. 프록시는 VPC용으로 구성된 DNS 서버에 이름 확인 요청을 보냅니다. 호스트 이름이 확인되면 DNS 서버는 하나 이상의 IP 주소를 반환합니다. VPC DNS 설정에 대한 자세한 내용은 [VPC와 함께 DNS 사용](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)을 참조하세요. **DNS 응답 유형**(선택 사항)의 경우 DNS 확인자가 반환하는 엔드포인트 유형을 지정합니다. **로드 밸런서**는 DNS 확인자가 부하 분산 엔드포인트 세트를 반환하는 것을 의미합니다. **엔드포인트**는 DNS 확인자가 모든 엔드포인트를 반환한다는 것을 의미합니다. 기본적으로 응답 유형은 **로드 밸런서**로 간주됩니다.
**참고**  
**Route53**을 사용하는 경우 **로드 밸런서**를 사용해야 합니다.
   + **AWS Cloud Map** - 기존 **서비스 이름**과 HTTP **네임스페이스**를 지정합니다. 선택적으로 **행 추가**를 선택하고 **키**와 **값을** 지정 AWS Cloud Map 하여 App Mesh가 쿼리할 수 있는 속성을 지정할 수도 있습니다. 지정된 모든 키/값 페어와 일치하는 인스턴스만 반환됩니다. 를 사용하려면 AWS Cloud Map계정에 `AWSServiceRoleForAppMesh` [서비스 연결 역할](using-service-linked-roles.md)이 있어야 합니다. 에 대한 자세한 내용은 [AWS Cloud Map 개발자 안내서](https://docs.aws.amazon.com/cloud-map/latest/dg/)를 AWS Cloud Map참조하세요.
   + **없음** – 가상 노드에서 수신 트래픽을 예상하지 않을 경우에 선택합니다.

1. 

**IP 버전 기본 설정**

   **기본 IP 버전 동작 재정의**를 켜서 메시 내 트래픽에 사용해야 하는 IP 버전을 제어할 수 있습니다. 기본적으로 App Mesh는 다양한 IP 버전을 사용합니다.
**참고**  
가상 노드에서 IP 기본 설정을 지정하면 이 특정 노드의 메시에 대해 설정된 IP 기본 설정만 재정의됩니다.
   + 기본값
     + Envoy의 DNS 확인자는 `IPv6`를 선호하고 `IPv4`로 대체합니다.
     + 가능한 AWS Cloud Map 경우에서 반환한 `IPv4` 주소를 사용하며 `IPv6` 주소 사용으로 돌아갑니다.
     + 로컬 앱용으로 생성된 엔드포인트는 `IPv4` 주소를 사용합니다.
     + Envoy 리스너는 모든 `IPv4` 주소에 바인딩됩니다.
   + IPv6 선호
     + Envoy의 DNS 확인자는 `IPv6`를 선호하고 `IPv4`로 대체합니다.
     + 에서 반환한 `IPv6` 주소 AWS Cloud Map 는 사용 가능한 경우 사용되며 `IPv4` 주소 사용으로 돌아갑니다.
     + 로컬 앱용으로 생성된 엔드포인트는 `IPv6` 주소를 사용합니다.
     + Envoy 리스너는 모든 `IPv4` 및 `IPv6` 주소에 바인딩됩니다.
   + IPv4 선호
     + Envoy의 DNS 확인자는 `IPv4`를 선호하고 `IPv6`로 대체합니다.
     + 가능한 AWS Cloud Map 경우에서 반환한 `IPv4` 주소를 사용하며 `IPv6` 주소 사용으로 돌아갑니다.
     + 로컬 앱용으로 생성된 엔드포인트는 `IPv4` 주소를 사용합니다.
     + Envoy 리스너는 모든 `IPv4` 및 `IPv6` 주소에 바인딩됩니다.
   + IPv6 전용
     + Envoy의 DNS 확인자는 `IPv6`만 사용합니다.
     + 에서 반환한 `IPv6` 주소만 AWS Cloud Map 사용됩니다. AWS Cloud Map 가 `IPv4`주소를 반환하는 경우 IP 주소는 사용되지 않으며 빈 결과가 Envoy에 반환됩니다.
     + 로컬 앱용으로 생성된 엔드포인트는 `IPv6` 주소를 사용합니다.
     + Envoy 리스너는 모든 `IPv4` 및 `IPv6` 주소에 바인딩됩니다.
   + IPv4 전용
     + Envoy의 DNS 확인자는 `IPv4`만 사용합니다.
     + 에서 반환한 `IPv4` 주소만 AWS Cloud Map 사용됩니다. AWS Cloud Map 가 `IPv6`주소를 반환하는 경우 IP 주소는 사용되지 않으며 빈 결과가 Envoy에 반환됩니다.
     + 로컬 앱용으로 생성된 엔드포인트는 `IPv4` 주소를 사용합니다.
     + Envoy 리스너는 모든 `IPv4` 및 `IPv6` 주소에 바인딩됩니다.

1. 

**(선택 사항) **클라이언트 정책 기본값** - 백엔드 가상 서비스와 통신할 때 기본 요구 사항을 구성합니다.**
**참고**  
기존 가상 노드에 대해 전송 계층 보안(TLS)을 활성화하려면 기존 가상 노드와 동일한 서비스를 나타내며 TLS를 활성화할 새 가상 노드를 생성하는 것이 좋습니다. 그런 다음, 가상 라우터와 경로를 사용하여 트래픽을 새 가상 노드로 점진적으로 이동합니다. 경로 생성 및 전환 가중치 조정에 대한 자세한 내용은 [Routes](routes.md) 섹션을 참조하세요. 트래픽을 처리하는 기존 가상 노드를 TLS로 업데이트하면 업데이트한 가상 노드의 Envoy 프록시가 인증서를 받기 전에 다운스트림 클라이언트 Envoy 프록시가 TLS 검증 컨텍스트를 수신할 수 있습니다. 이로 인해 다운스트림 Envoy 프록시에서 TLS 협상 오류가 발생할 수 있습니다.
백엔드 서비스의 가상 노드로 표시되는 애플리케이션과 함께 배포된 Envoy 프록시에 대해 [프록시 인증](proxy-authorization.md)을 활성화해야 합니다. 프록시 인증을 활성화할 때는 이 가상 노드가 통신하는 가상 노드로만 액세스를 제한하는 것이 좋습니다.
   + (선택 사항) 가상 노드가 게이트웨이가 전송 계층 보안(TLS)을 사용하여 모든 백엔드와 통신하도록 하려면 **TLS 적용**을 선택합니다.
   + (선택 사항) 하나 이상의 특정 포트에만 TLS를 사용하도록 하려면 **포트**에 번호를 입력합니다. 포트를 추가하려면 **포트 추가**를 선택합니다. 포트를 지정하지 않으면 모든 포트에 TLS가 적용됩니다.
   + **검증 방법**에서 다음 옵션 중 하나를 선택합니다. 지정하는 인증서는 이미 존재하고 특정 요구 사항을 충족해야 합니다. 자세한 내용은 [인증서 요구 사항](tls.md#virtual-node-tls-prerequisites) 단원을 참조하십시오.
     + **AWS Private Certificate Authority** 호스팅 - 기존 **인증서**를 하나 이상 선택합니다. ACM 인증서로 암호화를 사용하여 샘플 애플리케이션으로 메시를 배포하는 전체 end-to-end 알아보려면 GitHub에서 [AWS Certificate Manager로 TLS 구성을](https://github.com/aws/aws-app-mesh-examples/tree/main/walkthroughs/tls-with-acm) 참조하세요.
     + **Envoy 보안 암호 검색 서비스(SDS)** 호스팅 - Envoy가 보안 암호 검색 서비스를 사용하여 가져오는 보안 암호의 이름을 입력합니다.
     + **로컬 파일 호스팅** - Envoy가 배포되는 파일 시스템의 **인증서 체인** 파일 경로를 지정합니다. 로컬 파일에 암호화를 사용하여 샘플 애플리케이션으로 메시를 배포하는 과정을 전체적으로 자세히 알아보려면 GitHub에서 [파일 제공 TLS 인증서를 사용하여 TLS 구성](https://github.com/aws/aws-app-mesh-examples/tree/main/walkthroughs/howto-tls-file-provided)을 참조하세요.
   + (선택 사항) **주체 대체 이름**을 입력합니다. SAN을 더 추가하려면 **SAN 추가**를 선택합니다. SAN은 FQDN 또는 URI 형식이어야 합니다.
   + (선택 사항) **클라이언트 인증서 제공**과 아래 옵션 중 하나를 선택하여 서버가 요청할 때 클라이언트 인증서를 제공하고 상호 TLS 인증을 활성화합니다. 상호 TLS에 대해 자세히 알아보려면 App Mesh [상호 TLS 인증](https://docs.aws.amazon.com/app-mesh/latest/userguide/mutual-tls.html) 설명서를 참조하세요.
     + **Envoy 보안 암호 검색 서비스(SDS)** 호스팅 - Envoy가 보안 암호 검색 서비스를 사용하여 가져오는 보안 암호의 이름을 입력합니다.
     + **로컬 파일 호스팅** - Envoy가 배포되는 파일 시스템의 **프라이빗 키** 뿐만 아니라 **인증서 체인** 파일의 경로를 지정합니다.

1. 

**(선택 사항) **서비스 백엔드** - 가상 노드가 통신할 App Mesh 가상 서비스를 지정합니다.**
   + 가상 노드가 통신하는 가상 서비스의 가상 서비스에 대해 App Mesh 가상 서비스 이름 또는 전체 Amazon 리소스 이름(ARN)을 입력합니다.
   + (선택 사항) 백엔드에 대해 고유한 TLS 설정을 지정하려면 **TLS 설정**을 선택한 다음, **기본값 재정의**를 선택합니다.
     + (선택 사항) 가상 노드가 게이트웨이가 TLS를 사용하여 모든 백엔드와 통신하도록 하려면 **TLS 적용**을 선택합니다.
     + (선택 사항) 하나 이상의 특정 포트에만 TLS를 사용하도록 하려면 **포트**에 번호를 입력합니다. 포트를 추가하려면 **포트 추가**를 선택합니다. 포트를 지정하지 않으면 모든 포트에 TLS가 적용됩니다.
     + **검증 방법**에서 다음 옵션 중 하나를 선택합니다. 지정하는 인증서는 이미 존재하고 특정 요구 사항을 충족해야 합니다. 자세한 내용은 [인증서 요구 사항](tls.md#virtual-node-tls-prerequisites) 단원을 참조하십시오.
       + **AWS Private Certificate Authority** 호스팅 - 기존 **인증서**를 하나 이상 선택합니다.
       + **Envoy 보안 암호 검색 서비스(SDS)** 호스팅 - Envoy가 보안 암호 검색 서비스를 사용하여 가져오는 보안 암호의 이름을 입력합니다.
       + **로컬 파일 호스팅** - Envoy가 배포되는 파일 시스템의 **인증서 체인** 파일 경로를 지정합니다.
     + (선택 사항) **주체 대체 이름**을 입력합니다. SAN을 더 추가하려면 **SAN 추가**를 선택합니다. SAN은 FQDN 또는 URI 형식이어야 합니다.
     + (선택 사항) **클라이언트 인증서 제공**과 아래 옵션 중 하나를 선택하여 서버가 요청할 때 클라이언트 인증서를 제공하고 상호 TLS 인증을 활성화합니다. 상호 TLS에 대해 자세히 알아보려면 App Mesh [상호 TLS 인증](https://docs.aws.amazon.com/app-mesh/latest/userguide/mutual-tls.html) 설명서를 참조하세요.
       + **Envoy 보안 암호 검색 서비스(SDS)** 호스팅 - Envoy가 보안 암호 검색 서비스를 사용하여 가져오는 보안 암호의 이름을 입력합니다.
       + **로컬 파일 호스팅** - Envoy가 배포되는 파일 시스템의 **프라이빗 키** 뿐만 아니라 **인증서 체인** 파일의 경로를 지정합니다.
   + 백엔드를 더 추가하려면 **백엔드 추가**를 선택합니다.

1. (선택 사항) **로깅**

   로깅을 구성하려면 Envoy에서 사용할 HTTP 액세스 로그 경로를 입력합니다. Docker 로그 드라이버를 사용하여 Envoy 로그를 Amazon CloudWatch Logs와 같은 서비스로 내보낼 수 있도록 `/dev/stdout` 경로를 사용하는 것이 좋습니다.
**참고**  
로그는 계속 애플리케이션의 에이전트에 의해 수집되어 대상으로 전송되어야 합니다. 이 파일 경로는 로그를 보낼 위치만 Envoy에 지시합니다.

1. **리스너 구성**

   리스너는`HTTP`, `HTTP/2`, `GRPC` 및 `TCP` 프로토콜을 지원합니다. `HTTPS`는 지원되지 않습니다.

   1. 가상 노드에서 인바운드 트래픽을 예상하는 경우 **리스너**에 대해 **포트** 및 **프로토콜**을 지정합니다. **http** 리스너는 웹 소켓으로의 연결 전환을 허용합니다. **리스너 추가**를 클릭하여 리스너를 여러 개 추가할 수 있습니다. **제거** 버튼을 누르면 해당 리스너가 제거됩니다.

   1. 

**(선택 사항) **연결 풀 활성화****

      연결 풀링은 Envoy가 로컬 애플리케이션 클러스터에 대해 동시에 설정할 수 있는 연결 수를 제한합니다. 이 작업은 로컬 애플리케이션의 연결 과부하를 방지하고 애플리케이션 요구 사항에 맞게 트래픽 셰이핑을 조정할 수 있도록 하기 위한 것입니다.

      가상 노드 리스너의 대상 측 연결 풀 설정을 구성할 수 있습니다. App Mesh는 기본적으로 클라이언트 측 연결 풀 설정을 무제한으로 설정하여 메시 구성을 단순화합니다.
**참고**  
connectionPool 및 portMapping 프로토콜은 동일해야 합니다. 리스너 프로토콜이 tcp인 경우 maxConnections만 지정합니다. 리스너 프로토콜이 grpc 또는 http2인 경우 maxRequests만 지정합니다. 리스너 프로토콜이 http인 경우 maxConnections 및 maxPendingRequests를 모두 지정할 수 있습니다.
      + **최대 연결 수**에는 최대 아웃바운드 연결 수를 지정합니다.
      + (선택 사항) **대기 중인 최대 요청 수**에는 Envoy가 대기하는 **최대 연결 수** 이후에 오버플로되는 요청 수를 지정합니다. 기본값은 `2147483647`입니다.

   1. 

**(선택 사항) **이상치 감지 활성화****

      클라이언트 Envoy에 적용된 이상치 탐지를 통해 클라이언트는 알려진 오류가 관찰된 연결에 대해 거의 즉각적인 조치를 취할 수 있습니다. 업스트림 서비스에 있는 개별 호스트의 상태를 추적하는 회로 차단기 구현의 한 형태입니다.

      이상치 탐지는 업스트림 클러스터의 엔드포인트가 다른 엔드포인트와 다르게 작동하는지 여부를 동적으로 판단하여 정상 로드 밸런싱 세트에서 제거합니다.
**참고**  
서버 가상 노드에 대한 이상치 감지를 효과적으로 구성하기 위해 해당 가상 노드의 서비스 검색 방법은 응답 유형 필드가 로 설정된 AWS Cloud Map 또는 DNS일 수 있습니다`ENDPOINTS`. 응답 유형이 `LOADBALANCER`인 DNS 서비스 검색 방법을 사용하는 경우 Envoy 프록시는 업스트림 서비스로 라우팅하기 위해 단일 IP 주소만 선택합니다. 이렇게 하면 호스트 세트에서 비정상 호스트를 배출하는 이상치 탐지 동작이 무효화됩니다. 서비스 검색 유형과 관련된 Envoy 프록시의 동작에 대한 자세한 내용은 서비스 검색 방법 섹션을 참조하세요.
      + **서버 오류**에서 배출에 필요한 연속된 5xx 오류 수를 지정합니다.
      + **이상치 탐지 간격**에서 배출 스윕 분석 간의 시간 간격과 단위를 지정합니다.
      + **기본 배출 기간**에서 호스트가 배출되는 기본 시간 및 단위를 지정합니다.
      + **배출 비율**에 배출될 수 있는 로드 밸런싱 풀의 최대 호스트 비율을 지정합니다.

   1. 

**(선택 사항) **상태 확인 사용** - 상태 확인 정책에 대한 설정을 구성합니다.**

      상태 확인 정책은 선택 사항이지만 상태 정책에 대한 값을 지정한 경우 **정상 임계 값**, **상태 확인 간격**, **상태 확인 프로토콜**, **제한 시간** 및 **비정상 임계값**에 대해 값을 지정해야 합니다.
      + **상태 확인 프로토콜**에 대해 프로토콜을 선택합니다. **grpc**를 선택한 경우 서비스는 [GRPC 상태 확인 프로토콜](https://github.com/grpc/grpc/blob/master/doc/health-checking.md)을 준수해야 합니다.
      + **Health check port(상태 확인 포트)**에서 상태 확인을 실행해야 할 포트를 지정합니다.
      + **Healthy threshold(정상 임계 값)**에서 리스너를 정상으로 선언하기 전까지 발생해야 하는 연속적인 상태 확인 성공 횟수를 지정합니다.
      + **Health check interval(상태 확인 간격)**에서 각 상태 확인 실행 사이의 시간 간격을 밀리초 단위로 지정합니다.
      + **Path(경로)**에서 상태 확인 요청에 대한 대상 경로를 지정합니다. 이 값은 **상태 확인 프로토콜**이 `http` 또는 `http2`인 경우에만 사용됩니다. 다른 프로토콜에서는 이 값이 무시됩니다.
      + **Timeout period(제한 시간)**에서 상태 확인으로부터 응답을 받을 때까지 대기할 시간을 밀리초 단위로 지정합니다.
      + **비정상 임계값**에서 리스너를 비정상으로 선언하기 전까지 발생해야 하는 연속적인 상태 확인 실패 횟수를 지정합니다.

   1. 

**(선택 사항) **TLS 종료 활성화** - 다른 가상 노드가 TLS를 사용하여 이 가상 노드와 통신하는 방법을 구성합니다.**
      + **모드**의 경우 리스너에서 TLS를 구성할 모드를 선택합니다.
      + **인증서 방법**에서 다음 옵션 중 하나를 수행합니다. 인증서는 특정 요구 사항을 충족해야 합니다. 자세한 내용은 [인증서 요구 사항](tls.md#virtual-node-tls-prerequisites) 단원을 참조하십시오.
        + **AWS Certificate Manager 호스팅** - 기존 **인증서를** 선택합니다.
        + **Envoy 보안 암호 검색 서비스(SDS)** 호스팅 - Envoy가 보안 암호 검색 서비스를 사용하여 가져오는 보안 암호의 이름을 입력합니다.
        + **로컬 파일 호스팅** - Envoy 프록시가 배포되는 파일 시스템의 **프라이빗 키** 뿐만 아니라 **인증서 체인** 파일의 경로를 지정합니다.
      + (선택 사항) 클라이언트가 인증서를 제공하는 경우 **클라이언트 인증서 필요** 및 아래 옵션 중 하나를 선택하여 상호 TLS 인증을 활성화합니다. 상호 TLS에 대해 자세히 알아보려면 App Mesh [상호 TLS 인증](https://docs.aws.amazon.com/app-mesh/latest/userguide/mutual-tls.html) 설명서를 참조하세요.
        + **Envoy 보안 암호 검색 서비스(SDS)** 호스팅 - Envoy가 보안 암호 검색 서비스를 사용하여 가져오는 보안 암호의 이름을 입력합니다.
        + **로컬 파일 호스팅** - Envoy가 배포되는 파일 시스템의 **인증서 체인** 파일 경로를 지정합니다.
      + (선택 사항) **주체 대체 이름**을 입력합니다. SAN을 더 추가하려면 **SAN 추가**를 선택합니다. SAN은 FQDN 또는 URI 형식이어야 합니다.

   1. 

**(선택 사항) **제한 시간****
**참고**  
 제한 시간을 기본값보다 크게 지정하는 경우 기본값보다 큰 제한 시간으로 가상 라우터와 경로를 설정해야 합니다. 그러나 제한 시간을 기본값보다 낮은 값으로 줄이는 경우 경로에서 제한 시간을 업데이트할 수도 있습니다. 자세한 내용은 [경로](https://docs.aws.amazon.com/app-mesh/latest/userguide/routes.html)를 참조하세요.
      + **요청 제한 시간** - 리스너 **프로토콜**로 **grpc**, **http** 또는 **http2**를 선택한 경우 요청 제한 시간을 지정할 수 있습니다. 기본값은 15초입니다. `0` 값은 제한 시간을 비활성화합니다.
      + **유휴 기간** - 모든 리스너 프로토콜의 유휴 기간을 지정할 수 있습니다. 기본값은 300초입니다.

1. **가상 노드 생성**을 선택하여 완료합니다.

------
#### [ AWS CLI ]

** AWS CLI를 사용하여 가상 노드를 생성하려면**

다음 명령과 입력 JSON 파일을 사용하여 서비스 검색에 DNS를 사용하는 가상 노드를 생성합니다(*빨간색* 값을 원하는 값으로 대체).

1. 

   ```
   aws appmesh create-virtual-node \
   --cli-input-json file://create-virtual-node-dns.json
   ```

1. **예제** create-virtual-node-dns.json의 내용은 다음과 같습니다.

   ```
   {
       "meshName": "meshName",
       "spec": {
           "listeners": [
               {
                   "portMapping": {
                       "port": 80,
                       "protocol": "http"
                   }
               }
           ],
           "serviceDiscovery": {
               "dns": {
                   "hostname": "serviceBv1.svc.cluster.local"
               }
           }
       },
       "virtualNodeName": "nodeName"
   }
   ```

1. 출력 예시:

   ```
   {
       "virtualNode": {
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualNode/nodeName",
               "createdAt": "2022-04-06T09:12:24.348000-05:00",
               "lastUpdatedAt": "2022-04-06T09:12:24.348000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "210987654321",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 1
           },
           "spec": {
               "listeners": [
                   {
                       "portMapping": {
                           "port": 80,
                           "protocol": "http"
                       }
                   }
               ],
               "serviceDiscovery": {
                   "dns": {
                       "hostname": "serviceBv1.svc.cluster.local"
                   }
               }
           },
           "status": {
               "status": "ACTIVE"
           },
           "virtualNodeName": "nodeName"
       }
   }
   ```

App Mesh용를 사용하여 가상 노드를 생성하는 AWS CLI 방법에 대한 자세한 내용은 AWS CLI 참조의 [create-virtual-node](https://docs.aws.amazon.com/cli/latest/reference/appmesh/create-virtual-node.html) 명령을 참조하세요.

------

## 가상 노드 삭제
<a name="delete-virtual-node"></a>

**참고**  
가상 노드가 [경로](routes.md)의 대상으로 지정되거나 [가상 서비스](virtual_services.md)의 공급자로 지정된 경우 가상 노드를 삭제할 수 없습니다.

------
#### [ AWS Management Console ]

**를 사용하여 가상 노드를 삭제하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 가상 노드를 삭제하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 왼쪽 탐색 창에서 **가상 노드**를 선택합니다.

1. **가상 노드** 테이블에서 삭제하려는 가상 노드를 선택하고 **삭제**를 선택합니다. 가상 노드를 삭제하려면 가상 노드의 **메시 소유자** 또는 **리소스 소유자** 열에 계정 ID가 나열되어야 합니다.

1. 확인 상자에 **delete**를 입력한 다음, **삭제**를 선택합니다.

------
#### [ AWS CLI ]

**를 사용하여 가상 노드를 삭제하려면 AWS CLI**

1. 다음 명령을 사용하여 가상 노드를 삭제합니다(*빨간색* 값을 원하는 값으로 대체).

   ```
   aws appmesh delete-virtual-node \
        --mesh-name meshName \
        --virtual-node-name nodeName
   ```

1. 출력 예시:

   ```
   {
       "virtualNode": {
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualNode/nodeName",
               "createdAt": "2022-04-06T09:12:24.348000-05:00",
               "lastUpdatedAt": "2022-04-07T11:03:48.120000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "210987654321",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 2
           },
           "spec": {
               "backends": [],
               "listeners": [
                   {
                       "portMapping": {
                           "port": 80,
                           "protocol": "http"
                       }
                   }
               ],
               "serviceDiscovery": {
                   "dns": {
                       "hostname": "serviceBv1.svc.cluster.local"
                   }
               }
           },
           "status": {
               "status": "DELETED"
           },
           "virtualNodeName": "nodeName"
       }
   }
   ```

App Mesh용를 사용하여 가상 노드를 삭제하는 방법에 AWS CLI 대한 자세한 내용은 AWS CLI 참조의 [delete-virtual-node](https://docs.aws.amazon.com/cli/latest/reference/appmesh/delete-virtual-node.html) 명령을 참조하세요.

------

# 가상 라우터
<a name="virtual_routers"></a>

**중요**  
지원 종료 공지: 2026년 9월 30일에는에 대한 지원을 중단할 AWS 예정입니다 AWS App Mesh. 2026년 9월 30일 이후에는 AWS App Mesh 콘솔 또는 AWS App Mesh 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은이 블로그 게시물 [Migrating from to Amazon ECS Service Connect를 참조 AWS App Mesh 하세요](https://aws.amazon.com/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect).

가상 라우터는 메시 내에 있는 하나 이상의 가상 서비스에 대한 트래픽을 처리합니다. 가상 라우터를 생성한 후에는 해당 가상 라우터에 대해 수신 요청을 다른 가상 노드로 보내는 라우팅을 만들어 연결할 수 있습니다.

![\[Virtual router diagram showing HTTP route with prefix and targets B and B' for different service versions.\]](http://docs.aws.amazon.com/ko_kr/app-mesh/latest/userguide/images/virtual_router.png)


가상 라우터가 수신할 인바운드 트래픽을 **리스너로 지정해야 합니다.

## 가상 라우터 생성
<a name="create-virtual-router"></a>

------
#### [ AWS Management Console ]

**를 사용하여 가상 라우터를 생성하려면 AWS Management Console**
**참고**  
가상 라우터를 생성할 때는 경로를 생성된 가상 라우터에 연결할 네임스페이스 목록을 식별할 수 있도록 레이블이 있는 네임스페이스 선택기를 추가해야 합니다.

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 가상 라우터를 생성하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 왼쪽 탐색 창에서 **Virtual routers(가상 라우터)**를 선택합니다.

1. **Create virtual router(가상 라우터 생성)**를 선택합니다.

1. **Virtual router name(가상 라우터 이름)**에서 가상 라우터의 이름을 지정합니다. 최대 255개의 문자, 숫자, 하이픈 및 밑줄이 허용됩니다.

1. (선택 사항) **리스너** 구성에서 가상 라우터에 대한 **포트** 및 **프로토콜**을 지정합니다. `http` 리스너는 웹 소켓으로의 연결 전환을 허용합니다. **리스너 추가**를 클릭하여 리스너를 여러 개 추가할 수 있습니다. **제거** 버튼을 누르면 해당 리스너가 제거됩니다.

1. **Create virtual router(가상 라우터 생성)**를 선택하여 완료합니다.

------
#### [ AWS CLI ]

** AWS CLI를 사용하여 가상 라우터를 생성하려면**

다음 명령을 사용하여 가상 라우터를 생성하고 JSON을 입력합니다(*빨간색* 값을 원하는 값으로 대체).

1. 

   ```
   aws appmesh create-virtual-router \
        --cli-input-json file://create-virtual-router.json
   ```

1. **예제** create-virtual-router.json의 내용은 다음과 같습니다.

1. 

   ```
   {
       "meshName": "meshName",
       "spec": {
           "listeners": [
               {
                   "portMapping": {
                       "port": 80,
                       "protocol": "http"
                   }
               }
           ]
       },
       "virtualRouterName": "routerName"
   }
   ```

1. 출력 예시:

   ```
   {
       "virtualRouter": {
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualRouter/routerName",
               "createdAt": "2022-04-06T11:49:47.216000-05:00",
               "lastUpdatedAt": "2022-04-06T11:49:47.216000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "210987654321",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 1
           },
           "spec": {
               "listeners": [
                   {
                       "portMapping": {
                           "port": 80,
                           "protocol": "http"
                       }
                   }
               ]
           },
           "status": {
               "status": "ACTIVE"
           },
           "virtualRouterName": "routerName"
       }
   }
   ```

App Mesh용를 사용하여 가상 라우터를 생성하는 AWS CLI 방법에 대한 자세한 내용은 AWS CLI 참조의 [create-virtual-router](https://docs.aws.amazon.com/cli/latest/reference/appmesh/create-virtual-router.html) 명령을 참조하세요.

------

## 가상 라우터 삭제
<a name="delete-virtual-router"></a>

**참고**  
[경로](routes.md)가 있거나 [가상 서비스](virtual_services.md)의 공급자로 지정된 가상 라우터는 삭제할 수 없습니다.

------
#### [ AWS Management Console ]

**를 사용하여 가상 라우터를 삭제하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 가상 라우터를 삭제하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 왼쪽 탐색 창에서 **Virtual routers(가상 라우터)**를 선택합니다.

1. **가상 라우터** 테이블에서 삭제하려는 가상 라우터를 선택하고 오른쪽 상단 구석에서 **삭제**를 선택합니다. 가상 라우터를 삭제하려면 가상 라우터의 **메시 소유자** 또는 **리소스 소유자** 열에 계정 ID가 나열되어야 합니다.

1. 확인 상자에 **delete**를 입력한 다음, **삭제**를 클릭합니다.

------
#### [ AWS CLI ]

**를 사용하여 가상 라우터를 삭제하려면 AWS CLI**

1. 다음 명령을 사용하여 가상 라우터를 삭제합니다(*빨간색* 값을 원하는 값으로 대체).

   ```
   aws appmesh delete-virtual-router \
        --mesh-name meshName \
        --virtual-router-name routerName
   ```

1. 출력 예시:

   ```
   {
       "virtualRouter": {
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualRouter/routerName",
               "createdAt": "2022-04-06T11:49:47.216000-05:00",
               "lastUpdatedAt": "2022-04-07T10:49:53.402000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "210987654321",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 2
           },
           "spec": {
               "listeners": [
                   {
                       "portMapping": {
                           "port": 80,
                           "protocol": "http"
                       }
                   }
               ]
           },
           "status": {
               "status": "DELETED"
           },
           "virtualRouterName": "routerName"
       }
   }
   ```

App Mesh용를 사용하여 가상 라우터를 삭제하는 방법에 AWS CLI 대한 자세한 내용은 AWS CLI 참조의 [delete-virtual-router](https://docs.aws.amazon.com/cli/latest/reference/appmesh/delete-virtual-router.html) 명령을 참조하세요.

------

# Routes
<a name="routes"></a>

**중요**  
지원 종료 공지: 2026년 9월 30일에는에 대한 지원을 중단할 AWS 예정입니다 AWS App Mesh. 2026년 9월 30일 이후에는 AWS App Mesh 콘솔 또는 AWS App Mesh 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은이 블로그 게시물 [Migrating from to Amazon ECS Service Connect를 참조 AWS App Mesh 하세요](https://aws.amazon.com/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect).

경로가 가상 라우터와 연결됩니다. 이 경로는 가상 라우터에 대해 일치하는 요청을 찾고 관련 가상 노드에 트래픽을 분산하는 데 사용됩니다. 라우팅이 요청과 일치하는 경우 하나 이상의 대상 가상 노드에 트래픽을 분산할 수 있습니다. 각 가상 노드에 상대적 가중치를 지정할 수 있습니다. 이 주제는 서비스 메시의 경로를 사용하는 데 도움이 됩니다.

## 경로 생성
<a name="create-route"></a>

------
#### [ AWS Management Console ]

**를 사용하여 라우팅을 생성하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 경로를 생성하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 왼쪽 탐색 창에서 **Virtual routers(가상 라우터)**를 선택합니다.

1. 새로운 라우팅을 연결할 가상 라우터를 선택합니다. 목록에 가상 라우터가 없는 경우 먼저 [가상 라우터를 생성](virtual_routers.md#create-virtual-router)해야 합니다.

1. **Routes(라우팅)** 테이블에서 **Create route(라우팅 생성)**를 선택합니다. 경로를 생성하려면 계정 ID가 경로의 **리소스 소유자**로 등록되어야 합니다.

1. **Route name(라우팅 이름)**에서 라우팅에 사용할 이름을 지정합니다.

1. **Route type(라우팅 유형)**에 대해 라우팅할 프로토콜을 선택합니다. 선택하는 프로토콜은 가상 라우터에 대해 선택한 리스너 프로토콜 및 트래픽을 라우팅하는 가상 노드와 일치해야 합니다.

1. (선택 사항) **Route priority(라우팅 우선 순위)**에 경로에 사용할 우선 순위를 0\$11000에서 선택합니다. 경로는 지정된 값을 기준으로 일치되며, 0이 가장 높은 우선 순위입니다.

1. (선택 사항) **추가 구성**을 선택합니다. 아래 프로토콜 중에서 **경로 유형**으로 선택한 프로토콜을 선택하고 콘솔에서 원하는 대로 설정을 지정합니다.

1. **대상 구성**의 경우 트래픽을 라우팅할 기존 App Mesh 가상 노드를 선택하고 **가중치**를 지정합니다. **대상 추가**를 선택하여 대상을 더 추가할 수 있습니다. 모든 대상의 비율을 합하면 최대 100이 됩니다. 목록에 가상 노드가 없는 경우 먼저 가상 노드를 하나 [생성](virtual_nodes.md#vn-create-virtual-node)해야 합니다. 선택한 가상 노드에 리스너가 여러 개 있는 경우 **대상 포트**가 **필수**입니다.

1. **일치** 구성의 경우 다음을 지정합니다.

   `tcp`에 대해 **일치 구성**을 사용할 수 없습니다.**
   + 

     **http/http2**가 선택된 유형인 경우:
     + **(선택 사항) **메서드** - 들어오는 **http**/http2** 요청에서 일치시킬 메서드 헤더를 지정합니다.
     + (선택 사항) **포트 일치** ‐ 들어오는 트래픽에 맞는 포트를 찾습니다. 이 가상 라우터에 여러 리스너가 있는 경우 포트 일치가 **필수**입니다.
     + (선택 사항) **접두사/정확한/정규식 경로** ‐ URL 경로를 일치시키는 방법입니다.
       + **접두사 일치** - 기본적으로 게이트웨이 경로의 일치하는 요청이 대상 가상 서비스 이름에 다시 쓰여지고 일치하는 접두사가 다시 작성됩니다(기본값 `/`). 가상 서비스를 구성하는 방법에 따라 가상 라우터를 사용하여 특정 접두사 또는 헤더를 기준으로 요청을 다른 가상 노드로 라우팅할 수 있습니다.
**참고**  
**경로**/**접두사** 기반 일치를 활성화하면 App Mesh는 경로 정규화([normalize\$1path](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-normalize-path) 및 [merge\$1slashes](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-merge-slashes))를 활성화하여 경로 혼동 취약성이 발생할 가능성을 최소화합니다.  
요청에 참여하는 당사자가 서로 다른 경로 표현을 사용하는 경우 경로 혼동 취약성이 발생합니다.
       + **정확한 일치** - 정확한 파라미터는 경로의 부분 일치를 비활성화하고 경로가 현재 URL과 정확히 일치하는 경우에만 경로를 반환하도록 합니다.
       + **정규식 일치** ‐ 여러 URL이 실제로 웹 사이트의 단일 페이지를 식별할 수 있는 패턴을 설명하는 데 사용됩니다.
     + (선택 사항) **쿼리 파라미터** - 이 필드를 사용하면 쿼리 파라미터를 일치시킬 수 있습니다.
     + **(선택 사항) **헤더** - **http** 및 http2**에 대한 헤더를 지정합니다. ㅁ대상 가상 서비스로 라우팅하려면 들어오는 요청과 일치해야 합니다.
   + 

     **grpc**가 선택된 유형인 경우:
     + **서비스 이름** - 요청과 일치시킬 대상 서비스입니다.
     + **메서드 이름** - 요청과 일치시킬 대상 메서드입니다.
     + (선택 사항) **메타데이터** - 메타데이터의 존재 여부에 따라 `Match`를 지정합니다. 요청을 처리하려면 모두 일치해야 합니다.

1. **라우팅 생성**을 선택합니다.

------
#### [ AWS CLI ]

** AWS CLI를 사용하여 경로를 생성하려면**

다음 명령을 사용하여 gRPC 경로를 생성하고 JSON을 입력합니다(*빨간색* 값을 원하는 값으로 대체).

1. 

   ```
   aws appmesh create-route \
        --cli-input-json file://create-route-grpc.json
   ```

1. **예제** create-route-grpc.json의 내용은 다음과 같습니다.

   ```
   {
       "meshName" : "meshName",
       "routeName" : "routeName",
       "spec" : {
          "grpcRoute" : {
             "action" : {
                "weightedTargets" : [
                   {
                      "virtualNode" : "nodeName",
                      "weight" : 100
                   }
                ]
             },
             "match" : {
                "metadata" : [
                   {
                      "invert" : false,
                      "match" : {
                         "prefix" : "123"
                      },
                      "name" : "myMetadata"
                   }
                ],
                "methodName" : "nameOfmethod",
                "serviceName" : "serviceA.svc.cluster.local"
             },
             "retryPolicy" : {
                "grpcRetryEvents" : [ "deadline-exceeded" ],
                "httpRetryEvents" : [ "server-error", "gateway-error" ],
                "maxRetries" : 3,
                "perRetryTimeout" : {
                   "unit" : "s",
                   "value" : 15
                },
                "tcpRetryEvents" : [ "connection-error" ]
             }
          },
          "priority" : 100
       },
       "virtualRouterName" : "routerName"
   }
   ```

1. 출력 예시:

   ```
   {
       "route": {
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualRouter/routerName/route/routeName",
               "createdAt": "2022-04-06T13:48:20.749000-05:00",
               "lastUpdatedAt": "2022-04-06T13:48:20.749000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "210987654321",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 1
           },
           "routeName": "routeName",
           "spec": {
               "grpcRoute": {
                   "action": {
                       "weightedTargets": [
                           {
                               "virtualNode": "nodeName",
                               "weight": 100
                           }
                       ]
                   },
                   "match": {
                       "metadata": [
                           {
                               "invert": false,
                               "match": {
                                   "prefix": "123"
                               },
                               "name": "myMetadata"
                           }
                       ],
                       "methodName": "nameOfMehod",
                       "serviceName": "serviceA.svc.cluster.local"
                   },
                   "retryPolicy": {
   "grpcRetryEvents": [
                           "deadline-exceeded"
                       ],
                       "httpRetryEvents": [
                           "server-error",
                           "gateway-error"
                       ],
                       "maxRetries": 3,
                       "perRetryTimeout": {
                           "unit": "s",
                           "value": 15
                       },
                       "tcpRetryEvents": [
                           "connection-error"
                       ]
                   }
               },
               "priority": 100
           },
           "status": {
               "status": "ACTIVE"
           },
           "virtualRouterName": "routerName"
       }
   }
   ```

App Mesh용를 사용하여 라우팅을 생성하는 방법에 AWS CLI 대한 자세한 내용은 AWS CLI 참조의 [create-route](https://docs.aws.amazon.com/cli/latest/reference/appmesh/create-route.html) 명령을 참조하세요.

------

### gRPC
<a name="grpc"></a>

### (선택 사항) **일치**

+ (선택 사항) 요청과 일치시킬 대상 서비스의 **서비스 이름**을 입력합니다. 이름을 지정하지 않으면 모든 서비스에 대한 요청이 일치됩니다.
+ (선택 사항) 요청과 일치시킬 대상 메서드의 **메서드 이름**을 입력합니다. 이름을 지정하지 않으면 모든 메서드에 대한 요청이 일치됩니다. 메서드 이름을 지정하는 경우 서비스 이름을 지정해야 합니다.

### (선택 사항) **메타데이터**


[**메타데이터 추가(Add metadata)**]를 선택합니다.
+ (선택 사항) 경로의 기준이 될 **메타데이터 이름**을 입력하고 **일치 유형**을 선택한 다음, **일치 값**을 입력합니다. **Invert(반전)**를 선택하면 반대 값을 일치시킵니다. 예를 들어 **메타데이터 이름**으로 `myMetadata`를 지정하고 **일치 유형**으로 **일치**로 지정하고 **일치 값**으로 `123`을 지정한 후 **반전**을 선택하면 메타데이터 이름이 `123`이 아닌 다른 이름으로 시작하는 모든 요청에 대해 경로가 일치됩니다.
+ (선택 사항) **메타데이터 추가**를 선택하여 메타데이터 항목을 10개까지 추가합니다.

### (선택 사항) **재시도 정책**


클라이언트는 재시도 정책을 통해 간헐적 네트워크 장애 또는 간헐적 서버 측 오류로부터 스스로를 보호할 수 있습니다. 재시도 정책은 선택 사항이며, 권장 사항은 아닙니다. 재시도 제한 시간 값은 재시도(초기 시도 포함)당 제한 시간을 정의합니다. 재시도 정책을 정의하지 않으면 App Mesh가 각 경로에 대한 기본 정책을 자동으로 생성할 수 있습니다. 자세한 내용은 [기본 경로 재시도 정책](envoy-defaults.md#default-retry-policy) 단원을 참조하십시오.
+ **재시도 제한 시간**에 제한 시간 동안의 단위 수를 입력합니다. 프로토콜 재시도 이벤트를 선택하는 경우 값이 필요합니다.
+ **재시도 제한 시간 단위**에 대해 단위를 선택합니다. 프로토콜 재시도 이벤트를 선택하는 경우 값이 필요합니다.
+ **최대 재시도 수**에는 요청 실패 시 최대 재시도 횟수를 입력합니다. 프로토콜 재시도 이벤트를 선택하는 경우 값이 필요합니다. 2개 이상의 값을 권장합니다.
+ **HTTP 재시도 이벤트**를 하나 이상 선택합니다. 최소한 **stream-error** 및 **gateway-error**를 선택하는 것이 좋습니다.
+ **TCP 재시도 이벤트**를 선택합니다.
+ **gRPC 재시도 이벤트**를 하나 이상 선택합니다. 최소한 **취소됨** 및 **사용할 수 없음**을 선택하는 것이 좋습니다.

### **(선택 사항) 제한 시간**

+ 기본값은 15초입니다. **재시도 정책**을 지정한 경우 여기에서 지정하는 기간은 **재시도 정책**에 정의된 **최대 재시도 횟수**를 재시도 기간과 곱한 값보다 크거나 같아야 재시도 정책이 완료될 수 있습니다. 기간을 15초보다 크게 지정하는 경우 모든 가상 노드 **대상**의 리스너에 대해 지정된 제한 시간도 15초 이상이어야 합니다. 자세한 내용은 [가상 노드](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html)를 참조하십시오.
+ `0` 값은 제한 시간을 비활성화합니다.
+ 경로가 유휴 상태일 수 있는 최대 기간입니다.

### HTTP 및 HTTP/2
<a name="http-http2"></a>

### (선택 사항) 일치

+ 경로가 일치해야 하는 **접두사**를 지정합니다. 예를 들어, 가상 서비스 이름이 `service-b.local`이고 라우팅을 `service-b.local/metrics`에 대한 요청과 일치시키려면 접두사가 `/metrics`여야 합니다. `/`를 지정하면 모든 트래픽이 라우팅됩니다.
+ (선택 사항) **방법**을 선택합니다.
+ (선택 사항) **체계**를 선택합니다. HTTP2 라우팅에만 적용됩니다.

### (선택 사항) 헤더

+ (선택 사항) **Add header(추가 헤더)**를 선택합니다. 경로가 기반할 **Header name(헤더 이름)**을 입력하고 **일치 유형**을 선택한 다음 **일치 값**을 입력합니다. **Invert(반전)**를 선택하면 반대 값을 일치시킵니다. 예를 들어 **접두사**가 `123`이고 이름이 `clientRequestId`인 헤더를 지정하고 **반전**을 선택하면 `123` 이외의 다른 헤더로 시작하는 헤더가 있는 요청과 일치하는 경로가 검색됩니다.
+ (선택 사항) **Add header(추가 헤더)**를 선택합니다. 최대 10개의 헤더를 추가할 수 있습니다.

### **(선택 사항) 재시도 정책**


클라이언트는 재시도 정책을 통해 간헐적 네트워크 장애 또는 간헐적 서버 측 오류로부터 스스로를 보호할 수 있습니다. 재시도 정책은 선택 사항이며, 권장 사항은 아닙니다. 재시도 제한 시간 값은 재시도(초기 시도 포함)당 제한 시간을 정의합니다. 재시도 정책을 정의하지 않으면 App Mesh가 각 경로에 대한 기본 정책을 자동으로 생성할 수 있습니다. 자세한 내용은 [기본 경로 재시도 정책](envoy-defaults.md#default-retry-policy) 단원을 참조하십시오.
+ **재시도 제한 시간**에 제한 시간 동안의 단위 수를 입력합니다. 프로토콜 재시도 이벤트를 선택하는 경우 값이 필요합니다.
+ **재시도 제한 시간 단위**에 대해 단위를 선택합니다. 프로토콜 재시도 이벤트를 선택하는 경우 값이 필요합니다.
+ **최대 재시도 수**에는 요청 실패 시 최대 재시도 횟수를 입력합니다. 프로토콜 재시도 이벤트를 선택하는 경우 값이 필요합니다. 2개 이상의 값을 권장합니다.
+ **HTTP 재시도 이벤트**를 하나 이상 선택합니다. 최소한 **stream-error** 및 **gateway-error**를 선택하는 것이 좋습니다.
+ **TCP 재시도 이벤트**를 선택합니다.

### **(선택 사항) 제한 시간**

+ **요청 제한 시간** – 기본값은 15초입니다. **재시도 정책**을 지정한 경우 여기에서 지정하는 기간은 **재시도 정책**에 정의된 **최대 재시도 횟수**를 재시도 기간과 곱한 값보다 크거나 같아야 재시도 정책이 완료될 수 있습니다.
+ **유휴 기간** - 기본값은 300초입니다.
+ `0` 값은 제한 시간을 비활성화합니다.

**참고**  
 제한 시간을 기본값보다 크게 지정하는 경우 모든 가상 노드 참여자의 리스너에 지정된 제한 시간도 기본값보다 커야 합니다. 그러나 제한 시간을 기본값보다 낮은 값으로 줄이는 경우 가상 노드에서 제한 시간을 업데이트할 수도 있습니다. 자세한 내용은 [가상 노드](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html)를 참조하십시오.

### TCP
<a name="tcp"></a>

### **(선택 사항) 제한 시간**

+ **유휴 기간** - 기본값은 300초입니다.
+ `0` 값은 제한 시간을 비활성화합니다.

## 경로 삭제
<a name="delete-route"></a>

------
#### [ AWS Management Console ]

**를 사용하여 라우팅을 삭제하려면 AWS Management Console**

1. [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/)에서 App Mesh 콘솔을 엽니다.

1. 경로를 삭제하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 [공유된](sharing.md) 모든 메시가 나열됩니다.

1. 왼쪽 탐색 창에서 **Virtual routers(가상 라우터)**를 선택합니다.

1. 경로를 삭제하려는 라우터를 선택합니다.

1. **경로** 테이블에서 삭제하려는 경로를 선택하고 오른쪽 상단 구석에서 **삭제**를 선택합니다.

1. 확인 상자에 **delete**를 입력한 다음, **삭제**를 클릭합니다.

------
#### [ AWS CLI ]

**를 사용하여 라우팅을 삭제하려면 AWS CLI**

1. 다음 명령을 사용하여 경로를 삭제합니다(*빨간색* 값을 원하는 값으로 대체).

   ```
   aws appmesh delete-route \
        --mesh-name meshName \
        --virtual-router-name routerName \
        --route-name routeName
   ```

1. 출력 예시:

   ```
   {
       "route": {
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualRouter/routerName/route/routeName",
               "createdAt": "2022-04-06T13:46:54.750000-05:00",
               "lastUpdatedAt": "2022-04-07T10:43:57.152000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "210987654321",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 2
           },
           "routeName": "routeName",
           "spec": {
               "grpcRoute": {
                   "action": {
                       "weightedTargets": [
                           {
                               "virtualNode": "nodeName",
                               "weight": 100
                           }
                       ]
                   },
                   "match": {
                       "metadata": [
                           {
                               "invert": false,
                               "match": {
                                   "prefix": "123"
                               },
                               "name": "myMetadata"
                           }
                       ],
                       "methodName": "methodName",
                       "serviceName": "serviceA.svc.cluster.local"
                   },
                   "retryPolicy": {
                       "grpcRetryEvents": [
                           "deadline-exceeded"
                       ],
                       "httpRetryEvents": [
                           "server-error",
                           "gateway-error"
                       ],
                       "maxRetries": 3,
                       "perRetryTimeout": {
                           "unit": "s",
                           "value": 15
                       },
                       "tcpRetryEvents": [
                           "connection-error"
                       ]
                   }
               },
               "priority": 100
           },
           "status": {
               "status": "DELETED"
           },
           "virtualRouterName": "routerName"
       }
   }
   ```

App Mesh용를 사용하여 라우팅을 삭제하는 방법에 AWS CLI 대한 자세한 내용은 AWS CLI 참조의 [delete-route](https://docs.aws.amazon.com/cli/latest/reference/appmesh/delete-route.html) 명령을 참조하세요.

------