使用 的應用程式網格範例 AWS CLI - AWS SDK 程式碼範例

文件 AWS SDK AWS 範例 SDK 儲存庫中有更多可用的 GitHub 範例。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 的應用程式網格範例 AWS CLI

下列程式碼範例示範如何搭配 AWS Command Line Interface App Mesh 使用 來執行動作並實作常見案例。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會示範如何呼叫個別服務函數,但您可以在相關案例中查看內容中的動作。

每個範例都包含完整原始程式碼的連結,您可以在其中找到如何在內容中設定和執行程式碼的指示。

主題

動作

下列程式碼範例示範如何使用 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

  • 如需 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 。所有以 HTTP23 開頭的標頭值,定址至任何 URL 字首的 Word/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 應用程式網格使用者指南中的路由

  • 如需 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 應用程式網格使用者指南中的虛擬閘道

下列程式碼範例示範如何使用 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 應用程式網格使用者指南中的虛擬節點

  • 如需 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 應用程式網格使用者指南中的虛擬路由器

下列程式碼範例示範如何使用 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 應用程式網格使用者指南中的虛擬節點

範例 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 應用程式網格使用者指南中的 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

  • 如需 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 應用程式網格使用者指南中的路由

  • 如需 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 應用程式網格使用者指南中的虛擬節點

  • 如需 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 應用程式網格使用者指南中的虛擬路由器

下列程式碼範例示範如何使用 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 應用程式網格使用者指南中的虛擬服務

下列程式碼範例示範如何使用 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

  • 如需 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 應用程式網格使用者指南中的路由

  • 如需 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 應用程式網格使用者指南中的虛擬節點

下列程式碼範例示範如何使用 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 應用程式網格使用者指南中的虛擬路由器

下列程式碼範例示範如何使用 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 應用程式網格使用者指南中的虛擬服務

下列程式碼範例示範如何使用 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

  • 如需 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 應用程式網格使用者指南中的路由

  • 如需 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 應用程式網格使用者指南中的虛擬節點

  • 如需 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 應用程式網格使用者指南中的虛擬路由器

下列程式碼範例示範如何使用 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 應用程式網格使用者指南中的虛擬服務

下列程式碼範例示範如何使用 tag-resource

AWS CLI

標記資源

下列tag-resource範例會將key1具有 值value1的標籤新增至指定的資源。

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

  • 如需 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 應用程式網格使用者指南中的路由

  • 如需 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 應用程式網格使用者指南中的虛擬節點

  • 如需 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 應用程式網格使用者指南中的虛擬路由器

下列程式碼範例示範如何使用 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 應用程式網格使用者指南中的虛擬服務