게이트웨이 경로 - AWS App Mesh

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

게이트웨이 경로

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

게이트웨이 경로 생성

AWS Management Console
AWS Management Console을 사용하여 게이트웨이 경로를 생성하려면
  1. https://console.aws.amazon.com/appmesh/에서 App Mesh 콘솔을 엽니다.

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

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

  4. 새 게이트웨이 경로를 연결할 가상 게이트웨이를 선택합니다. 목록에 항목이 없는 경우 먼저 가상 게이트웨이를 생성해야 합니다. 사용자 계정이 리소스 소유자로 나열된 가상 게이트웨이에 대해서만 게이트웨이 경로를 생성할 수 있습니다.

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

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

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

  8. 기존 가상 서비스 이름을 선택합니다. 목록에 항목이 없는 경우 먼저 가상 서비스를 생성해야 합니다.

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

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

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

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

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

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

      • (선택 사항) 정확한/접미사 호스트 이름 - 수신 요청에서 대상 가상 서비스로 라우팅하기 위해 일치시켜야 하는 호스트 이름을 지정합니다.

      • (선택 사항) 접두사/정확한/정규식 경로 ‐ URL 경로를 일치시키는 방법입니다.

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

          중요
          • 접두사 일치에 대해 /aws-appmesh*/aws-app-mesh* 둘 다 지정할 수 없습니다. 이러한 접두사는 향후 App Mesh 내부 사용을 위해 예약되어 있습니다.

          • 게이트웨이 경로를 여러 개 정의하면 요청은 접두사가 가장 긴 경로와 일치됩니다. 예를 들어 두 개의 게이트웨이 경로가 존재하는데 하나는 접두사가 /chapter이고 다른 하나는 접두사가 /인 경우 www.example.com/chapter/에 대한 요청은 접두사 /chapter인 게이트웨이 경로와 일치합니다.

          참고

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

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

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

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

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

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

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

      • 호스트 이름 일치 유형 및 (선택 사항) 정확한/접미사 일치 - 수신 요청에서 대상 가상 서비스로 라우팅하기 위해 일치시켜야 하는 호스트 이름을 지정합니다.

      • grpc 서비스 이름grpc 서비스는 애플리케이션의 API 역할을 하며 ProtoBuf로 정의됩니다.

        중요

        서비스 이름에는 /aws.app-mesh* 또는 aws.appmesh를 지정할 수 없습니다. 이러한 서비스 이름은 향후 App Mesh 내부 사용을 위해 예약되어 있습니다.

      • (선택 사항) 메타데이터 - grpc의 메타데이터를 지정합니다. 대상 가상 서비스로 라우팅하려면 들어오는 요청과 일치해야 합니다.

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

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

      • 접두사가 선택된 일치 유형인 경우:

        • 호스트 이름 자동 다시 작성 재정의 - 기본적으로 호스트 이름은 대상 가상 서비스의 이름으로 다시 작성됩니다.

        • 접두사 자동 다시 작성 재정의 - 켜져 있는 경우 접두사 다시 작성이 다시 작성된 접두사 값을 지정합니다.

      • 정확한 경로가 선택된 일치 유형인 경우:

        • 호스트 이름 자동 다시 작성 재정의 - 기본적으로 호스트 이름은 대상 가상 서비스의 이름으로 다시 작성됩니다.

        • 경로 다시 작성 - 다시 작성된 경로의 값을 지정합니다. 기본 경로는 없습니다.

      • 접두사 경로가 선택된 일치 유형인 경우:

        • 호스트 이름 자동 다시 작성 재정의 - 기본적으로 호스트 이름은 대상 가상 서비스의 이름으로 다시 작성됩니다.

        • 경로 다시 작성 - 다시 작성된 경로의 값을 지정합니다. 기본 경로는 없습니다.

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

      • 호스트 이름 자동 다시 작성 재정의 - 기본적으로 호스트 이름은 대상 가상 서비스의 이름으로 다시 작성됩니다.

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

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
  2. 예제 create-gateway-route.json의 내용은 다음과 같습니다.

    { "spec": { "httpRoute" : { "match" : { "prefix" : "/" }, "action" : { "target" : { "virtualService": { "virtualServiceName": "serviceA.svc.cluster.local" } } } } } }
  3. 출력 예시:

    { "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 명령을 참조하세요.

게이트웨이 경로 삭제

AWS Management Console
AWS Management Console를 사용하여 게이트웨이 경로를 삭제하려면
  1. https://console.aws.amazon.com/appmesh/에서 App Mesh 콘솔을 엽니다.

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

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

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

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

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

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

    aws appmesh delete-gateway-route \ --mesh-name meshName \ --virtual-gateway-name virtualGatewayName \ --gateway-route-name gatewayRouteName
  2. 출력 예시:

    { "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 명령을 참조하세요.