를 사용한 App Mesh 예제 AWS CLI - AWS SDK 코드 예제

AWS Doc SDK ExamplesWord AWS SDK 리포지토리에는 더 많은 GitHub 예제가 있습니다.

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

를 사용한 App Mesh 예제 AWS CLI

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

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

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

주제

작업

다음 코드 예시에서는 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 사용 설명서의 Service Meshes를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조CreateMesh를 참조하세요.

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

AWS CLI

새 gRPC 경로를 생성하려면

다음 create-route 예제에서는 JSON 입력 파일을 사용하여 gRPC 경로를 생성합니다. 메타데이터가 123으로 시작하는 GRPC 트래픽은 serviceBgrpc라는 가상 노드로 라우팅됩니다. 라우팅의 대상과 통신을 시도할 때 특정 gRPC, HTTP 또는 TCP 실패가 있는 경우 라우팅이 세 번 재시도됩니다. 각 재시도 사이에는 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으로 시작하는 Word 접두사로 지정된 모든 URLHTTP/2 트래픽은 serviceBhttp2라는 가상 노드로 라우팅됩니다. 라우팅의 대상과 통신을 시도할 때 특정 HTTP 또는 TCP 오류가 발생하는 경우 라우팅이 세 번 재시도됩니다. 각 재시도 사이에는 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 사용 설명서라우팅을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조CreateRoute를 참조하세요.

다음 코드 예시에서는 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 사용 설명서Virtual Gateways를 참조하세요.

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

AWS CLI

예제 1: Word DNS for discovery를 사용하는 새 가상 노드 생성

다음 create-virtual-node 예제에서는 JSON 입력 파일을 사용하여 DNS for service 검색을 사용하는 가상 노드를 생성합니다.

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 사용 설명서가상 노드를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조CreateVirtualNode를 참조하세요.

다음 코드 예시에서는 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 사용 설명서가상 라우터를 참조하세요.

다음 코드 예시에서는 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 사용 설명서가상 노드를 참조하세요.

예제 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 사용 설명서의 Virtual Services<https://docs.aws.amazon.com/app-mesh/latest/userguide/virtualWord_services.html>을 참조하세요.

다음 코드 예시에서는 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 사용 설명서의 Service Meshes를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조DeleteMesh를 참조하세요.

다음 코드 예시에서는 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 사용 설명서라우팅을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조DeleteRoute를 참조하세요.

다음 코드 예시에서는 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 사용 설명서가상 노드를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조DeleteVirtualNode를 참조하세요.

다음 코드 예시에서는 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 사용 설명서가상 라우터를 참조하세요.

다음 코드 예시에서는 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 사용 설명서Virtual Service를 참조하세요.

다음 코드 예시에서는 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 사용 설명서의 Service Meshes를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조DescribeMesh를 참조하세요.

다음 코드 예시에서는 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 사용 설명서라우팅을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조DescribeRoute를 참조하세요.

다음 코드 예시에서는 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 사용 설명서가상 노드를 참조하세요.

다음 코드 예시에서는 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 사용 설명서가상 라우터를 참조하세요.

다음 코드 예시에서는 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 사용 설명서가상 서비스를 참조하세요.

다음 코드 예시에서는 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 사용 설명서의 Service Meshes를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ListMeshes를 참조하세요.

다음 코드 예시에서는 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 사용 설명서라우팅을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ListRoutes를 참조하세요.

다음 코드 예시에서는 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" } ] }

다음 코드 예시에서는 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 사용 설명서가상 노드를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ListVirtualNodes를 참조하세요.

다음 코드 예시에서는 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 사용 설명서가상 라우터를 참조하세요.

다음 코드 예시에서는 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 사용 설명서가상 서비스를 참조하세요.

다음 코드 예시에서는 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를 참조하세요.

다음 코드 예시에서는 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를 참조하세요.

다음 코드 예시에서는 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 사용 설명서의 Service Meshes를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조UpdateMesh를 참조하세요.

다음 코드 예시에서는 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 사용 설명서라우팅을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조UpdateRoute를 참조하세요.

다음 코드 예시에서는 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 사용 설명서가상 노드를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조UpdateVirtualNode를 참조하세요.

다음 코드 예시에서는 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 사용 설명서가상 라우터를 참조하세요.

다음 코드 예시에서는 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 사용 설명서가상 서비스를 참조하세요.