

# AWS CLI를 사용하는 App Mesh 예제
<a name="cli_app-mesh_code_examples"></a>

다음 코드 예제에서는 App Mesh와 함께 AWS Command Line Interface를 사용하여 작업을 수행하고 일반적인 시나리오를 구현하는 방법을 보여줍니다.

*작업*은 대규모 프로그램에서 발췌한 코드이며 컨텍스트에 맞춰 실행해야 합니다. 작업은 개별 서비스 함수를 직접적으로 호출하는 방법을 보여주며 관련 시나리오의 컨텍스트에 맞는 작업을 볼 수 있습니다.

각 예시에는 전체 소스 코드에 대한 링크가 포함되어 있으며, 여기에서 컨텍스트에 맞춰 코드를 설정하고 실행하는 방법에 대한 지침을 찾을 수 있습니다.

**Topics**
+ [작업](#actions)

## 작업
<a name="actions"></a>

### `create-mesh`
<a name="app-mesh_CreateMesh_cli_topic"></a>

다음 코드 예시는 `create-mesh`의 사용 방법을 보여줍니다.

**AWS CLI**  
**예제 1: 새 서비스 메시를 생성하는 방법**  
다음 `create-mesh` 예제에서는 서비스 메시를 생성합니다.  

```
aws appmesh create-mesh \
    --mesh-name app1
```
출력:  

```
{
    "mesh":{
        "meshName":"app1",
        "metadata":{
            "arn":"arn:aws:appmesh:us-east-1:123456789012:mesh/app1",
            "createdAt":1563809909.282,
            "lastUpdatedAt":1563809909.282,
            "uid":"a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version":1
        },
        "spec":{},
        "status":{
            "status":"ACTIVE"
        }
    }
}
```
**예제 2: 여러 태그가 포함된 새 서비스 메시를 생성하는 방법**  
다음 `create-mesh` 예제에서는 여러 태그가 있는 서비스 메시를 생성합니다.  

```
aws appmesh create-mesh \
    --mesh-name app2 \
    --tags key=key1,value=value1 key=key2,value=value2 key=key3,value=value3
```
출력:  

```
{
    "mesh":{
        "meshName":"app2",
        "metadata":{
            "arn":"arn:aws:appmesh:us-east-1:123456789012:mesh/app2",
            "createdAt":1563822121.877,
            "lastUpdatedAt":1563822121.877,
            "uid":"a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version":1
        },
        "spec":{},
        "status":{
            "status":"ACTIVE"
        }
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [서비스 메시](https://docs.aws.amazon.com/app-mesh/latest/userguide/meshes.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateMesh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/create-mesh.html)를 참조하세요.

### `create-route`
<a name="app-mesh_CreateRoute_cli_topic"></a>

다음 코드 예시는 `create-route`의 사용 방법을 보여줍니다.

**AWS CLI**  
**새 gRPC 경로를 생성하는 방법**  
다음 `create-route` 예제에서는 JSON 입력 파일을 사용하여 gRPC 경로를 생성합니다. 메타데이터가 123으로 시작하는 GRPC 트래픽이 serviceBgrpc라는 이름의 가상 노드로 라우팅됩니다. 이 경로의 대상과 통신을 시도할 때 특정 gRPC, HTTP 또는 TCP 실패가 발생하는 경우 경로가 3회 재시도됩니다. 각 재시도 사이에 15초의 지연이 발생합니다.  

```
aws appmesh create-route \
    --cli-input-json file://create-route-grpc.json
```
`create-route-grpc.json`의 콘텐츠:  

```
{
    "meshName" : "apps",
    "routeName" : "grpcRoute",
    "spec" : {
       "grpcRoute" : {
          "action" : {
             "weightedTargets" : [
                {
                   "virtualNode" : "serviceBgrpc",
                   "weight" : 100
                }
             ]
          },
          "match" : {
             "metadata" : [
                {
                   "invert" : false,
                   "match" : {
                      "prefix" : "123"
                   },
                   "name" : "myMetadata"
                }
             ],
             "methodName" : "GetColor",
             "serviceName" : "com.amazonaws.services.ColorService"
          },
          "retryPolicy" : {
             "grpcRetryEvents" : [ "deadline-exceeded" ],
             "httpRetryEvents" : [ "server-error", "gateway-error" ],
             "maxRetries" : 3,
             "perRetryTimeout" : {
                "unit" : "s",
                "value" : 15
             },
             "tcpRetryEvents" : [ "connection-error" ]
          }
       },
       "priority" : 100
    },
    "virtualRouterName" : "serviceBgrpc"
}
```
출력:  

```
{
    "route": {
        "meshName": "apps",
        "metadata": {
            "arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/apps/virtualRouter/serviceBgrpc/route/grpcRoute",
            "createdAt": 1572010806.008,
            "lastUpdatedAt": 1572010806.008,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 1
        },
        "routeName": "grpcRoute",
        "spec": {
            "grpcRoute": {
                "action": {
                    "weightedTargets": [
                        {
                            "virtualNode": "serviceBgrpc",
                            "weight": 100
                        }
                    ]
                },
                "match": {
                    "metadata": [
                        {
                            "invert": false,
                            "match": {
                                "prefix": "123"
                            },
                            "name": "mymetadata"
                        }
                    ],
                    "methodName": "GetColor",
                    "serviceName": "com.amazonaws.services.ColorService"
                },
                "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": "serviceBgrpc"
    }
}
```
**새 HTTP 또는 HTTP/2 경로를 생성하는 방법**  
다음 `create-route` 예제에서는 JSON 입력 파일을 사용하여 HTTP/2 경로를 생성합니다. HTTP 경로를 생성하려면 http2Route를 사양에 따라 httpRoute로 바꿉니다. 헤더 값이 123으로 시작하는 URL 접두사로 주소 지정된 모든 HTTP/2 트래픽이 serviceBhttp2라는 이름의 가상 노드로 라우팅됩니다. 이 경로의 대상과 통신을 시도할 때 특정 HTTP 또는 TCP 실패가 발생하는 경우 경로가 3회 재시도됩니다. 각 재시도 사이에 15초의 지연이 발생합니다.  

```
aws appmesh create-route \
    --cli-input-json file://create-route-http2.json
```
`create-route-http2.json`의 콘텐츠:  

```
{
    "meshName": "apps",
    "routeName": "http2Route",
    "spec": {
        "http2Route": {
            "action": {
                "weightedTargets": [
                    {
                        "virtualNode": "serviceBhttp2",
                        "weight": 100
                    }
                ]
            },
            "match": {
                "headers": [
                    {
                        "invert": false,
                        "match": {
                            "prefix": "123"
                        },
                        "name": "clientRequestId"
                    }
                ],
                "method": "POST",
                "prefix": "/",
                "scheme": "http"
            },
            "retryPolicy": {
                "httpRetryEvents": [
                    "server-error",
                    "gateway-error"
                ],
                "maxRetries": 3,
                "perRetryTimeout": {
                    "unit": "s",
                    "value": 15
                },
                "tcpRetryEvents": [
                    "connection-error"
                ]
            }
        },
        "priority": 200
    },
    "virtualRouterName": "serviceBhttp2"
}
```
출력:  

```
{
    "route": {
        "meshName": "apps",
        "metadata": {
            "arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/apps/virtualRouter/serviceBhttp2/route/http2Route",
            "createdAt": 1572011008.352,
            "lastUpdatedAt": 1572011008.352,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 1
        },
        "routeName": "http2Route",
        "spec": {
            "http2Route": {
                "action": {
                    "weightedTargets": [
                        {
                            "virtualNode": "serviceBhttp2",
                            "weight": 100
                        }
                    ]
                },
                "match": {
                    "headers": [
                        {
                            "invert": false,
                            "match": {
                                "prefix": "123"
                            },
                            "name": "clientRequestId"
                        }
                    ],
                    "method": "POST",
                    "prefix": "/",
                    "scheme": "http"
                },
                "retryPolicy": {
                    "httpRetryEvents": [
                        "server-error",
                        "gateway-error"
                    ],
                    "maxRetries": 3,
                    "perRetryTimeout": {
                        "unit": "s",
                        "value": 15
                    },
                    "tcpRetryEvents": [
                        "connection-error"
                    ]
                }
            },
            "priority": 200
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualRouterName": "serviceBhttp2"
    }
}
```
**새 TCP 경로를 생성하는 방법**  
다음 `create-route` 예제에서는 JSON 입력 파일을 사용하여 TCP 경로를 생성합니다. 트래픽의 75%는 serviceBtcp라는 이름의 가상 노드로 라우팅되고 트래픽의 25%는 serviceBv2tcp라는 이름의 가상 노드로 라우팅됩니다. 다양한 대상에 대해 다양한 가중치를 지정하는 것은 애플리케이션의 새 버전을 배포하는 효과적인 방법입니다. 최종적으로 모든 트래픽의 100%가 애플리케이션의 새 버전이 있는 대상으로 라우팅되도록 가중치를 조정할 수 있습니다.  

```
aws appmesh create-route \
    --cli-input-json file://create-route-tcp.json
```
create-route-tcp.json의 콘텐츠:  

```
{
    "meshName": "apps",
    "routeName": "tcpRoute",
    "spec": {
        "priority": 300,
        "tcpRoute": {
            "action": {
                "weightedTargets": [
                    {
                        "virtualNode": "serviceBtcp",
                        "weight": 75
                    },
                    {
                        "virtualNode": "serviceBv2tcp",
                        "weight": 25
                    }
                ]
            }
        }
    },
    "virtualRouterName": "serviceBtcp"
}
```
출력:  

```
{
    "route": {
        "meshName": "apps",
        "metadata": {
            "arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/apps/virtualRouter/serviceBtcp/route/tcpRoute",
            "createdAt": 1572011436.26,
            "lastUpdatedAt": 1572011436.26,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 1
        },
        "routeName": "tcpRoute",
        "spec": {
            "priority": 300,
            "tcpRoute": {
                "action": {
                    "weightedTargets": [
                        {
                            "virtualNode": "serviceBtcp",
                            "weight": 75
                        },
                        {
                            "virtualNode": "serviceBv2tcp",
                            "weight": 25
                        }
                    ]
                }
            }
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualRouterName": "serviceBtcp"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [라우팅](https://docs.aws.amazon.com/app-mesh/latest/userguide/routes.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateRoute](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/create-route.html)를 참조하세요.

### `create-virtual-gateway`
<a name="app-mesh_CreateVirtualGateway_cli_topic"></a>

다음 코드 예시는 `create-virtual-gateway`의 사용 방법을 보여줍니다.

**AWS CLI**  
**새 가상 게이트웨이를 생성하는 방법**  
다음 `create-virtual-gateway` 예제에서는 JSON 입력 파일을 사용하여, 포트 9080을 사용하는 HTTP에 대한 리스너가 있는 가상 게이트웨이를 생성합니다.  

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

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

```
{
    "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"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 게이트웨이](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_gateways.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateVirtualGateway](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/create-virtual-gateway.html)를 참조하세요.

### `create-virtual-node`
<a name="app-mesh_CreateVirtualNode_cli_topic"></a>

다음 코드 예시는 `create-virtual-node`의 사용 방법을 보여줍니다.

**AWS CLI**  
**예제 1: 검색에 DNS를 사용하는 새 가상 노드를 생성하는 방법**  
다음 `create-virtual-node` 예제에서는 JSON 입력 파일을 사용하여, 서비스 검색에 DNS를 사용하는 가상 노드를 생성합니다.  

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

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

```
{
    "virtualNode": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualNode/vnServiceBv1",
            "createdAt": 1563810019.874,
            "lastUpdatedAt": 1563810019.874,
            "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": "vnServiceBv1"
    }
}
```
**예제 2: 검색에 AWS Cloud Map을 사용하는 새 가상 노드를 생성하는 방법**  
다음 `create-virtual-node` 예제에서는 JSON 입력 파일을 사용하여, 서비스 검색에 AWS Cloud Map을 사용하는 가상 노드를 생성합니다.  

```
aws appmesh create-virtual-node \
    --cli-input-json file://create-virtual-node-cloud-map.json
```
`create-virtual-node-cloud-map.json`의 콘텐츠:  

```
{
    "meshName": "app1",
    "spec": {
        "backends": [
            {
                "virtualService": {
                    "virtualServiceName": "serviceA.svc.cluster.local"
                }
            }
        ],
        "listeners": [
            {
                "portMapping": {
                    "port": 80,
                    "protocol": "http"
                }
            }
        ],
        "serviceDiscovery": {
            "awsCloudMap": {
                "attributes": [
                    {
                        "key": "Environment",
                        "value": "Testing"
                    }
                ],
                "namespaceName": "namespace1",
                "serviceName": "serviceA"
            }
        }
    },
    "virtualNodeName": "vnServiceA"
}
```
출력:  

```
{
    "virtualNode": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualNode/vnServiceA",
            "createdAt": 1563810859.465,
            "lastUpdatedAt": 1563810859.465,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 1
        },
        "spec": {
            "backends": [
                {
                    "virtualService": {
                        "virtualServiceName": "serviceA.svc.cluster.local"
                    }
                }
            ],
            "listeners": [
                {
                    "portMapping": {
                        "port": 80,
                        "protocol": "http"
                    }
                }
            ],
            "serviceDiscovery": {
                "awsCloudMap": {
                    "attributes": [
                        {
                            "key": "Environment",
                            "value": "Testing"
                        }
                    ],
                    "namespaceName": "namespace1",
                    "serviceName": "serviceA"
                }
            }
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualNodeName": "vnServiceA"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 노드](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateVirtualNode](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/create-virtual-node.html)를 참조하세요.

### `create-virtual-router`
<a name="app-mesh_CreateVirtualRouter_cli_topic"></a>

다음 코드 예시는 `create-virtual-router`의 사용 방법을 보여줍니다.

**AWS CLI**  
**새 가상 라우터를 생성하는 방법**  
다음 `create-virtual-router` 예제에서는 JSON 입력 파일을 사용하여, 포트 80을 사용하는 HTTP에 대한 리스너가 있는 가상 라우터를 생성합니다.  

```
aws appmesh create-virtual-router \
    --cli-input-json file://create-virtual-router.json
```
`create-virtual-router.json`의 콘텐츠:  

```
{
    "meshName": "app1",
    "spec": {
        "listeners": [
            {
                "portMapping": {
                    "port": 80,
                    "protocol": "http"
                }
            }
        ]
    },
    "virtualRouterName": "vrServiceB"
}
```
출력:  

```
{
    "virtualRouter": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualRouter/vrServiceB",
            "createdAt": 1563810546.59,
            "lastUpdatedAt": 1563810546.59,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 1
        },
        "spec": {
            "listeners": [
                {
                    "portMapping": {
                        "port": 80,
                        "protocol": "http"
                    }
                }
            ]
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualRouterName": "vrServiceB"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 라우터](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_routers.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateVirtualRouter](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/create-virtual-router.html)를 참조하세요.

### `create-virtual-service`
<a name="app-mesh_CreateVirtualService_cli_topic"></a>

다음 코드 예시는 `create-virtual-service`의 사용 방법을 보여줍니다.

**AWS CLI**  
**예제 1: 가상 노드 공급자가 있는 새 가상 서비스를 생성하는 방법**  
다음 `create-virtual-service` 예제에서는 JSON 입력 파일을 사용하여 가상 노드 공급자가 있는 가상 서비스를 생성합니다.  

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

```
{
    "meshName": "app1",
    "spec": {
        "provider": {
            "virtualNode": {
                "virtualNodeName": "vnServiceA"
            }
        }
    },
    "virtualServiceName": "serviceA.svc.cluster.local"
}
```
출력:  

```
{
    "virtualService": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualService/serviceA.svc.cluster.local",
            "createdAt": 1563810859.474,
            "lastUpdatedAt": 1563810967.179,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 2
        },
        "spec": {
            "provider": {
                "virtualNode": {
                    "virtualNodeName": "vnServiceA"
                }
            }
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualServiceName": "serviceA.svc.cluster.local"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 노드](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html)를 참조하세요.  
**예제 2: 가상 라우터 공급자가 있는 새 가상 서비스를 생성하는 방법**  
다음 `create-virtual-service` 예제에서는 JSON 입력 파일을 사용하여 가상 라우터 공급자가 있는 가상 서비스를 생성합니다.  

```
aws appmesh create-virtual-service \
    --cli-input-json file://create-virtual-service-virtual-router.json
```
`create-virtual-service-virtual-router.json`의 콘텐츠:  

```
{
    "meshName": "app1",
    "spec": {
        "provider": {
            "virtualRouter": {
                "virtualRouterName": "vrServiceB"
            }
        }
    },
    "virtualServiceName": "serviceB.svc.cluster.local"
}
```
출력:  

```
{
    "virtualService": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualService/serviceB.svc.cluster.local",
            "createdAt": 1563908363.999,
            "lastUpdatedAt": 1563908363.999,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 1
        },
        "spec": {
            "provider": {
                "virtualRouter": {
                    "virtualRouterName": "vrServiceB"
                }
            }
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualServiceName": "serviceB.svc.cluster.local"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 가상 서비스<https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual\$1services.html>를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateVirtualService](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/create-virtual-service.html)를 참조하세요.

### `delete-mesh`
<a name="app-mesh_DeleteMesh_cli_topic"></a>

다음 코드 예시는 `delete-mesh`의 사용 방법을 보여줍니다.

**AWS CLI**  
**서비스 메시를 삭제하는 방법**  
다음 `delete-mesh` 예제에서는 지정된 서비스 메시를 삭제합니다.  

```
aws appmesh delete-mesh \
    --mesh-name app1
```
출력:  

```
{
    "mesh": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1",
            "createdAt": 1563809909.282,
            "lastUpdatedAt": 1563824981.248,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 2
        },
        "spec": {
            "egressFilter": {
                "type": "ALLOW_ALL"
            }
        },
        "status": {
            "status": "DELETED"
        }
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [서비스 메시](https://docs.aws.amazon.com/app-mesh/latest/userguide/meshes.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DeleteMesh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/delete-mesh.html)를 참조하세요.

### `delete-route`
<a name="app-mesh_DeleteRoute_cli_topic"></a>

다음 코드 예시는 `delete-route`의 사용 방법을 보여줍니다.

**AWS CLI**  
**경로를 삭제하는 방법**  
다음 `delete-route` 예제에서는 지정된 경로를 삭제합니다.  

```
aws appmesh delete-route \
    --mesh-name app1 \
    --virtual-router-name vrServiceB \
    --route-name toVnServiceB-weighted
```
출력:  

```
{
    "route": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualRouter/vrServiceB/route/toVnServiceB-weighted",
            "createdAt": 1563811384.015,
            "lastUpdatedAt": 1563823915.936,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 3
        },
        "routeName": "toVnServiceB-weighted",
        "spec": {
            "httpRoute": {
                "action": {
                    "weightedTargets": [
                        {
                            "virtualNode": "vnServiceBv1",
                            "weight": 80
                        },
                        {
                            "virtualNode": "vnServiceBv2",
                            "weight": 20
                        }
                    ]
                },
                "match": {
                    "prefix": "/"
                }
            }
        },
        "status": {
            "status": "DELETED"
        },
        "virtualRouterName": "vrServiceB"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [라우팅](https://docs.aws.amazon.com/app-mesh/latest/userguide/routes.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DeleteRoute](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/delete-route.html)를 참조하세요.

### `delete-virtual-node`
<a name="app-mesh_DeleteVirtualNode_cli_topic"></a>

다음 코드 예시는 `delete-virtual-node`의 사용 방법을 보여줍니다.

**AWS CLI**  
**가상 노드를 삭제하는 방법**  
다음 `delete-virtual-node` 예제에서는 지정된 가상 노드를 삭제합니다.  

```
aws appmesh delete-virtual-node \
    --mesh-name app1 \
    --virtual-node-name vnServiceBv2
```
출력:  

```
{
    "virtualNode": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualNode/vnServiceBv2",
            "createdAt": 1563810117.297,
            "lastUpdatedAt": 1563824700.678,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 2
        },
        "spec": {
            "backends": [],
            "listeners": [
                {
                    "portMapping": {
                        "port": 80,
                        "protocol": "http"
                    }
                }
            ],
            "serviceDiscovery": {
                "dns": {
                    "hostname": "serviceBv2.svc.cluster.local"
                }
            }
        },
        "status": {
            "status": "DELETED"
        },
        "virtualNodeName": "vnServiceBv2"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 노드](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DeleteVirtualNode](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/delete-virtual-node.html)를 참조하세요.

### `delete-virtual-router`
<a name="app-mesh_DeleteVirtualRouter_cli_topic"></a>

다음 코드 예시는 `delete-virtual-router`의 사용 방법을 보여줍니다.

**AWS CLI**  
**가상 라우터를 삭제하는 방법**  
다음 `delete-virtual-router` 예제에서는 지정된 가상 라우터를 삭제합니다.  

```
aws appmesh delete-virtual-router \
    --mesh-name app1 \
    --virtual-router-name vrServiceB
```
출력:  

```
{
    "virtualRouter": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualRouter/vrServiceB",
            "createdAt": 1563810546.59,
            "lastUpdatedAt": 1563824253.467,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 3
        },
        "spec": {
            "listeners": [
                {
                    "portMapping": {
                        "port": 80,
                        "protocol": "http"
                    }
                }
            ]
        },
        "status": {
            "status": "DELETED"
        },
        "virtualRouterName": "vrServiceB"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 라우터](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_routers.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DeleteVirtualRouter](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/delete-virtual-router.html)를 참조하세요.

### `delete-virtual-service`
<a name="app-mesh_DeleteVirtualService_cli_topic"></a>

다음 코드 예시는 `delete-virtual-service`의 사용 방법을 보여줍니다.

**AWS CLI**  
**가상 서비스를 삭제하는 방법**  
다음 `delete-virtual-service` 예제에서는 지정된 가상 서비스를 삭제합니다.  

```
aws appmesh delete-virtual-service \
    --mesh-name app1 \
    --virtual-service-name serviceB.svc.cluster.local
```
출력:  

```
{
    "virtualService": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualService/serviceB.svc.cluster.local",
            "createdAt": 1563908363.999,
            "lastUpdatedAt": 1563913940.866,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 3
        },
        "spec": {},
        "status": {
            "status": "DELETED"
        },
        "virtualServiceName": "serviceB.svc.cluster.local"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 서비스](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_services.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DeleteVirtualService](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/delete-virtual-service.html)를 참조하세요.

### `describe-mesh`
<a name="app-mesh_DescribeMesh_cli_topic"></a>

다음 코드 예시는 `describe-mesh`의 사용 방법을 보여줍니다.

**AWS CLI**  
**서비스 메시를 설명하는 방법**  
다음 `describe-mesh` 예제에서는 지정된 서비스 메시에 대한 세부 정보를 반환합니다.  

```
aws appmesh describe-mesh \
    --mesh-name app1
```
출력:  

```
{
    "mesh": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1",
            "createdAt": 1563809909.282,
            "lastUpdatedAt": 1563809909.282,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 1
        },
        "spec": {},
        "status": {
            "status": "ACTIVE"
        }
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [서비스 메시](https://docs.aws.amazon.com/app-mesh/latest/userguide/meshes.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DescribeMesh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/describe-mesh.html)를 참조하세요.

### `describe-route`
<a name="app-mesh_DescribeRoute_cli_topic"></a>

다음 코드 예시는 `describe-route`의 사용 방법을 보여줍니다.

**AWS CLI**  
**경로를 설명하는 방법**  
다음 `describe-route` 예제에서는 지정된 경로에 대한 세부 정보를 반환합니다.  

```
aws appmesh describe-route \
    --mesh-name app1 \
    --virtual-router-name vrServiceB \
    --route-name toVnServiceB-weighted
```
출력:  

```
{
    "route": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualRouter/vrServiceB/route/toVnServiceB-weighted",
            "createdAt": 1563811384.015,
            "lastUpdatedAt": 1563811384.015,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 1
        },
        "routeName": "toVnServiceB-weighted",
        "spec": {
            "httpRoute": {
                "action": {
                    "weightedTargets": [
                        {
                            "virtualNode": "vnServiceBv1",
                            "weight": 90
                        },
                        {
                            "virtualNode": "vnServiceBv2",
                            "weight": 10
                        }
                    ]
                },
                "match": {
                    "prefix": "/"
                }
            }
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualRouterName": "vrServiceB"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [라우팅](https://docs.aws.amazon.com/app-mesh/latest/userguide/routes.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DescribeRoute](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/describe-route.html)를 참조하세요.

### `describe-virtual-node`
<a name="app-mesh_DescribeVirtualNode_cli_topic"></a>

다음 코드 예시는 `describe-virtual-node`의 사용 방법을 보여줍니다.

**AWS CLI**  
**가상 노드를 설명하는 방법**  
다음 `describe-virtual-node` 예제에서는 지정된 가상 노드에 대한 세부 정보를 반환합니다.  

```
aws appmesh describe-virtual-node \
    --mesh-name app1 \
    --virtual-node-name vnServiceBv1
```
출력:  

```
{
    "virtualNode": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualNode/vnServiceBv1",
            "createdAt": 1563810019.874,
            "lastUpdatedAt": 1563810019.874,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 1
        },
        "spec": {
            "backends": [],
            "listeners": [
                {
                    "portMapping": {
                        "port": 80,
                        "protocol": "http"
                    }
                }
            ],
            "serviceDiscovery": {
                "dns": {
                    "hostname": "serviceBv1.svc.cluster.local"
                }
            }
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualNodeName": "vnServiceBv1"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 노드](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DescribeVirtualNode](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/describe-virtual-node.html)를 참조하세요.

### `describe-virtual-router`
<a name="app-mesh_DescribeVirtualRouter_cli_topic"></a>

다음 코드 예시는 `describe-virtual-router`의 사용 방법을 보여줍니다.

**AWS CLI**  
**가상 라우터를 설명하는 방법**  
다음 `describe-virtual-router` 예제에서는 지정된 가상 라우터에 대한 세부 정보를 반환합니다.  

```
aws appmesh describe-virtual-router \
    --mesh-name app1 \
    --virtual-router-name vrServiceB
```
출력:  

```
{
    "virtualRouter": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualRouter/vrServiceB",
            "createdAt": 1563810546.59,
            "lastUpdatedAt": 1563810546.59,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 1
        },
        "spec": {
            "listeners": [
                {
                    "portMapping": {
                        "port": 80,
                        "protocol": "http"
                    }
                }
            ]
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualRouterName": "vrServiceB"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 라우터](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_routers.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DescribeVirtualRouter](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/describe-virtual-router.html)를 참조하세요.

### `describe-virtual-service`
<a name="app-mesh_DescribeVirtualService_cli_topic"></a>

다음 코드 예시는 `describe-virtual-service`의 사용 방법을 보여줍니다.

**AWS CLI**  
**가상 서비스를 설명하는 방법**  
다음 `describe-virtual-service` 예제에서는 지정된 가상 서비스에 대한 세부 정보를 반환합니다.  

```
aws appmesh describe-virtual-service \
    --mesh-name app1 \
    --virtual-service-name serviceB.svc.cluster.local
```
출력:  

```
{
    "virtualService": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualService/serviceB.svc.cluster.local",
            "createdAt": 1563908363.999,
            "lastUpdatedAt": 1563908363.999,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 1
        },
        "spec": {
            "provider": {
                "virtualRouter": {
                    "virtualRouterName": "vrServiceB"
                }
            }
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualServiceName": "serviceB.svc.cluster.local"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 서비스](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_services.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DescribeVirtualService](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/describe-virtual-service.html)를 참조하세요.

### `list-meshes`
<a name="app-mesh_ListMeshes_cli_topic"></a>

다음 코드 예시는 `list-meshes`의 사용 방법을 보여줍니다.

**AWS CLI**  
**서비스 메시를 나열하는 방법**  
다음 `list-meshes` 예제에서는 현재 AWS 리전의 모든 서비스 메시를 나열합니다.  

```
aws appmesh list-meshes
```
출력:  

```
{
    "meshes": [
        {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1",
            "meshName": "app1"
        }
    ]
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [서비스 메시](https://docs.aws.amazon.com/app-mesh/latest/userguide/meshes.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListMeshes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/list-meshes.html)를 참조하세요.

### `list-routes`
<a name="app-mesh_ListRoutes_cli_topic"></a>

다음 코드 예시는 `list-routes`의 사용 방법을 보여줍니다.

**AWS CLI**  
**경로를 나열하는 방법**  
다음 `list-routes` 예제에서는 지정된 가상 라우터의 모든 경로를 나열합니다.  

```
aws appmesh list-routes \
    --mesh-name app1 \
    --virtual-router-name vrServiceB
```
출력:  

```
{
    "routes": [
        {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualRouter/vrServiceB/route/toVnServiceB",
            "meshName": "app1",
            "routeName": "toVnServiceB-weighted",
            "virtualRouterName": "vrServiceB"
        }
    ]
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [라우팅](https://docs.aws.amazon.com/app-mesh/latest/userguide/routes.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListRoutes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/list-routes.html)를 참조하세요.

### `list-tags-for-resource`
<a name="app-mesh_ListTagsForResource_cli_topic"></a>

다음 코드 예시는 `list-tags-for-resource`의 사용 방법을 보여줍니다.

**AWS CLI**  
**리소스에 대한 태그를 나열하는 방법**  
다음 `list-tags-for-resource` 예제에서는 지정된 리소스에 할당된 모든 태그를 나열합니다.  

```
aws appmesh list-tags-for-resource \
    --resource-arn arn:aws:appmesh:us-east-1:123456789012:mesh/app1
```
출력:  

```
{
    "tags": [
        {
            "key": "key1",
            "value": "value1"
        },
        {
            "key": "key2",
            "value": "value2"
        },
        {
            "key": "key3",
            "value": "value3"
        }
    ]
}
```
+  API 세부 정보는 **AWS CLI 명령 참조의 [ListTagsForResource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/list-tags-for-resource.html)를 참조하세요.

### `list-virtual-nodes`
<a name="app-mesh_ListVirtualNodes_cli_topic"></a>

다음 코드 예시는 `list-virtual-nodes`의 사용 방법을 보여줍니다.

**AWS CLI**  
**가상 노드를 나열하는 방법**  
다음 `list-virtual-nodes` 예제에서는 지정된 서비스 메시의 모든 가상 노드를 나열합니다.  

```
aws appmesh list-virtual-nodes \
    --mesh-name app1
```
출력:  

```
{
    "virtualNodes": [
        {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualNode/vnServiceBv1",
            "meshName": "app1",
            "virtualNodeName": "vnServiceBv1"
        },
        {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualNode/vnServiceBv2",
            "meshName": "app1",
            "virtualNodeName": "vnServiceBv2"
        }
    ]
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 노드](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListVirtualNodes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/list-virtual-nodes.html)를 참조하세요.

### `list-virtual-routers`
<a name="app-mesh_ListVirtualRouters_cli_topic"></a>

다음 코드 예시는 `list-virtual-routers`의 사용 방법을 보여줍니다.

**AWS CLI**  
**가상 라우터를 나열하는 방법**  
다음 `list-virtual-routers` 예제에서는 지정된 서비스 메시의 모든 가상 라우터를 나열합니다.  

```
aws appmesh list-virtual-routers \
    --mesh-name app1
```
출력:  

```
{
    "virtualRouters": [
        {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualRouter/vrServiceB",
            "meshName": "app1",
            "virtualRouterName": "vrServiceB"
        }
    ]
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 라우터](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_routers.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListVirtualRouters](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/list-virtual-routers.html)를 참조하세요.

### `list-virtual-services`
<a name="app-mesh_ListVirtualServices_cli_topic"></a>

다음 코드 예시는 `list-virtual-services`의 사용 방법을 보여줍니다.

**AWS CLI**  
**가상 서비스를 나열하는 방법**  
다음 `list-virtual-services` 예제에서는 지정된 서비스 메시의 모든 가상 서비스를 나열합니다.  

```
aws appmesh list-virtual-services \
    --mesh-name app1
```
출력:  

```
{
    "virtualServices": [
        {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualService/serviceA.svc.cluster.local",
            "meshName": "app1",
            "virtualServiceName": "serviceA.svc.cluster.local"
        },
        {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualService/serviceB.svc.cluster.local",
            "meshName": "app1",
            "virtualServiceName": "serviceB.svc.cluster.local"
        }
    ]
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 서비스](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_services.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListVirtualServices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/list-virtual-services.html)를 참조하세요.

### `tag-resource`
<a name="app-mesh_TagResource_cli_topic"></a>

다음 코드 예시는 `tag-resource`의 사용 방법을 보여줍니다.

**AWS CLI**  
**리소스에 태그를 지정하는 방법**  
다음 `tag-resource` 예제에서는 `value1` 값을 갖는 태그 `key1`을 지정된 리소스에 추가합니다.  

```
aws appmesh tag-resource \
    --resource-arn arn:aws:appmesh:us-east-1:123456789012:mesh/app1 \
    --tags key=key1,value=value1
```
이 명령은 출력을 생성하지 않습니다.  
+  API 세부 정보는 **AWS CLI 명령 참조의 [TagResource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/tag-resource.html)를 참조하세요.

### `untag-resource`
<a name="app-mesh_UntagResource_cli_topic"></a>

다음 코드 예시에서는 `untag-resource` 코드를 사용하는 방법을 보여줍니다.

**AWS CLI**  
**리소스에서 태그를 제거하는 방법**  
다음 `untag-resource` 예제에서는 지정된 리소스에서 `key1` 키가 있는 태그를 제거합니다.  

```
aws appmesh untag-resource \
    --resource-arn arn:aws:appmesh:us-east-1:123456789012:mesh/app1 \
    --tag-keys key1
```
이 명령은 출력을 생성하지 않습니다.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [UntagResource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/untag-resource.html)를 참조하세요.

### `update-mesh`
<a name="app-mesh_UpdateMesh_cli_topic"></a>

다음 코드 예시는 `update-mesh`의 사용 방법을 보여줍니다.

**AWS CLI**  
**서비스 메시를 업데이트하는 방법**  
다음 `update-mesh` 예제에서는 JSON 입력 파일을 사용하여, 모든 외부 송신 트래픽이 Envoy 프록시를 통해 변경 없이 그대로 전달되도록 서비스 메시를 업데이트합니다.  

```
aws appmesh update-mesh \
    --cli-input-json file://update-mesh.json
```
`update-mesh.json`의 콘텐츠:  

```
{
    "meshName": "app1",
    "spec": {
        "egressFilter": {
            "type": "ALLOW_ALL"
        }
    }
}
```
출력:  

```
{
    "mesh": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1",
            "createdAt": 1563809909.282,
            "lastUpdatedAt": 1563812829.687,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 2
        },
        "spec": {
            "egressFilter": {
                "type": "ALLOW_ALL"
            }
        },
        "status": {
            "status": "ACTIVE"
        }
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [서비스 메시](https://docs.aws.amazon.com/app-mesh/latest/userguide/meshes.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [UpdateMesh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/update-mesh.html)를 참조하세요.

### `update-route`
<a name="app-mesh_UpdateRoute_cli_topic"></a>

다음 코드 예시는 `update-route`의 사용 방법을 보여줍니다.

**AWS CLI**  
**경로를 업데이트하는 방법**  
다음 `update-route` 예제에서는 JSON 입력 파일을 사용하여 경로의 가중치를 업데이트합니다.  

```
aws appmesh update-route \
    --cli-input-json file://update-route-weighted.json
```
`update-route-weighted.json`의 콘텐츠:  

```
{
    "meshName": "app1",
    "routeName": "toVnServiceB-weighted",
    "spec": {
        "httpRoute": {
            "action": {
                "weightedTargets": [
                    {
                        "virtualNode": "vnServiceBv1",
                        "weight": 80
                    },
                    {
                        "virtualNode": "vnServiceBv2",
                        "weight": 20
                    }
                ]
            },
            "match": {
                "prefix": "/"
            }
        }
    },
    "virtualRouterName": "vrServiceB"
}
```
출력:  

```
{
    "route": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualRouter/vrServiceB/route/toVnServiceB-weighted",
            "createdAt": 1563811384.015,
            "lastUpdatedAt": 1563819600.022,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 2
        },
        "routeName": "toVnServiceB-weighted",
        "spec": {
            "httpRoute": {
                "action": {
                    "weightedTargets": [
                        {
                            "virtualNode": "vnServiceBv1",
                            "weight": 80
                        },
                        {
                            "virtualNode": "vnServiceBv2",
                            "weight": 20
                        }
                    ]
                },
                "match": {
                    "prefix": "/"
                }
            }
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualRouterName": "vrServiceB"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [라우팅](https://docs.aws.amazon.com/app-mesh/latest/userguide/routes.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [UpdateRoute](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/update-route.html)를 참조하세요.

### `update-virtual-node`
<a name="app-mesh_UpdateVirtualNode_cli_topic"></a>

다음 코드 예시는 `update-virtual-node`의 사용 방법을 보여줍니다.

**AWS CLI**  
**가상 노드를 업데이트하는 방법**  
다음 `update-virtual-node` 예제에서는 JSON 입력 파일을 사용하여 가상 노드에 상태 확인을 추가합니다.  

```
aws appmesh update-virtual-node \
    --cli-input-json file://update-virtual-node.json
```
`update-virtual-node.json`의 콘텐츠:  

```
{
    "clientToken": "500",
    "meshName": "app1",
    "spec": {
        "listeners": [
            {
                "healthCheck": {
                    "healthyThreshold": 5,
                    "intervalMillis": 10000,
                    "path": "/",
                    "port": 80,
                    "protocol": "http",
                    "timeoutMillis": 3000,
                    "unhealthyThreshold": 3
                },
                "portMapping": {
                    "port": 80,
                    "protocol": "http"
                }
            }
        ],
        "serviceDiscovery": {
            "dns": {
                "hostname": "serviceBv1.svc.cluster.local"
            }
        }
    },
    "virtualNodeName": "vnServiceBv1"
}
```
출력:  

```
{
    "virtualNode": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualNode/vnServiceBv1",
            "createdAt": 1563810019.874,
            "lastUpdatedAt": 1563819234.825,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 2
        },
        "spec": {
            "listeners": [
                {
                    "healthCheck": {
                        "healthyThreshold": 5,
                        "intervalMillis": 10000,
                        "path": "/",
                        "port": 80,
                        "protocol": "http",
                        "timeoutMillis": 3000,
                        "unhealthyThreshold": 3
                    },
                    "portMapping": {
                        "port": 80,
                        "protocol": "http"
                    }
                }
            ],
            "serviceDiscovery": {
                "dns": {
                    "hostname": "serviceBv1.svc.cluster.local"
                }
            }
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualNodeName": "vnServiceBv1"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 노드](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [UpdateVirtualNode](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/update-virtual-node.html)를 참조하세요.

### `update-virtual-router`
<a name="app-mesh_UpdateVirtualRouter_cli_topic"></a>

다음 코드 예시는 `update-virtual-router`의 사용 방법을 보여줍니다.

**AWS CLI**  
**가상 라우터를 업데이트하는 방법**  
다음 `update-virtual-router` 예제에서는 JSON 입력 파일을 사용하여 가상 라우터 리스너 포트를 업데이트합니다.  

```
aws appmesh update-virtual-router \
    --cli-input-json file://update-virtual-router.json
```
`update-virtual-router.json`의 콘텐츠:  

```
{
    "meshName": "app1",
    "spec": {
        "listeners": [
            {
                "portMapping": {
                    "port": 8080,
                    "protocol": "http"
                }
            }
        ]
    },
    "virtualRouterName": "vrServiceB"
}
```
출력:  

```
{
    "virtualRouter": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualRouter/vrServiceB",
            "createdAt": 1563810546.59,
            "lastUpdatedAt": 1563819431.352,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 2
        },
        "spec": {
            "listeners": [
                {
                    "portMapping": {
                        "port": 8080,
                        "protocol": "http"
                    }
                }
            ]
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualRouterName": "vrServiceB"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 라우터](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_routers.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [UpdateVirtualRouter](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/update-virtual-router.html)을 참조하세요.

### `update-virtual-service`
<a name="app-mesh_UpdateVirtualService_cli_topic"></a>

다음 코드 예시는 `update-virtual-service`의 사용 방법을 보여줍니다.

**AWS CLI**  
**가상 서비스를 업데이트하는 방법**  
다음 `update-virtual-service` 예제에서는 JSON 입력 파일을 사용하여, 가상 라우터 공급자를 사용하도록 가상 서비스를 업데이트합니다.  

```
aws appmesh update-virtual-service \
    --cli-input-json file://update-virtual-service.json
```
`update-virtual-service.json`의 콘텐츠:  

```
{
    "meshName": "app1",
    "spec": {
        "provider": {
            "virtualRouter": {
                "virtualRouterName": "vrServiceA"
            }
        }
    },
    "virtualServiceName": "serviceA.svc.cluster.local"
}
```
출력:  

```
{
    "virtualService": {
        "meshName": "app1",
        "metadata": {
            "arn": "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualService/serviceA.svc.cluster.local",
            "createdAt": 1563810859.474,
            "lastUpdatedAt": 1563820257.411,
            "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
            "version": 3
        },
        "spec": {
            "provider": {
                "virtualRouter": {
                    "virtualRouterName": "vrServiceA"
                }
            }
        },
        "status": {
            "status": "ACTIVE"
        },
        "virtualServiceName": "serviceA.svc.cluster.local"
    }
}
```
자세한 내용은 *AWS App Mesh 사용 설명서*의 [가상 서비스](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_services.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [UpdateVirtualService](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appmesh/update-virtual-service.html)를 참조하세요.