경로 - AWS 앱 메시

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

경로

중요

지원 종료 알림: 2026년 9월 30일에 에 대한 지원을 중단할 AWS 예정입니다 AWS App Mesh. 2026년 9월 30일 이후에는 AWS App Mesh 콘솔 또는 AWS App Mesh 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은 이 블로그 게시물에서 에서 Amazon ECS Service Connect AWS App Mesh 로 마이그레이션을 참조하세요.

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

경로 생성

AWS Management Console
를 사용하여 라우팅을 생성하려면 AWS Management Console
  1. 에서 App Mesh 콘솔을 엽니다https://console.aws.amazon.com/appmesh/.

  2. 경로를 생성하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 공유된 모든 메시가 나열됩니다.

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

  4. 새로운 라우팅을 연결할 가상 라우터를 선택합니다. 목록에 가상 라우터가 없는 경우 먼저 가상 라우터를 생성해야 합니다.

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

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

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

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

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

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

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

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

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

      • (선택 사항) 메서드 - 들어오는 http/http2 요청에서 일치시킬 메서드 헤더를 지정합니다.

      • (선택 사항) 포트 일치 ‐ 들어오는 트래픽에 맞는 포트를 찾습니다. 이 가상 라우터에 여러 리스너가 있는 경우 포트 일치가 필수입니다.

      • (선택 사항) 접두사/Exact/Regex 경로 - 의 경로와 일치하는 방법URL.

        • 접두사 일치 - 기본적으로 게이트웨이 경로의 일치하는 요청이 대상 가상 서비스 이름에 다시 쓰여지고 일치하는 접두사가 다시 작성됩니다(기본값 /). 가상 서비스를 구성하는 방법에 따라 가상 라우터를 사용하여 특정 접두사 또는 헤더를 기준으로 요청을 다른 가상 노드로 라우팅할 수 있습니다.

          참고

          경로/접두사 기반 일치를 활성화하면 App Mesh는 경로 정규화(normalize_pathmerge_slashes)를 활성화하여 경로 혼동 취약성이 발생할 가능성을 최소화합니다.

          요청에 참여하는 당사자가 서로 다른 경로 표현을 사용하는 경우 경로 혼동 취약성이 발생합니다.

        • 정확한 일치 - 정확한 파라미터는 경로의 부분 일치를 비활성화하고 경로가 현재 URL과 EXACT 일치하는 경우에만 경로를 반환하도록 합니다.

        • 정규식 일치 - 여러 가 웹 사이트의 단일 페이지를 실제로 식별할 URLs 수 있는 패턴을 설명하는 데 사용됩니다.

      • (선택 사항) 쿼리 파라미터 - 이 필드를 사용하면 쿼리 파라미터를 일치시킬 수 있습니다.

      • (선택 사항) 헤더 - http 및 http2에 대한 헤더를 지정합니다. ㅁ대상 가상 서비스로 라우팅하려면 들어오는 요청과 일치해야 합니다.

    • grpc가 선택된 유형인 경우:

      • 서비스 이름 - 요청과 일치시킬 대상 서비스입니다.

      • 메서드 이름 - 요청과 일치시킬 대상 메서드입니다.

      • (선택 사항) 메타데이터 - 메타데이터의 존재 여부에 따라 Match를 지정합니다. 요청을 처리하려면 모두 일치해야 합니다.

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

AWS CLI

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

다음 명령과 입력을 사용하여 gRPC 라우팅을 생성합니다JSON( red 자체 값이 있는 값):

  1. aws appmesh create-route \ --cli-input-json file://create-route-grpc.json
  2. 예제 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" }
  3. 출력 예제:

    { "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" } }

for App Mesh를 사용하여 라우팅을 생성하는 방법에 AWS CLI 대한 자세한 내용은 AWS CLI 참조의 create-route 명령을 참조하세요.

(선택 사항) 일치

  • (선택 사항) 요청과 일치시킬 대상 서비스의 서비스 이름을 입력합니다. 이름을 지정하지 않으면 모든 서비스에 대한 요청이 일치됩니다.

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

(선택 사항) 메타데이터

[메타데이터 추가(Add metadata)]를 선택합니다.

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

  • (선택 사항) 메타데이터 추가를 선택하여 메타데이터 항목을 10개까지 추가합니다.

(선택 사항) 재시도 정책

클라이언트는 재시도 정책을 통해 간헐적 네트워크 장애 또는 간헐적 서버 측 오류로부터 스스로를 보호할 수 있습니다. 재시도 정책은 선택 사항이며, 권장 사항은 아닙니다. 재시도 제한 시간 값은 재시도(초기 시도 포함)당 제한 시간을 정의합니다. 재시도 정책을 정의하지 않으면 App Mesh가 각 경로에 대한 기본 정책을 자동으로 생성할 수 있습니다. 자세한 내용은 기본 경로 재시도 정책 단원을 참조하십시오.

  • 재시도 제한 시간에 제한 시간 동안의 단위 수를 입력합니다. 프로토콜 재시도 이벤트를 선택하는 경우 값이 필요합니다.

  • 재시도 제한 시간 단위에 대해 단위를 선택합니다. 프로토콜 재시도 이벤트를 선택하는 경우 값이 필요합니다.

  • 최대 재시도 수에는 요청 실패 시 최대 재시도 횟수를 입력합니다. 프로토콜 재시도 이벤트를 선택하는 경우 값이 필요합니다. 2개 이상의 값을 권장합니다.

  • 하나 이상의 HTTP 재시도 이벤트 를 선택합니다. 최소한 stream-errorgateway-error를 선택하는 것이 좋습니다.

  • TCP 재시도 이벤트 를 선택합니다.

  • 하나 이상의 gRPC 재시도 이벤트를 선택합니다. 최소한 취소됨사용할 수 없음을 선택하는 것이 좋습니다.

(선택 사항) 제한 시간

  • 기본값은 15초입니다. 재시도 정책을 지정한 경우 여기에서 지정하는 기간은 재시도 정책에 정의된 최대 재시도 횟수를 재시도 기간과 곱한 값보다 크거나 같아야 재시도 정책이 완료될 수 있습니다. 기간을 15초보다 크게 지정하는 경우 모든 가상 노드 대상의 리스너에 대해 지정된 제한 시간도 15초 이상이어야 합니다. 자세한 내용은 가상 노드를 참조하십시오.

  • 0 값은 제한 시간을 비활성화합니다.

  • 경로가 유휴 상태일 수 있는 최대 기간입니다.

(선택 사항) 일치

  • 경로가 일치해야 하는 접두사를 지정합니다. 예를 들어, 가상 서비스 이름이 service-b.local이고 라우팅을 service-b.local/metrics에 대한 요청과 일치시키려면 접두사가 /metrics여야 합니다. /를 지정하면 모든 트래픽이 라우팅됩니다.

  • (선택 사항) 방법을 선택합니다.

  • (선택 사항) 체계를 선택합니다. HTTP2 경로에만 적용됩니다.

(선택 사항) 헤더

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

  • (선택 사항) Add header(추가 헤더)를 선택합니다. 최대 10개의 헤더를 추가할 수 있습니다.

(선택 사항) 재시도 정책

클라이언트는 재시도 정책을 통해 간헐적 네트워크 장애 또는 간헐적 서버 측 오류로부터 스스로를 보호할 수 있습니다. 재시도 정책은 선택 사항이며, 권장 사항은 아닙니다. 재시도 제한 시간 값은 재시도(초기 시도 포함)당 제한 시간을 정의합니다. 재시도 정책을 정의하지 않으면 App Mesh가 각 경로에 대한 기본 정책을 자동으로 생성할 수 있습니다. 자세한 내용은 기본 경로 재시도 정책 단원을 참조하십시오.

  • 재시도 제한 시간에 제한 시간 동안의 단위 수를 입력합니다. 프로토콜 재시도 이벤트를 선택하는 경우 값이 필요합니다.

  • 재시도 제한 시간 단위에 대해 단위를 선택합니다. 프로토콜 재시도 이벤트를 선택하는 경우 값이 필요합니다.

  • 최대 재시도 수에는 요청 실패 시 최대 재시도 횟수를 입력합니다. 프로토콜 재시도 이벤트를 선택하는 경우 값이 필요합니다. 2개 이상의 값을 권장합니다.

  • 하나 이상의 HTTP 재시도 이벤트 를 선택합니다. 최소한 stream-errorgateway-error를 선택하는 것이 좋습니다.

  • TCP 재시도 이벤트 를 선택합니다.

(선택 사항) 제한 시간

  • 요청 제한 시간 – 기본값은 15초입니다. 재시도 정책을 지정한 경우 여기에서 지정하는 기간은 재시도 정책에 정의된 최대 재시도 횟수를 재시도 기간과 곱한 값보다 크거나 같아야 재시도 정책이 완료될 수 있습니다.

  • 유휴 기간 - 기본값은 300초입니다.

  • 0 값은 제한 시간을 비활성화합니다.

참고

제한 시간을 기본값보다 크게 지정하는 경우 모든 가상 노드 참여자의 리스너에 지정된 제한 시간도 기본값보다 커야 합니다. 그러나 제한 시간을 기본값보다 낮은 값으로 줄이는 경우 가상 노드에서 제한 시간을 업데이트할 수도 있습니다. 자세한 내용은 가상 노드를 참조하십시오.

(선택 사항) 제한 시간

  • 유휴 기간 - 기본값은 300초입니다.

  • 0 값은 제한 시간을 비활성화합니다.

경로 삭제

AWS Management Console
를 사용하여 라우팅을 삭제하려면 AWS Management Console
  1. 에서 App Mesh 콘솔을 엽니다https://console.aws.amazon.com/appmesh/.

  2. 경로를 삭제하려는 메시를 선택합니다. 소유하고 있는 모든 메시와 공유된 모든 메시가 나열됩니다.

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

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

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

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

AWS CLI
를 사용하여 라우팅을 삭제하려면 AWS CLI
  1. 다음 명령을 사용하여 라우팅을 삭제합니다( red 자체 값이 있는 값):

    aws appmesh delete-route \ --mesh-name meshName \ --virtual-router-name routerName \ --route-name routeName
  2. 출력 예제:

    { "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" } }

for App Mesh를 사용하여 라우팅을 삭제하는 방법에 AWS CLI 대한 자세한 내용은 AWS CLI 참조의 delete-route 명령을 참조하세요.